【授人鱼不如授人以渔】私人定制专属的RedPill-DSM7.X引导文件并添加扩展驱动(编译DSM7.X引导教程)

2020年10月14日更新:

【再次重申】

编译绝对不是一件容易的事,满足下面“编译要求”的可继续,不满足要求的请自觉放弃,否则连失败提示都看不懂的话没法玩了!


【编译是什么?】
        程序是靠人写出来的,人写出来的程序统称为“源代码”。“源代码”可以使用任意一个文本编辑工具打开查看,但是这个“源代码”只是人类能看懂,计算机系统是看不懂的(学过计算机基础的都知道:计算机只认识0和1),那么需要把“源代码”文件转换为计算机能“看懂"的文件,这个转换的过程就是“编译”。

 

【编译常见问题】
        正常情况下,编译DSM7.X引导,只需要简单敲几行命令,然后静静的等待编译完成,最快只需要几分钟就能出结果。但是,也不排除可能会遇到编译失败的情况,失败的原因有很多,比如:你在什么操作系统平台下操作、你搭建的编译环境、你修改的源代码是否正确、你使用的网络是否稳定、文件下载是否完整、可用的磁盘空间是否足够等等。
        如果你遇到编译失败时,请自行分析失败原因,往往需要个人有一定程度的技术经验积累才能解决失败。

 

【编译要求】
        熟练掌握计算机基础知识,对 Linux 系统有丰富的使用经验,并且具备一定程度的英语阅读理解能力,逻辑思维较强,有耐心。小白劝退!

 

【部署编译环境】
※一台安装好Linux操作系统的电脑,本教程使用的是用VMware安装的Ubuntu 20.04.1 64 位桌面版;理论上直接在群晖系统下也可以进行编译,如果你不用担心数据安全的话也可以这么做;
※这台Linux电脑可以畅通无阻的访问互联网,必须能正常访问github网站和google网站的,嘿嘿你懂的;
※在Linux系统中部署好编译环境。如果Linux系统还没部署好环境的,请复制以下命令到Ubuntu 中安装环境(命令很长,如果文章显示不齐的,请刷新一次),复制一条命令运行结束后再复制另外一条运行:

apt install gcc make git unzip wget xz-utils libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential libboost-all-dev cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin texinfo premake4 golang libssl-dev curl patchelf xmlstarlet default-jre xsltproc
apt-get update && apt-get install --yes --no-install-recommends ca-certificates build-essential git libssl-dev curl cpio bspatch vim gettext bc bison flex dosfstools kmod && rm -rf /var/lib/apt/lists/* /tmp/* && curl --progress-bar --output /usr/bin/jq --location https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && chmod +x /usr/bin/jq

 

【源代码仓库】
※RedPill项目组官方原版引导的源代码仓库(不含内核文件,默认只支持DS3615xs_6.2.4-25556、DS3615xs_7.0-41222、DS918+_6.2.4-25556、DS918+_7.0-41890):
https://github.com/RedPill-TTG/redpill-load

※RedPill项目组官方原版引导内核文件的源代码仓库(内核版本:redpill-linux-v3.10.105、redpill-linux-v3.10.108、redpill-linux-v4.4.59、redpill-linux-v4.4.180):
https://github.com/RedPill-TTG/redpill-lkm

※RedPill项目组官方原版SAS硬盘的扩展驱动仓库:
https://github.com/RedPill-TTG/redpill-sas-activator

※tossp大神的RedPill引导一键编译源代码仓库(支持DS3615xs_6.2.4-25556、DS3615xs_7.0-41222、DS3615xs_7.0.1-42218、DS918+_6.2.4-25556、DS918+_7.0-41890、DS918+_7.0.1-42218):
https://github.com/tossp/redpill-tool-chain

※pocopico大神的扩展驱动源代码仓库:
https://github.com/pocopico/rp-ext

※pocopico大神的DS3615xs_7.X扩展驱动成品仓库:
https://github.com/pocopico/3.10.108-modules

※pocopico大神的DS918+_7.X扩展驱动成品仓库:
https://github.com/pocopico/4.4.180plus-modules

 

【编译方法和优缺点】
        目前RedPill引导编译的方法大致有两种:一种是使用RedPill原版的源代码进行编译,优点是原汁原味+扩展性非常强(如果你是高手,可以随意定制属于你自己的东西),缺点是默认不支持7.01-42218版本(当然,如果你有能力的话可以自行添加对7.01版本支持的文件);另外一种方法是使用其他大神维护的分支仓库进行编译,优点是操作简单(可以一键编译,大大降低劳动强度),缺点是可定制的东西不多(或者换句话说:我们也不会再去深入的折腾)。
        如果把编译引导文件的过程,比喻成盖一栋房子,那么你可以理解为:RedPill已经为我们搭建好了地基,至于你在地面上怎么加盖房子就看你的本事了!所以才有了很多大神在RedPill仓库的基础上建立了很多自己的分支,博主本次使用tossp大神的分支仓库进行一键编译当作教程,在此对RedPill项目组及上面提到的诸位大神表示衷心的感谢!

 

【编译步骤】
1、在电脑浏览器打开【tossp大神的RedPill引导一键编译源代码仓库】,在”Code“的三角形点出菜单,选择”Download ZIP“,打包源代码下载到本地电脑;

2、我这里给压缩包起的名字是”20211009“;

3、把压缩文件解压出来,得到一个文件夹“redpill-tool-chain-master”;

4、文件夹的名字太长了,把它再改个名字“20211009”,把这个文件夹复制;

5、到Ubuntu 20.04.1 64 位桌面版的主目录,我在主目录下建立了子文件夹,“20211009”粘贴到子文件夹下;

6、进入“20211009”文件夹,找到“sample_user_config.json”文件,右键,用文本编辑器打开;

7、里面默认的内容如下图;

8、根据自己实际情况,修改pid、vid、sn、mac1这四个参数,因为等下使用ESXI虚拟机安装,所以我只改了sn和mac1;

9、改好这四个参数,点下图三横线,在弹出的菜单选“另存为”;

10、名称这里写:apollolake_user_config.json(编译DS918+的引导,必须要用此文件名,不可以更改),保存;

11、看到显示的文件名变成“apollolake_user_config.json”就可以了;

12、如果需要编译DS3615xs的引导,在改好参数以后,选“另存为”;

13、名称这里写:bromolow_user_config.json(编译DS3615xs的引导,必须要用此文件名,不可以更改),保存;

14、看到显示的文件名变成“bromolow_user_config.json”就可以了;

15、已经建立好的两个文件:apollolake_user_config.json和bromolow_user_config.json;

16、找到redpill_tool_chain.sh文件,右键,属性;

17、把“上级文件夹”显示的内容全部选中,右键,复制(如果路径很长会显示不全,但最右边会显示有三个小点,复制的时候这三个小点也要一起复制);

18、打开Ubuntu的终端,输入 sudo -i 回车;

19、输入当前Ubuntu 登录账号的密码,需要注意的是:输入密码的时候,屏幕上是没有东西显示出来的,不要以为是系统卡了;

20、输完密码后按回车键;

21、此时可以看到最左边显示为root@开头;

22、输入“cd”跟一个空格后,点右键,粘贴,此时自动把第17步骤复制的路径粘贴上去,回车;

23、路径已经切换到“20211009”下了;

24、再回到文件属性这里,把“redpill_tool_chain.sh”这个文件名复制一下;

25、输入“./”跟一个空格后,点右键,粘贴,此时自动把第24步骤复制的文件名粘贴上去;

26、回车;

27、此时会显示编译脚本的使用说明,使用非常简单,就是“./redpill_tool_chain 参数1 参数2”;
参数1包括:
(1)build :为指定的DSM版本(通过参数2来控制)下载构建编译镜像;
(2)auto :利用编译镜像全自动进行引导文件的编译工作(镜像自动启动,自动编译,编译完成后镜像自动关闭);
(3)run :利用编译镜像手动进行引导文件的编译工作(进入 Bash 终端交互式编译);
(4)clean :删除指定版本的DSM版本镜像(或者加all参数删除未使用的全部镜像文件);
(5)add :添加扩展驱动(需要在参数2添加上驱动的地址);
(6)del :删除已经添加的扩展驱动(需要在参数2添加上驱动名称);
参数2包括:
(1)当参数1为前四种时,参数2可以选择:bromolow-6.2.4-25556、bromolow-7.0-41222、bromolow-7.0.1-42218、apollolake-6.2.4-25556、apollolake-7.0-41890、apollolake-7.0.1-42218的任意一种,bromolow分别对应的是DS3615xs,apollolake对应的是DS918+;
(2)当参数1为add 时,参数2为驱动程序的网页地址链接;
(3)当参数1为del 时,参数2为驱动程序的名称;

28、在电脑浏览器打开【pocopico大神的扩展驱动源代码仓库】,根据需要选择你要加入的驱动,本教程需要加入的是ESXI需要用的vmxnet3驱动程序和LSI 2308阵列卡需要用的mp2sas驱动程序;

29、先点mp2sas进入;

30、找到rpext-index.json文件,点击打开;

31、可以在源代码看到有ds3615xs_42218以及ds918_42218字样,表示该驱动程序支持7.01-42218版本(这里列出了什么版本,就表示什么版本可以用);

32、点下图位置的Raw;

33、在浏览器地址栏中,全部选择,右键,复制;

34、输入"./redpill_tool_chain add"后,点右键粘贴,完整的命令是:

./redpill_tool_chain add https://raw.githubusercontent.com/pocopico/rp-ext/main/mpt2sas/rpext-index.json

35、回车,开始下载扩展驱动,下载成功会显示“Installation is complete!”;

36、用同样的方法,把vmxnet3的驱动程序地址复制出来;

37、粘贴上去,完整的命令是:

./redpill_tool_chain add https://raw.githubusercontent.com/pocopico/rp-ext/main/vmxnet3/rpext-index.json

38、回车,开始下载扩展驱动,下载成功会显示“Installation is complete!”;

39、添加好扩展驱动,输入命令开始构建DS918+_7.0.1-42218引导文件的编译镜像(构建成功显示如下图,如果出错会有红色字显示):

./redpill_tool_chain build apollolake-7.0.1-42218

40、输入命令,全自动编译DS918+_7.0.1-42218引导文件;

./redpill_tool_chain auto apollolake-7.0.1-42218

41、耐心等待编译,此时会看到刚才下载的mpt2sas驱动和vmxnet3驱动已经被成功的添加进去,编译成功会显示“Creating Loader image at /opt/redpill-load/images/redpill-DS918+_7.0.1-42218*********.img...[OK]”的字样(如果编译出错,会有红色的信息显示);

42、找到“20211009”的“images”文件夹,进入;

43、就看到编译出来的引导文件了;

44、复制出来,改好文件名,设置好ESXI虚拟机,我这里设置用UEFI方式引导,需要注意的是:在“是否为此虚拟机启用UEFI安全引导”这里不要打勾;

45、ESXI安装群晖的过程此处就不在重复了,需要学习的可以去查阅《VMware vSphere(ESXI)6.7安装黑群晖DS918-7.01教程(ESXI虚拟机安装群晖DS918-7.01保姆级教程)》;

46、进入群晖系统后,在存储空间管理员,可以看到阵列卡的硬盘都在呢;

47、建立好存储,复制个电影测试看看是否正常,结果非常满意!


 

【使用官方原码编译流程】
        由于使用RedPill官方原代码进行编译的步骤比较复杂,本文不做具体操作。大致的流程如下:

1、先使用https://github.com/RedPill-TTG/redpill-lkm源代码,编译出redpill-linux-v3.10.105.ko、redpill-linux-v3.10.108.ko、redpill-linux-v4.4.59+.ko、redpill-linux-v4.4.180+.ko这四个内核文件;

2、下载https://github.com/RedPill-TTG/redpill-load源代码到Linux系统中;

3、把编译好的四个内核文件复制到redpill-load源代码的ext/rp-lkm目录下;

4、把以下代码复制,并根据实际修改好pid、vid、sn、mac1这四个参数,保存到redpill-load源代码的目录下,文件命名为:user_config.json;

{
  "extra_cmdline": {
        "pid": "0x0001",
        "vid": "0x46f4",
        "sn": "1234XXX123",
        "mac1": "XXYYXXYYXXYY"
    },
    "synoinfo": {},
    "ramdisk_copy": {},
    "extensions": []
}

 

 

5、打开终端,切换到root用户,进入redpill-load源代码目录下;

 

6、添加扩展驱动,命令格式如下:

./ext-manager.sh add https://raw.githubusercontent.com/*******/rpext-index.json

 

7、开始编译DS918+:

./build-loader.sh "DS918+" "7.0-41890"

 

8、或者编译DS3615xs:

./build-loader.sh "DS3615xs" "7.0-41222"

 

 

点赞
  1. Mr.Ko说道:
    Google Chrome Windows 7
    博主,编译出来好像没有,RTL8111E 跟RTL8111F 驱动。
    1. 博主说道:
      Google Chrome Windows 10
      8111系列默认就支持的啊,不需要添加驱动。比如:华擎J3455这个主板自带的网卡就是8111系列,用7.01默认编译的引导装7.01是支持的。
      1. Mr.Ko说道:
        Google Chrome Windows 10
        好,谢谢,我再试试
      2. Mr.Ko说道:
        Google Chrome Windows 7
        博主,还是不行,我的主板是技嘉H61M-D2S 网卡是RTL 8111F,,获取不到IP,另一个主板 RTL 8111E 就可以,他们是不是同一个驱动呢?
        1. 博主说道:
          Google Chrome Windows 10
          技嘉H61M-D2S这个主板搭配的CPU是什么型号?你用装918还是3615?
  2. 猫毛说道:
    QQbrowser Windows 10
    zixichin@zixichin-Standard-PC-i440FX-PIIX-1996:~/redpill-tool-chain$ ./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/ixgbevf/releases/ds918p_42218.json Downloading ############################################################################################################################################## 100.0% jq: error (at :27): null (null) has no keys
    1. 猫毛说道:
      QQbrowser Windows 10
      大老这是什么意思啊?
      1. 博主说道:
        Google Chrome Windows 10
        认真看一下“再次重申”的内容,连英文都看不懂的话,真的没法玩。
        1. 猫毛说道:
          QQbrowser Windows 10
          :han: :han:
          1. 说道:
            Google Chrome Windows 10
            你得点那个raw按钮,添加raw的网址。不是release的那个网址
  3. Devillll说道:
    Google Chrome Windows 10
    大佬大佬 我这出现下面的报错 怎么解决啊 root@devillll-Ubuntu:/redpill-tool-chain-master# ./redpill_tool_chain.sh add https://github.com/pocopico/rp-ext/blob/main/r8168/rpext-index.json Downloading #-#O=# # parse error: Invalid numeric literal at line 7, column 10 root@devillll-Ubuntu:/redpill-tool-chain-master#
    1. Devillll说道:
      Google Chrome Windows 10
      对不起 没事了 我是彩笔
  4. 流云小胖说道:
    Google Chrome Windows 10
    准备J3455添加一个I225 2.5G的网口提升速度,看您回复说不支持,是不是没有驱动吗?
    1. 博主说道:
      Google Chrome Windows 10
      是的,目前i225暂时没有驱动哦
      1. 流云小胖说道:
        Google Chrome Windows 10
        非常感觉博主回复,只能等后续更新啦,那我还是不急着升级了
  5. 一根小香蕉说道:
    Google Chrome Windows 10
    请教如何在引导文件添加pve的tools呢,不然pve里安装的黑群 内存占用 显示不正常
    1. 博主说道:
      Google Chrome Windows 10
      没听说PVE的群晖内存显示不正常啊。ESXI的vmtools是为了配置关机,重启这些操作的,也不是为了显示内存用啊。
      1. 一根小香蕉说道:
        Google Chrome Windows 10
        https://imgtu.com/i/HCwtEj https://imgtu.com/i/HCwNUs 请看图,一个pve里显示的群晖虚机内存占用率91% 一个是群晖里面显示的内存占用率 24% dsm7.0的引导用的是您网盘里的
        1. 博主说道:
          Google Chrome Windows 10
          你没理解字面上的意思。图1的PVE里面你给群晖虚拟机分配了10G内存,PVE显示内存使用率是9.13G。图2是NAS里面内存使用2.3G+缓存占用6.8G,加起来9.1G。9.13G和9.1G,我认为两边显示的没有问题!
          1. 一根小香蕉说道:
            Google Chrome Windows 10
            但是openwrt的内存占用显示好像就和虚拟机里一样。。如下图 https://imgtu.com/i/HAqiTK 记得之前6.2的黑群引导 内存占用显示的逻辑好像也是和OP一样
          2. 博主说道:
            Google Chrome Windows 10
            我只能说有点偷换概念,群晖系统显示的缓存内存不计入系统使用内存中去,所以显示使用率很低,太鸡贼了!
  6. yinzhy说道:
    Firefox Ubuntu
    你好,几次都是这样,是网络问题吗?另外,8125b的网卡,可以用8125那个驱动吗? root@chia-virtual-machine:/home/chia/20211009# ./redpill_tool_chain.sh build apollolake-7.0.1-42218 Downloading Toolkit Dev ######################################################################### 100.0%######################################################################### 100.0% 1.2%curl: (56) OpenSSL SSL_read: 连接被对方重设, errno 104
    1. 博主说道:
      Google Chrome Windows 10
      请看部署编译环境要求的第2段内容!
      1. yinzhy说道:
        Firefox Ubuntu
        非常感谢,居然这么快就回复了,这个报错解决了。另外还有新的问题。 8125b网卡,可以用8125那个驱动吗? 如下是新问题。 /opt/redpill-load /opt [#] Checking runtime for required tools... [OK] include/json.sh: line 16: 2: unbound variable make: *** [Makefile:33: build_redpill_load] Error 1
        1. 博主说道:
          可以用啊
          1. yinzhy说道:
            Firefox Ubuntu
            您知道下边这个问题吗? 输入:./redpill_tool_chain.sh auto apollolake-7.0.1-42218 之后 /opt/redpill-load /opt [#] Checking runtime for required tools... [OK] include/json.sh: line 16: 2: unbound variable make: *** [Makefile:33: build_redpill_load] Error 1
  7. nceccy说道:
    Google Chrome Windows 10
    918+编译出来貌似没有Intel X520网卡的驱动?试了好几次都读不到网卡
    1. 博主说道:
      Google Chrome Windows 7
      有个带intel万兆驱动的
      1. nceccy说道:
        Google Chrome Windows 10
        好像是ixgbe?我一会试试
  8. 镜湖说道:
    MIUI Browser Android 11
    大神你好,我想知道怎么判断网卡驱动打上没有,我我在918引导里把博通bcm5709的驱动打进去了,但是识别不了,我尝试了编译了四个包。都不行。 :guai:
    1. 博主说道:
      Google Chrome Windows 10
      把引导文件第1个分区的custom.gz解压出来,在exts文件夹可以看到各种驱动的子文件夹。如果你看到有博通bcm5709的驱动那个文件夹的名字,就表示已经打入了驱动。
      1. 镜湖说道:
        MIUI Browser Android 11
        里面有这个驱动,但还是不识别。我把这张网卡插到win10里之后会自动加载驱动,也能正常使用,但是设备管理器里会多出两个未识别的pcie设备。是这张网卡有问题吗。
        1. 博主说道:
          Google Chrome Windows 10
          能正常使用,表示网卡正常啊
          1. 镜湖说道:
            Google Chrome Windows 10
            Google Chrome Windows 10
            驱动确定编译进去了,群晖还是不识别这张网卡,不折腾了。大哥你能推荐几张918原生支持的网卡给我吗。我直接换网卡得了
          2. 博主说道:
            用intel的网卡
          3. 镜湖说道:
            Google Chrome Windows 10
            只要是intel的就行吗
          4. 博主说道:
            Google Chrome Windows 10
            基本上绝大多数的intel网卡群晖都是支持的,少数太新的型号可能暂时不支持(比如intel i225)。千兆用得比较多的是intel 82574(单口)、intel 82576(双口)、intel i350(四口)。
          5. 镜湖说道:
            Google Chrome Windows 10
            收到,谢谢
        2. welt说道:
          Google Chrome Windows 10
          我的在win下也是一样,不影响使用
  9. xiaolongado说道:
    Google Chrome Windows 10
    32不一点RAW就显示无法链接如何处理 :xiaoyan:
    1. 博主说道:
      Google Chrome Windows 10
      看文章开头【部署编译环境】这部分内容的第二段写的要求。如果没有这个条件就去创造条件。
  10. ck呵呵说道:
    Google Chrome Windows 10
    请问编译完DS3615xs,能正常开机,SATA都正常,但抓不到M.2固态是驱动问题吗?主板是X570S UD
    1. 博主说道:
      Google Chrome Windows 10
      3615本来就不支持nvme
      1. ck呵呵说道:
        Google Chrome Windows 10
        换成918+后SATA被禁用了按文章设置了DiskIdxMap=00 SataPortMap=1 SasIdxMap=0,但依然显示被禁用,但是被禁用的硬盘代号有变,这是我设置的不对吗?
        1. 博主说道:
          Google Chrome Windows 10
          不同型号的主板设置参数不一样的哦,请根据实际修改。

发表回复