根据参照RedPill的介绍,我们一共有两种方式来编译。第一种为通过群晖开放的Linux源代码编译,第二种为通过群晖的toolkit编译。不过按照此文档的介绍,RedPill的作者TTG推荐使用群晖开放的Linux源代码进行编译,但是目前群晖并未开放DSM7的源代码的情况下(截至2021/10/5号),我们可以使用toolkit进行编译
编译的系统推荐Ubuntu20.04(本人就是在此系统下编译的)。
本文编译过程参照redpill的readme.md的介绍、演示编译使用DS3615xs机型的源代码/toolkit.
并且不提供任何现成编译完成的redpill.ko文件(因为目前为测试版,存在不稳定因素。不放出现成文件是为了过滤一些半桶水的小白。当redpill的稳定版发布后,我将会在我的下载站提供现成的redpill.ko以及引导)
目前本人下载站已经提供编译完成的redpill.ko下载,请前往此处,并尽量选择最新版本!
0.安装各种需要的依赖
这里仅举例我在编译时缺少的依赖,如果你编译时报错,请自行通过报错查找依赖信息
1 | apt update |
1.通过Linux源代码编译
本编译方式可以用于DS918+/DS3615xs的DSM6.2.4版本的redpill.ko编译
1.1.克隆RedPill仓库
使用git clone命令克隆RedPill的最新仓库
1 | git clone https://github.com/RedPill-TTG/redpill-lkm |
1.2.准备Linux源代码
编译所需的源代码可从SourceForge或未知下载站下载。
我们下载你机型对应的源代码。DS918+下载apollolake架构的;DS3615xs下载bromolow架构的
并放入redpill-lkm目录下解压(解压可使用tar xvf xxx.txz命令解压)
1.3.下载工具链
由于Ubuntu系统自带的gcc好像版本过高,导致编译失败
我们需要下载官方提供的工具链进行编译,可以 从SourceForge或未知下载站下载。
使用官方提供的工具链编译时,需在make参数后加入CROSS_COMPILE=[你工具链的路径]/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-
1.4.准备编译redpill.ko
首先,使用cd目录到你的Linux源码根目录
如果你是Linux v3 (bromolow),那么则执行
1 | cp synoconfigs/bromolow .config |
如果你是Linux v4 (apollolake),那么则执行
1 | cp synoconfigs/apollolake .configecho '+' > .scmversion |
接着,输入命令
在最新lkm版本中,必须指定生成类型(dev-v6、dev-v7、test-v6、test-v7、prod-v6、prod-v7)
- dev:会输出所有的debug信息,包括info、warning和error
- test::还会输出warning和error,但不会输出info
- prod:不会输出任何debug信息
看起来这些参数对lkm的功能没有任何影响
1 | make oldconfig CROSS_COMPILE=[你工具链的路径]/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- |
完成上述命令后返回redpill-lkm的目录
1.5.开始编译redpill.ko
直接输入
1 | make LINUX_SRC=<你Linux源代码的路径> CROSS_COMPILE=[你工具链的路径]/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- |
1.6.成功得到redpill.ko
最最后redpill-lkm的根目录中,会出现redpill.ko。
但是,我们需要输入一下命令来处理ko文件
1 | strip -S *.ko |
最后使用ttg提供的redpill-load即可制作出黑裙引导
2.使用toolkit编译
本编译方式可以用于DS918+/DS3615xs的DSM7版本及以上版本群晖未开放Linux源代码的redpill.ko编译
2.1.克隆RedPill仓库
使用git clone命令克隆RedPill的最新仓库
1 | git clone https://github.com/RedPill-TTG/redpill-lkm |
2.2.下载toolkit
编译所需的源代码可从SourceForge或未知下载站下载。
我们下载你机型对应的toolkit。DS918+下载apollolake架构的;DS3615xs下载bromolow架构的(比如ds.bromolow-7.0.dev.txz)
并放入redpill-lkm目录下解压(解压可使用tar xvf xxx.txz命令解压)
2.3.下载工具链
由于Ubuntu系统自带的gcc好像版本过高,导致编译失败
我们需要下载官方提供的工具链进行编译,可以 从SourceForge或未知下载站下载。
使用官方提供的工具链编译时,需在make参数后加入CROSS_COMPILE=[你工具链的路径]/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-
2.4.开始编译redpill
输入
在最新lkm版本中,必须指定生成类型(dev-v6、dev-v7、test-v6、test-v7、prod-v6、prod-v7)
- dev:会输出所有的debug信息,包括info、warning和error
- test::还会输出warning和error,但不会输出info
- prod:不会输出任何debug信息
看起来这些参数对lkm的功能没有任何影响
1 | make LINUX_SRC=[你的toolkit位置]/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.0/build CROSS_COMPILE=[你的工具链位置]/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- [生成类型] |
2.5.成功得到redpill.ko
最最后redpill-lkm的根目录中,会出现redpill.ko。
但是,我们需要输入一下命令来处理ko文件
1 | strip -S *.ko |
最后使用ttg提供的redpill-load即可制作出黑裙引导