实际上这些有完整 BIOS 的 x86 成品 NAS 都是完整的个人电脑,安装 x86 操作系统从原理到实践上都没有任何区别。写这个帖子主要是记录操作过程而不是作为教程。但如果看完帖子能给其他人启发那就更好了。
(不太确定发这个区是否合适,如果不对的话我会重新投稿的)
〇、起因
华芸 AS6602 是一台搭载了 J4125 处理器的双 2.5 盘位 + 双 M.2 盘位 + 双 2.5G 接口的品牌 NAS。具体的拆解过程与介绍可以看 KoolShare 论坛的文章:ASUS 华硕 AS6602T 双盘位双2.5G NAS 开箱拆解评测。
我挺喜欢这台机的工业设计风格的。加上硬件规格还说得过去,所以这台机我一直留着没有出二手。而软件上,这台机使用了华芸自己研制的 Asustor Data Manager(ADM)操作系统。这个系统吧只能说中规中矩,算不上好用,也说不上缺陷。有兴趣的朋友可以到 ADM - 在线体验 这个网页体验华芸提供的在线 demo。
因为是正常的 x86 机型,所以一定可以装上其他操作系统。出于好玩就装个别的系统看看。
一、准备工作
安装操作系统的第一步需要准备安装界质。本文以飞牛OS为例(我只是想选一个 Web 后台好看一点的 Debian)。在飞牛 OS 的官方网站获获取 ISO 镜像,然后通过 rufus(或者任何用起来顺手的写盘软件)将镜像写入到大小足够 U 盘里。

写好盘之后将安装盘插入到设备的 USB 口里,同时将 HDMI 接口连接到显示器,为了方便操作还可以再连接一把键盘和以太网。设备内部还需要准备一块硬盘用来安装操作系统。这里我直接往 3.5 盘位上塞了一块中古 HDD 作为本次折腾的系统盘。
一〇、安装过程
2.1 修改 BIOS 启动项
设备内部有一块 8G EMMC,上面有保存原厂系统的引导。为了安装和运行我们想要的操作系统,需要对启动项进行修改。
连接好以上操作之后,通电打开设备。根据屏幕上给出的提示,按 ESC 键进入启动选项

进入启动选项之后,再选择 Setup Utility 进入 BIOS 选单

BIOS 的界面如下图所示

通过方向键切换光标,打开 Boot 菜单下的 Boot Type Order 选项

在这个选单下,通过 - 减号键可以将光标选择的启动项下调优先级。我将 eMMC 的优先级下调到最低,同时将 USB 启动项调到最高。这样当安装 U 盘插入的时候从 U 盘启动,没有插入安装 U 盘的时候将会从硬盘位上安装有系统的硬盘启动。如果以后想恢复原厂系统,只需要把 eMMC 启动项改回来。
完成启动项修改后,我的启动项列表 be like:

最后,按 F10 保存修改并退出 BIOS。

保存退出 BIOS 后,设备会自动重新启动。
2.2 系统安装
于是我们的系统理所当然地从 U 盘进入了飞牛 OS 的安装过程

什么都不用动会自动进入图形安装界面,在这里我选择把系统安装在我古早的 500G HDD 上

根据我自己的需要,我禁用了 swap。

等待系统安装完成,

数分钟后,系统安装好了

我没有调整网卡的设置,直接下一步

再次确定,系统会重启,这时候可以拔 U 盘了。
2.3 系统初始化
顺理成章地,系统启动了刚刚安装好的飞牛OS。

完成启动之后,根据屏幕上的 URL 进入 Web 界面对系统进行初始化

进入浏览器打开对应的页面

简单填一下

至此系统安装就算完成了

2.4 简单初始化一个存储空间
顺着安装工具的提示,我选择创建存储空间

在这里能看到 3 个存储空间,其中第一个硬盘是系统内置的 eMMC,上面放着原系统,第二个硬盘是我放在 m.2 盘位上的傲腾。这两块硬盘都存着我原厂系统里的一些数据。所以我暂时不想动它们。我直接选择第三个硬盘创建存储空间
单盘没什么可选的直接 Basic 完事了。
我随便测试了一下存储空间的上传和下载,使用起来都挺正常的,就不一一放图了
一一、后续工作
尽管飞牛OS的安装到这一步就已经结束了,但对于这款设备仍有一些值得一做的后续工作。
3.1 备份原厂系统
刚刚初始化硬盘的时候注意到在安装阶段看不到的 eMMC 在系统安装完成之后是可以被正常访问的。上面存放着原厂系统的引导。尽管不主动去操作 eMMC 那么在它上面的数据发生不了什么事情,但难免会有意外情况的发生。如果 eMMC 上的原厂系统被删掉了,倒是可以联系华芸的支持服务,可以要到恢复用的镜像。但这样的操作始终比较麻烦。为了更周全的考虑,还是给原厂系统备份一下比较好。
在设置里打开 SSH 开关

使用任何用得顺手的 SSH 客户端连接到设备

在 2.4 里我创建了一个存储空间,我直接 cd 到存储空间的目录再操作
SillPlain@as6602-fnos:/$ cd /vol1/1000/
SillPlain@as6602-fnos:/vol1/1000$
随后执行 sudo dd if=/dev/mmcblk0 | gzip > disk.img.gz
,我个人习惯再加上 status=progress
看执行进度
SillPlain@as6602-fnos:/vol1/1000$ sudo dd if=/dev/mmcblk0 | gzip > disk.img.gz
7755629056 bytes (7.8 GB, 7.2 GiB) copied, 94 s, 82.5 MB/s
15269888+0 records in
15269888+0 records out
7818182656 bytes (7.8 GB, 7.3 GiB) copied, 94.5773 s, 82.7 MB/s
SillPlain@as6602-fnos:/vol1/1000$
很快就执行好了,这时候去 Web 界面看存储空间里有刚刚 dump 下来的镜像文件

保存好这个文件,万一哪天需要恢复 eMMC 上的系统就需要把它再写回到 eMMC 上。
3.2 恢复风扇转速控制与控制前面板指示灯
华芸采用了定制的 SuperIO 芯片,这导致 ADM 以外的系统都无法读取与控制风扇转速,也不能控制前面板上的几个 LED 灯。我的前面板上绿灯在不断闪烁,这很烦人。同时作为一个指示灯爱好者我也希望可以恢复前面板灯指示系统状态的功能。
好在 GitHub 上有开源项目 asustor-platform-driver 实现了这块芯片(以及好几款华芸设备)的驱动,在此感谢各位开源作者的贡献。
首先我们把项目拉到设备上,并打开拉下来的源码目录
SillPlain@as6602-fnos:/vol1/1000$ git clone https://github.com/mafredri/asustor-platform-driver.git
Cloning into 'asustor-platform-driver'...
remote: Enumerating objects: 190, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 190 (delta 27), reused 18 (delta 18), pack-reused 154 (from 2)
Receiving objects: 100% (190/190), 123.12 KiB | 1.09 MiB/s, done.
Resolving deltas: 100% (113/113), done.
SillPlain@as6602-fnos:/vol1/1000$ cd asustor-platform-driver/
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
阅读文档,直接运行 make 命令,报告了这样一个错误
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ make
make[1]: *** /lib/modules/6.6.38-trim/build: No such file or directory. Stop.
make: *** [Makefile:24: modules] Error 2
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
一看 6.6.38-trim 这是什么内核,没见过。 /lib/modules/6.6.38-trim/build
没有指向正确的 kernel source。于是在 /lib/modules/6.6.38-trim
目录下拉个软连接
SillPlain@as6602-fnos:/lib/modules/6.6.38-trim$ sudo ln -s /usr/src/linux-headers-6.6.38-trim/ build
SillPlain@as6602-fnos:/lib/modules/6.6.38-trim$
回到 /vol1/1000/asustor-platform-driver
再 make
就没有这个问题了。但是报了新问题
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ make
make[1]: Entering directory '/usr/src/linux-headers-6.6.38-trim'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: gcc (Debian 12.2.0-14) 12.2.0
You are using:
CC [M] /vol1/1000/asustor-platform-driver/asustor.o
/bin/sh: 1: gcc: not found
make[3]: *** [scripts/Makefile.build:243: /vol1/1000/asustor-platform-driver/asustor.o] Error 127
make[2]: *** [/usr/src/linux-headers-6.6.38-trim/Makefile:1921: /vol1/1000/asustor-platform-driver] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.6.38-trim'
make: *** [Makefile:24: modules] Error 2
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
这也好办,就是缺软件包了。因为这个系统基于 Debian 所以可以轻松地用 apt 安装一个
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ sudo apt update
(中略)
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ sudo apt install gcc
安装好之后再次 make
, 没有报错
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ make
make[1]: Entering directory '/usr/src/linux-headers-6.6.38-trim'
CC [M] /vol1/1000/asustor-platform-driver/asustor.o
CC [M] /vol1/1000/asustor-platform-driver/asustor_it87.o
CC [M] /vol1/1000/asustor-platform-driver/asustor_gpio_it87.o
MODPOST /vol1/1000/asustor-platform-driver/Module.symvers
CC [M] /vol1/1000/asustor-platform-driver/asustor.mod.o
LD [M] /vol1/1000/asustor-platform-driver/asustor.ko
CC [M] /vol1/1000/asustor-platform-driver/asustor_it87.mod.o
LD [M] /vol1/1000/asustor-platform-driver/asustor_it87.ko
CC [M] /vol1/1000/asustor-platform-driver/asustor_gpio_it87.mod.o
LD [M] /vol1/1000/asustor-platform-driver/asustor_gpio_it87.ko
make[1]: Leaving directory '/usr/src/linux-headers-6.6.38-trim'
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
最后再执行 sudo make install
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ sudo make install
/usr/bin/install -m 644 -D asustor.ko /lib/modules/6.6.38-trim/kernel/drivers/platform/x86/asustor.ko; /usr/bin/install -m 644 -D asustor_it87.ko /lib/modules/6.6.38-trim/kernel/drivers/hwmon/asustor_it87.ko; /usr/bin/install -m 644 -D asustor_gpio_it87.ko /lib/modules/6.6.38-trim/kernel/drivers/gpio/asustor_gpio_it87.ko;
depmod -a -F /boot/System.map-6.6.38-trim 6.6.38-trim
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
没有消息就是最好的消息,到这里 SuperIO 驱动也安装完了。
重启一下让新安装好的模块生效。
先执行一下 sensors
查看更新之前的传感器状态
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 2: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 3: +48.0°C (high = +105.0°C, crit = +105.0°C)
acpitz-acpi-0
Adapter: ACPI interface
temp1: +46.0°C
nvme-pci-0800
Adapter: PCI adapter
Composite: +41.9°C
SillPlain@as6602-fnos:/vol1/1000/asustor-platform-driver$
然后执行 sensors-detect
更新传感器状态。一路默认就好
再执行 sensors
,这下风扇传感器就被读出来了。
SillPlain@as6602-fnos:/$ sensors
it8625-isa-0290
Adapter: ISA adapter
in0: 1.40 V (min = +0.81 V, max = +0.60 V) ALARM
in1: 1.40 V (min = +2.49 V, max = +1.68 V) ALARM
in2: 2.06 V (min = +1.61 V, max = +2.32 V)
in3: 2.04 V (min = +1.19 V, max = +1.71 V) ALARM
in4: 1.95 V (min = +1.57 V, max = +0.96 V) ALARM
in5: 1.87 V (min = +2.56 V, max = +1.45 V) ALARM
in6: 1.79 V (min = +1.72 V, max = +0.34 V) ALARM
3VSB: 3.30 V (min = +3.15 V, max = +2.27 V) ALARM
Vbat: 3.08 V
+3.3V: 3.30 V
fan1: 1243 RPM (min = 26 RPM)
fan2: 0 RPM (min = 10 RPM) ALARM
fan3: 0 RPM (min = 13 RPM) ALARM
temp1: -128.0°C (low = +29.0°C, high = -102.0°C)
temp2: -128.0°C (low = +21.0°C, high = +102.0°C) sensor = thermal diode
temp3: -128.0°C (low = -14.0°C, high = +33.0°C)
intrusion0: ALARM
acpitz-acpi-0
Adapter: ACPI interface
temp1: +51.0°C
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +54.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +54.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +54.0°C (high = +105.0°C, crit = +105.0°C)
Core 2: +54.0°C (high = +105.0°C, crit = +105.0°C)
Core 3: +54.0°C (high = +105.0°C, crit = +105.0°C)
nvme-pci-0800
Adapter: PCI adapter
Composite: +42.9°C
SillPlain@as6602-fnos:/$
如果有需要,可以再通过 fancontrol
或者其他类似的工具执行风扇策略。
前面板 LED 灯也是同样的,根据文档执行
SillPlain@as6602-fnos:/$ echo 0 | sudo tee /sys/devices/platform/asustor_it87.*/hwmon/hwmon*/gpled1_blink
绿色 LED 灯的闪烁也停止了。
文档还给出了其他控制 LED 灯的例子,行为上有些细微的出入,但绝大部分都是能用的。
于是风扇转速控制与前面板指示灯两个问题也跟着解决了。
From cyberbus with hack
https://cyberbus.net/post/449
好文👍