[玩法/技巧] 黑群晖DSM920+编译指南,4硬盘以上可用 |
本帖最后由 w2861 于 2022-9-6 16:45 编辑
最近在群里灌水,看了几篇DS920引导编译的帖子,感觉要么有些错误,要么有些复杂,要么不适用自己的主板。经过自己的琢磨,在自己的实体机上成功编译了黑群晖的DSM920+引导,并且成功实现了8硬盘的识别。于是整理一下,发个帖子,给各位老铁参考。 前言: 实体机配置 CPU:G4600,八代intel奔腾CPU 主板:华硕M9E(Z270芯片组) 存储:主板自带8个sata接口,其中4个由芯片组提供,4个由两个ASM1081芯片提供(每个芯片各两个) 内存:4GB 二、前期问题及准备工作 其实编译之前有几个问题还是需要弄清楚的: 1.ds920的dts文件编辑问题。 要想识别5个及以上硬盘,需要编辑dts文件,而编译dts文件的前提又需要知道主板sata接口的pcipath(pciroot),或者使用了sata扩展卡的也需要知道扩展卡sata的pcipath(pciroot),我之前刷了http://www.gebi1.com/thread-301338-1-1.html(主题:920+引导编译教程 小白也能编译)的铁子,作者说:“其实pocopico大神已经为我们自动获取到了自己nas的.dts文件,只是不太准确,硬盘的数量对不上,这个大家自行修改就行了,但是pci-root是正确的,这样大家只需要修改适合自己硬盘的数量就行了,比如5盘位,然后修改这个,复制5组数据,按照序列编号1-5就行了” 注意这里是不对的,模板ds920p.dts的pci-root也是错误的,需要根据主板实际的pciroot进行修改。 后来又参考了http://www.gebi1.com/thread-301598-1-1.html(主题关于DS920p和DS1621系列的dtb和dts(2022.5.24更新):)的帖子,这里获取pciroot的方法才是正确的,但是该帖子后半部分生成dtb的过程又太复杂,还需要安装ubutun虚拟机啥的,其实不用,咱们只参考该帖子里获取pciroot的方法就行了。 2.编译引导版本名称的问题 现在编译镜像版本众多,有时候很容易迷糊,什么这lake那lake的,到底哪个对应哪个,新手很容易迷糊。经过查找资料,就好像intel的CPU不同代的产品也有代号一样,原来群晖不同的产品也有代号,比如DS920+的套件架构是Geminilake,ds918+的套件架构则是Apollolake,RS3617xs的套件架构是Bromolow,RS3617xs+的套件架构则是Broadwell。所以当你刷帖子看到编译指令是某个架构的时候,就知道是编译什么版本的引导了。不同产品对应的套件架构,可以参考这个网页:http://www.92nas.com/forum.php?mod=viewthread&tid=35 3.需要准备的软硬件及网络环境 编译过程中需要ssh软件,我这里用的是xshell;还需要用到sftp软件,我这里用的是WINSCP,编辑dts文件使用记事本就可以,我用的是vscode别的软件暂时不需要了 硬件的话就是你的硬件环境,主板,硬盘什么的,以及路由器、网线、U盘什么的。还需要使用另一台电脑,用于ssh。 对于主板上有对个sata控制器的情况,建议每个sata控制器的一个sata口上都插一个硬盘,方便识别sata口所属控制器的pciroot 以下是正式教程: 一、下载编译环境 首先从https://github.com/pocopico/tinycore-redpill下载最新的编译img镜像,tinycore-redpill上的最新版本(截至9.6)是v0.8.0.0,但是这个帖子http://www.gebi1.com/thread-301698-1-1.html(主题:第1节课:群晖引导编译u盘镜像tinycore-redpill下载和刻录 )里有个最新的0.9.0.2的img镜像,不知道作者是在哪下载的。我用的就是这个最新的0.9.0.2的。 下载之后,使用rufus写入U盘,并启动,获取到IP地址,这里好多帖子说的都比较详细了,这里不赘叙了。 二、编译指令 1.替换rploader.sh文件解决github墙的问题 使用xshell登录编译环境,输入以下指令,替换为gebi国内优化版本的rploader.sh文件可以有效解决墙的问题:
2.更新编译包
3.获取并更新usb的pid和vid
3,4,5步骤中出现Should i update the user_config.json with thess values? [Yy/Nn]的提示时,选择y回车即可 至以上步骤,已经更新完了user_config.json文件的sn、mac、usb的pid和vid等,如果此时有ds920的正版序列号想洗白黑群晖,就需要使用winscp,把user_config.json文件里的sn和mac改为正版的sn和mac了。(在ssh环境直接使用vi命令应该也是可以的)。 6.编译DS920+ 7.1.1 42951版本
编译完之后,会生成引导的img镜像,并已经自动写入到U盘里了,此时重启主板,即可使用群晖助手搜索发现IP了。 但这会儿我们还没编辑dts文件,没法使用5个及以上的硬盘。根据前文的描述,可以使用以下方法获取每个硬盘控制器的pciroot。 需要安装的主机,接上硬盘,每个控制器接上一个硬盘就可以,全接上也无所谓。比如主板上自带6sata和一张5口的sata扩展卡,其实就各接一个sata硬盘就可以,因为主要是需要查看每个控制器的pcie位置。接好硬盘,启动U盘引导,等待群晖助手可以发现IP之后,在浏览器地址栏输入以下url并回车:
使用xshell,telnet登录IP,用户名root,密码为空,输入:
继续输入以下指令:
修改完,保存,重新上传覆盖,然后执行第6条指令,就可以编译5硬盘及以上的ds920黑群晖引导了。经过实测,我的主板可以成功识别8个硬盘。 至此,该贴就算完事了。当前目前还有一些问题可能会存在,比如nvme是否可以识别我还没测试过。因为dts文件里我看有nvme的pciepath,可能大概率也是错误的,但是我手头没有nvme硬盘,所以就没测试修改。 |
你在pocopico大佬的github切换到develop分支,就可以下载0.9.0.2版本了,因为0.9.0.2是测试版,所以master分支放的是0.8.0.0的正式版。要是不会切换的话,也可以打开下面的链接直达:
https://github.com/pocopico/tinycore-redpill/tree/develop |
我那个帖子,适合直接获取到dtb文件,然后再进行在线的编译。其实过程一点都不麻烦,比如帮别人定制dtb并定制引导文件,不需要使用tinycore。另外,虚拟机也好,直接ubuntu的安装u盘启动也好,也很方便。dts文件是最简单的,直接模版就可以进行编辑和修改。另外,nvme是可以修改并正确识别的,已经测试成功,不需要像918机型在版本升级时重新打nvme补丁(如7.1升级到7.1.1)
|