背景

毫无疑问,群晖是最好用的NAS系统,具备良好的生态,在6.X的年代,jun提供了闭源的引导,但在6.2.4版本以后都失效了,很长的一段时间,黑群是没法同步更新的。2021年年底,redpill横空出世,整个项目甚至是完全开源的,给破解引导提供了无限可能。

引导启动过程

redpill从本质上讲,是借鉴了jun的思想,都是先启动一个linux kernel,对系统做适当的配置,然后kexe真正的群晖kernel和rootfs。

官方编译

redpill官方编译是通过https://github.com/RedPill-TTG/redpill-load来做的,其步骤稍微复杂些,且需要配好代理,系统要求是ubuntu 20.04

安装依赖

1
2
apt update
apt install docker.io curl jq bspatch -y

克隆redpill-load仓库

在以下仓库中选择一个你中意的,clone到本地即可

1
2
git clone https://github.com/RedPill-TTG/redpill-load  #官方仓库,版本更新较慢
git clone https://github.com/jumkey/redpill-load   #jumkey第三方仓库,版本更新比较勤快(master分支和官方分支一样,develop分支有新版本)

创建user_config.json

在redpill-load的根目录创建一个user_config.json,写入如下内容:(如果是QEMU虚拟机,vid和pid请分别设置为0x46f4和0x0001;如果是实体机请和你的U盘一样。此处一点要对,否则可能导致安装DSM时出现13错误。如果SATA启动方式的话随意)

1
2
3
4
5
6
7
8
{
    "extra_cmdline": {
        "vid": "<fill me>",
        "pid": "<fill me>",
        "sn": "<fill me>",
        "mac1": "<fill me>"
    }
}

将redpill.ko拷贝进入目录

将redpill.ko拷贝入目录ext/rp-lkm/(如果没有则创建),并且将redpill.ko更名为redpill-linux-.ko(比如redpill-linux-v3.10.108.ko),如果Linux版本不知道可以从config/[你的机型]/[你的DSM版本号]/config.json中的ramdisk_copy中查看到redpill的命名。

生成镜像

1
2
./build-loader.sh [你的机型] [你的版本]
#比如./build-loader.sh 'DS3615xs' '7.0.1-42218'

生成完成后,即可将其导入虚拟机启动了!(可以通过串口查看启动状态)

github action编译

开源的力量是强大的,tossp做了个github action的编译环境,https://github.com/tossp/redpill-tool-chain,只要fork到自己的项目,然后定制修改一下就可以使用了。

image-20220520173943404

注意事项

  1. U盘引导vid,pid必须正确,否则必定导致安装到55%时文件损毁错误,telnet连接上去也看不到u盘设备文件
  2. 网卡数目不能大于物理网卡个数,否则会导致卡在56%时报文件损毁
  3. 第三方驱动添加必要的,无关的不要加,防止出现随机问题