之前有写过一篇 DSM 7.0.1 黑裙引导编译的教程。这边使用的是同样的工具,工具的作者在 Github 上开源了此工具,编译有点小小的变化。再次新开一篇编译教程,以后使用这个工具编译 DSM 7.x 的引导看着一篇就够了。
整个过程使用编译工具比较简单,下载工具 → 添加驱动 → 构建镜像 → 编译引导 → 下载引导;难点在于 访问 Github 的网络够不够稳定。网络连接 Github 不稳定是造成编译失败的最大问题。如果你在编译过程报错可以去 redpill-tool-chain 工具项目的 Issues 上查看对应的解决方法,建议使用全局代理已防止在编译过程中因为网络问题编译失败。
在添加自定义驱动的时候不建议添加过多的驱动,尽量不要加载无关驱动,否则会因为扩展驱动太大导致打包失败。
需要使用的工具:Linux 系统(Debian、Ubuntu)redpill-tool-chain 引导编译工具 Github下载
0x01 更新系统
apt update # 更新系统;
apt upgrade # 更新系统;

0x03 相关软件
更新完系统,从 Github 下载的工具压缩格式为 zip 装下解压软件;
apt install -y unzip curl wget screen # 安装解压下载软件;

安装 docker 编译工具依赖 docker;
apt install docker.io # 安装 docker;
docker version # 查看 docker 版本;
gpasswd -a $USER docker # 将当前用户添加到 docker 用户组;
newgrp docker # 刷新 docker 用户组;
apt install jq # 安装jq;




0x04 下载工具
打开 redpill-tool-chain Github的地址后,点击 Code → Download ZIP 右键复制链接地址;
wget https://github.com/tossp/redpill-tool-chain/archive/refs/heads/master.zip # 下载编译工具;
unzip master.zip # 解压工具;
mv redpill-tool-chain-master dsm7 # 重命名一个短一段的名字,非必须;
cd dsm7 # 进入到工具目录;




0x05 使用方法
进入到工具目录后先给工具设置执行权限,然后查看工具的使用方法;
chmod +x redpill_tool_chain.sh # 工具脚本添加权限;
./redpill_tool_chain.sh # 查看工具的使用方法;
下面是要用到的命令说明,其他的自行去 Github 作者的项目说明去了解;
./redpill_tool_chain.sh sn ds918p # 生成指定引导的序列号;
./redpill_tool_chain.sh add <URL> # 添加扩展驱动;
./redpill_tool_chain.sh del <ID> # 删除扩展驱动;
./redpill_tool_chain.sh build <platform_version> # 构建工具链镜像;
./redpill_tool_chain.sh auto <platform_version> # 制作 redpill 引导镜像;


0x06 配置文件
在 redpill-tool-chain 工具目录,先复制一份配置以平台名字命名,然后修改配置文件的一些参数。复制 sample_user_config.json 为 ds918p_user_config.json 然后编辑 ds918p_user_config.json 配置文件。配置文件中 extensions 字段保持为空,sn 和 mac 可以自己修改,如果有洗白的 sn 和 mac 也可以再次修改。如果是 U 盘引导则需要修改配置文件中的 pid 和 vid;
cp sample_user_config.json ds918p_user_config.json # 复制配置文件;
vim ds918p_user_config.json # 编辑配置文件;
0x07 添加驱动
redpill-tool-chain 工具可以自定义驱动,可以支持更多的硬件。如果要集成驱动可以访问 rp-ext 这个项目,从这里找到你想要的驱动添加到 DSM 的引导中;
举例本文添加 e1000 和 e1000e 这两个驱动,先打开 rp-ext 项目地址。找到 e1000 点击文件夹进入 → 点击 rpext-index.json 的文件 → 看到一堆代码然后点击 Raw → 弹出 raw 开头的网址,这个网址就是驱动地址,然后使用命令加参数添加驱动;




使用命令添加 e1000、e1000e、vmxnet3 这三个网卡驱动,这三个驱动为 VMware vSphere ESXi 的虚拟网卡驱动,如果使用 VMware vSphere ESXi 平台引导黑群晖就需要有虚拟网卡的驱动支持;
./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/main/e1000/rpext-index.json # 添加e1000网卡驱动;
./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/main/e1000e/rpext-index.json # 添加e10002网卡驱动;
./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/main/vmxnet3/rpext-index.json # 添加vmxnet3网卡驱动;

0x08 构建镜像
添加完自定义驱动后就开始先构建镜像;使用 ./redpill_tool_chain.sh 查看工具支持哪些镜像,选择自己需要的构建就可以了;
./redpill_tool_chain.sh build ds918p-7.1.0-42661 # 构建镜像;

0x09 编译引导
上一步构建完镜像后就可以开始编译引导了,注意工具这里需要连接 Github 拉取一些文件。编译失败的大部分原因都是网络问题;如果你碰到可以翻翻 redpill-tool-chain 项目的 Issues 查看解决方法;整个编译过程如下截图,
./redpill_tool_chain.sh auto ds918p-7.1.0-42661 # 编译引导;

0x10 获取引导
如果在上一步的编译过程中顺利编译完成,在 redpill-tool-chain 的工具目录 images 目录下则会有黑群晖的引导镜像 img 文件;然后使用 sftp 工具将黑群晖的引导镜像下载到本地;
cd images # 进入images目录;
ls # 列出当前目录文件;

