物理黑群晖 DSM 7.0 安装 / 升级指南

准备工作

  • 一块容量 2GB 以上的 U 盘,这个 U 盘将刷写 TCRP 并作为黑群晖的引导盘使用,需要一直插在黑群晖上。下文用 "引导 U 盘" 代指该 U 盘
  • 将要安装黑群晖的主机,并在 BIOS 进行以下设置
    • 如果 CPU 是 AMD 的,开启 C1E 选项
    • 硬盘模式设为 AHCI
    • 开启所有硬盘端口的热插拔功能
    • 如果不使用,禁用 M.2 SATA 接口
  • 良好的国际互联网连接条件

Step 1 刷写 TinyCore RedPill Loader

TinyCore RedPill Loader,详细介绍参见 RedPill Tinycore loader - Developer Discussion Room - XPEnology Community
以下简称 TCRP。

GitHub - pocopico/tinycore-redpill 下载 TCRP 镜像。
镜像的选择:

  • tinycore-redpill.vX.X.X.img.gz : for BIOS/CSM/Legacy boot from USB flash drive
  • tinycore-redpill-uefi.vX.X.X.img.gz : for UEFI/EFI boot from USB flash drive
  • tinycore-redpill.vX.X.X.vmdk.gz : for virtual machine SATABOOT from disk image
    使用 Rufus 或其他类似的刷写镜像的软件工具,将下载好的 TCRP 镜像刷写到准备好的引导 U 盘中。

Step 2 进入 TCRP & 进行预配置

将引导 U 盘接入要安装黑群晖的机器上。
插入所有你打算在黑群晖中使用的硬盘,接好网线

对于迁移:
请将先前在旧版黑裙上使用的所有硬盘移除
先使用一块干净的其他 HDD/SSD 进行测试安装

启动机器,引导进入 TCRP,然后设法进入命令行。

  • 你可以连接显示器,并使用鼠标键盘直接操作 GUI。此时点击系统界面右下角的 Terminal 图标即可
  • 你也可以使用机器的局域网 IP,通过 SSH 客户端连接

登录信息:

  • username: tc
  • password: P@ssw0rd

进入命令行后,首先更新相关脚本文件:

1
2
./rploader.sh update
./rploader.sh fullupgrade

随后,根据自己需要,确定要安装的黑群晖平台及其对应 DSM 版本号。

参考 DSM 7.x Loaders and Platforms - Tutorials and Guides - XPEnology Community

脚本可输出当前版本 TCRP 支持生成的平台与其对应的 DSM 版本号

1
./rploader.sh

本文将以平台 apollolake-7.1.0-42661 为例。

Step 3 根据设备信息自定义 Loader 生成参数

TCRP 生成 Loader 的参数储存在 user_config.json 中,你可以通过自行编辑该文件来手动自定义参数。
你也可以使用 TCRP 的脚本帮助确定对应自己设备的自定义参数。
以平台 DS918+ 为例,以下是使用 TCRP 定义生成参数的示例:

设置引导 U 盘的 VID/PID

1
./rploader.sh identifyusb

设置 SN 与 MAC 地址

SN 将会随机生成。如需特别指定,请手动修改 user_config.json
对于 MAC 地址,如需随机生成:

1
./rploader.sh serialgen DS918+

如果希望使用设备主板网口的真实 MAC 地址:

1
./rploader.sh serialgen DS918+ realmac

建议使用主板真实 MAC 地址,以便设置 WOL 唤醒

设置硬盘插槽映射(Drive Slot Mapping)

为确保硬盘能够被 DSM 正确读取,需要配置参数以将设备硬件的硬盘控制器正确映射到 DSM 的插槽中。
根据不同的平台,硬盘插槽映射有 SataPortMap/DiskIdxMapDevice Tree 两种,请参考 DSM 7.x Loaders and Platforms - Tutorials and Guides - XPEnology Community , 根据自己选择的平台来确定你所需要使用的硬盘插槽映射模式。

对于使用 SataPortMap/DiskIdxMap 的平台,你需要在生成 Loader 前配置映射参数。
首先,先尝试使用 TCRP 自动配置映射参数:

1
./rploader.sh satamap

此时,脚本会自动寻找设备上的硬盘控制器,同时依次输出每个控制器下的硬盘接口数与已连接硬盘数,并要求你检查自动检测到的每个硬盘控制器的硬盘接口数是否正确:

  • 如不正确,输入数字指定该硬盘控制器的硬盘接口数。
  • 如果正确,回车接受该硬盘控制器的自动检测结果。
    分别检查完成后,TCRP 脚本将会输出配置参数,检查无误后即可保存到文件。
    如果自动生成的映射参数存在问题,可以在保存自动生成参数后编辑 user_config.json ,进行调整。

手动配置 / 调整映射参数,请参考以下文章:

示例:

示例设备信息:
华擎 J3455-ITX

  • 主板板载的 4 个 SATA3 接口,其中:
    • 2 * SATA (板载 1-2) from CPU 原生硬盘控制器
    • 2 * SATA (板载 3-4) from 板载 ASMedia ASM1061
  • m.2 wifi 上接入的 2 口 SATA 扩展卡
    • 2 * SATA (扩展 1-2) from JMS583

需求:
主板的 4 个 SATA 口依次对应 DSM 的硬盘槽 1-4,扩展卡的 2 个 SATA 口对应 DSM 的硬盘槽 5-6

  • DSM 硬盘槽 1-2 -> 2 * SATA (板载 01-02) from CPU 原生硬盘控制器
  • DSM 硬盘槽 3-4 -> 2 * SATA (板载 03-04) from 板载 ASMedia ASM1061
  • DSM 硬盘槽 5-6 -> 2 * SATA (扩展 01-02) from 扩展卡 JMS583

首先,使用 TCRP 的脚本自动检测并生成映射参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 识别到的第1个控制器为板载的CPU原生硬盘控制器,实际共2个SATA端口
# TCRP 检测到该硬盘控制器有2个端口,自动识别正确
Found "00:12.0 Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller (rev 0b)"
Detected 2 ports/1 drives. Override # of ports or ENTER to accept <2> 2

# 识别到的第2个控制器为m.2 wifi接口上接入的2口SATA扩展卡,实际共2个SATA端口
# TCRP检测到该控制器存在5个端口,并提示第3-5端口为"bad port"
# 结合实际情况,手动指定该硬盘控制器的端口数为2
Found "02:00.0 JMicron Technology Corp. Device 0585"
Detected 5 ports/1 drives. Bad ports: 3 4 5. Override # of ports or ENTER to accept <5> 2

# 识别到的第3个控制器为板载的 ASMedia ASM1061,实际共2个SATA端口
# TCRP 检测到该硬盘控制器有2个端口,自动识别正确
Found "03:00.0 ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)"
Detected 2 ports/0 drives. Override # of ports or ENTER to accept <2> 2

Computed settings:
SataPortMap=222
DiskIdxMap=000204

Should i update the user_config.json with these values ? [Yy/Nn] y
Done.

可以看到,脚本自动生成的映射参数为:

1
2
SataPortMap=222
DiskIdxMap=000204

由于 TCRP 脚本把 SATA 扩展卡的控制器识别为了第二个控制器,而把提供板载 3-4 号 SATA 口的 ASMedia ASM1061 识别为了第三个控制器,根据自动生成的参数,群晖上实际识别的结果是:

  • DSM 硬盘槽 1-2 -> 2 * SATA (板载 1-2) from CPU 原生硬盘控制器
  • DSM 硬盘槽 3-4 -> 2 * SATA (扩展 1-2) from 扩展卡 JMS583
  • DSM 硬盘槽 5-6 -> 2 * SATA (板载 3-4) from 板载 ASMedia ASM1061

与前面提到的需求不符,因此需要手动编辑映射参数,
修改 user_config.json 中的硬盘端口映射参数为:

1
2
SataPortMap=222
DiskIdxMap=000402

修改后,后两个硬盘控制器端口的映射关系相互交换,此时映射关系如下。

  • DSM 硬盘槽 1-2 -> 2 * SATA (板载 01-02) from CPU 原生硬盘控制器
  • DSM 硬盘槽 3-4 -> 2 * SATA (板载 03-04) from 板载 ASMedia ASM1061
  • DSM 硬盘槽 5-6 -> 2 * SATA (扩展 01-02) from 扩展卡 JMS583

对于使用 Device Tree 的平台,上述命令可跳过,硬盘映射在生成 Loader 时会自动配置。

检查 Loader 生成配置文件

检查 TCRP 自动生成的 Loader 生成配置文件
对于命令行:

1
vi user_config.json

也可以使用 TCRP 系统 GUI 提供的图形编辑器:

Step 4 添加自定义驱动扩展(可选)

你可以添加自定义的驱动扩展,以便使用不能在群晖下免驱的设备 / 群晖没有提供的功能驱动 / 修复特定设备的兼容性问题。

显示指定的平台和 DSM 版本号可用的扩展

1
./rploader.sh listmods <architecture>-<version>-<DSMreleasenumber>

示例:

1
./rploader.sh listmods apollolake-7.1.0-42661

添加特定扩展:

1
./rploader.sh ext <architecture>-<version>-<DSMreleasenumber> <extensionurl>

示例 & 常用扩展
添加 acpid 以修复机箱关机按钮失效的问题:

1
./rploader.sh ext apollolake-7.1.0-42661 add https://raw.githubusercontent.com/pocopico/rp-ext/master/redpill-acpid/rpext-index.json

如果后续生成固件时,提示该扩展无法在所选平台构建,请尝试使用下面的链接添加 acpid 扩展

1
./rploader.sh ext apollolake-7.1.0-42661 add https://raw.githubusercontent.com/pocopico/redpill-load/develop/redpill-acpid/rpext-index.json

添加 Virtio 支持:

1
./rploader.sh ext apollolake-7.1.0-42661 add https://raw.githubusercontent.com/pocopico/rp-ext/master/v9fs/rpext-index.json

添加对 RTL8125 2.5G 网卡的支持

1
./rploader.sh ext apollolake-7.1.0-42661 add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8125/rpext-index.json

Step 5 生成 Loader

请确保全程拥有良好的全球网络连接条件

检查确认配置的生成参数无误后,运行脚本生成 Loader

1
./rploader.sh build <architecture>-<version>-<DSMreleasenumber>

示例:

1
./rploader.sh build apollolake-7.1.0-42661

此时,TCRP 会根据配置好的生成参数,自动从网上下载生成 Loader 所需的文件,并完成 Loader 生成工作。Loader 生成完成后,会自动刷入引导 U 盘,并加入到引导 U 盘的引导菜单中,并将 Loader 作为默认引导项。

如果中途生成失败,希望清理先前构建时产生的缓存,执行:

1
./rploader.sh clean

Step 6 备份(可选)

备份在 TCRP 中的已配置的参数与设置,下次进入 TCRP 会自动加载

1
./rploader.sh backup

备份前一次生成好的 Loader 为文件

1
./rploader.sh backuploader

Step 7 重启并安装 DSM

重启设备

1
exitcheck.sh reboot

重启后,引导 U 盘进入 grub,系统会默认引导到先前生成并刷写好的 Loader 中。
如有必要,你也可以手动选择。

进入后,等待几分钟,然后使用 https://find.synology.com 或者 Synology Assistant 查找黑群晖设备。
如果一切正常,你将能看到一台状态为 "DSM 未安装" 或 "可迁移" 的群晖设备。

浏览器打开显示的 ip 地址,并在页面中上传 Loader 对应平台和版本号的 DSM 系统安装文件,随后跟随流程完成安装 / 迁移即可。

注意: 当安装过程中选择 DSM 系统更新策略时,请一定注意选择手动升级,不要开启自动升级。

从 DSM 6.x (Jun’s loader) 迁移升级

从 DSM 6.x (Jun’s loader) 迁移升级至本文 DSM 7.x(RedPill Loader),请遵循以下步骤:

  1. 操作前备份好黑群晖上的所有数据,同时卸载掉 SSD 缓存
  2. 黑群晖设备关机后,把所有硬盘和缓存用的 SSD 卸载移除,同时拔掉旧有安装了 Jun’s loader 的 DSm6.x 引导 U 盘
  3. 准备好调试用的 1 个新的引导 U 盘和 1 块干净的 HDD/SSD
  4. 参考上文步骤在新的引导 U 盘上配置 RedPill Loader,并使用准备好的干净 HDD/SSD 进行测试
  5. 确认新 Loader 没有问题一切正常后,关机将测试用的 HDD/SSD 替换回原有的硬盘,先不要插上缓存用的 SSD
  6. 重新开机,使用 https://find.synology.com 或者 Synology Assistant 查找黑群晖设备,在确认设备状态为 "DSM 可迁移" 后浏览器打开设备管理页面。
  7. 根据提示进行升级迁移操作。在迁移进度正式开始后,拔掉网线以避免迁移过程中自动升级到不匹配 Loader 的版本。
  8. 迁移完成并确认一切正常后,重新安装并配置 SSD 缓存

后续 DSM7. x 更新升级方法

在 TCRP 适配新版本 DSM7. x 后:

  1. 手动在 DSM 管理面板安装更新
  2. 安装后重启时引导进入 TCRP,使用命令行更新 Loader:
1
2
3
4
5
./rploader.sh backup
./rploader.sh backuploader
./rploader.sh update
./rploader.sh postupdate <architecture>-<version>-<DSMreleasenumber>
exitcheck.sh reboot

重启后,需要在引导界面手动选回默认的 RedPill Loader 引导项

参考资料