ALEXON NAS を QNAP 化する (QNAP のファームウェアを手動書き換え)

ALEXON のNAS CS-5000NEO は QNAP NAS TS-653 Pro のOEM品なのだそうだけれども、QNAP  アプリがインストールできなかったりするので ファームウェアを書き換えて QNAP化します。

元々の状態では、 Qfinder での表示は 機種名が NAS-653-G Pro、 ファームウェアバージョンは4.1.1 でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7aa173d4-894f-4337-bd23-b03875ba9466.png)

# 環境

- PC  Linux (Ubuntu 22.04 LTS)  から ssh で操作
- NAS ALEXON CS-5000NEO firmware 4.1.1
- ファームウェア 5.1.0.2466 


# ファームウェアの書き換え方法

Webインターフェースでは、書き換えられないので ssh でログインして手動で書き換えます。

## ダウンロード

TS-653 Pro のファームウェアを検索、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/b0f8b489-5329-4c5a-9c56-da77e54879e8.png)

5.1.0.2466 をダウンロード、解凍しておきます。


## サーバにログイン

Ubuntu 22.04 LTS からだとそのままだと ssh でつながらないため以下のようにして接続。

``` 
$ ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=ssh-dss,ssh-rsa TS-X53_20230721-5.1.0.2466.img admin@192.168.2.202
```
接続したら、以下のコマンドを実行します。

```
# ln -sf /mnt/HDA_ROOT/update /mnt/update
```



## アップロード

別のターミナルで、scp でファームウェアを転送しておきます。scp を使わずに、 Webインターフェースから FileStation を使ってアップロードしてもいいみたいです。
``` 
$ scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=ssh-dss,ssh-rsa  admin@192.168.2.202:/share/Public
```

ssh 上で転送したファイルを確認します。

```
[~] # ls /share/Public
/share/Public@
[~] # ls /share/Public/
@Recycle/                       TS-X53_20230721-5.1.0.2466.img
[/mnt/update] # ls /share/Public/ -alh
drwxrwxrwx    3 admin    administ      4.0k Aug  8 13:15 ./
drwxrwxrwx   15 admin    administ      4.0k Aug  8 12:35 ../
drwxrwxrwx    2 admin    administ      4.0k Aug  8 12:10 @Recycle/
-rw-r--r--    1 admin    administ    202.9M Aug  8 13:15 TS-X53_20230721-5.1.0.2466.img
```
# アップデート

```
[/mnt/update] # /etc/init.d/update.sh /share/Public/TS-X53_20230721-5.1.0.2466.img        
```
実行中の表示
```
cksum=3716279404
Check RAM space available for FW update: OK.
Using 120-bit encryption - (QNAPNASVERSION4)
len=1048576
model name = TS-X53
version = 5.1.0
106flash
IS_64BITS
IS_STORAGE_V2
asm1061.ROM
asm1061_ver
boot/
bzImage
bzImage.cksum
bzImage.sig
bzImage.sign
config/
fw_info
fw_info.conf
gl352x_fw.bin
gl352x_fw.eep
gl352x_update.sh
gl352x_util
initrd.boot
initrd.boot.cksum
initrd.boot.sig
initrd.boot.sign
libcrypto.so.1.1
libssl.so.1.1
qpkg.tar
qpkg.tar.cksum
qpkg.tar.sign
rootfs2.bz
rootfs2.bz.cksum
rootfs2.bz.sign
rootfs_ext.tgz
rootfs_ext.tgz.cksum
rootfs_ext.tgz.sign
update/
update_asm1061.conf
update_asm1061.sh
update_img.sh
5.1.0 20230721 
MODEL NAME = TS-X53-G,new version = 5.1.0
limit version = 3.9.0
Allow upgrade
Allow upgrade
/mnt/HDA_ROOT/update
1+0 records in
1+0 records out
tune2fs 1.41.4 (27-Jan-2009)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
/mnt/update/gl352x_util: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /mnt/update/gl352x_util)
/mnt/update/gl352x_util: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /mnt/update/gl352x_util)
Update image using HDD ...
bzImage cksum ... Pass
initrd.boot cksum ... Pass
rootfs2.bz cksum ... Pass
rootfs_ext.tgz cksum ... Pass
rootfs_ext.tgz cksum ... Pass
qpkg.tar cksum ... Pass
Update RFS1...
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=QTS_BOOT_PART2
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
60240 inodes, 240768 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
30 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Checking bzImage ... ok
Checking initrd.boot ... ok
Checking rootfs2.bz ... ok
Checking rootfs_ext.tgz ... ok
Update RFS2...
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=QTS_BOOT_PART3
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
60240 inodes, 240768 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
30 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
1+0 records in
1+0 records out
Update Finished.
Make a Backup
set cksum [3716279404]
[/mnt/update] # 
```
アップデートが終わったらビープが3回鳴ります。

再起動


```
[/mnt/update] # reboot
[/mnt/update] # 
```

# アップデートの確認

しばらく起動を待って、WebUI にアクセスしてアップデートを確認します。
ファームウェアアップデートしたのでポートが 8080 になりました。
パスワードポリシーなども変更になるので適宜作業を終えて、新しいQTSに無事アクセスできました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7df6a6eb-cae5-6074-f160-f37580d6c4ad.png)