近期编译DS920引导探索总结到的技巧
上回书说道,因为手贱升级42962 update2升级包之后导致进入还原状态,通过近期琢磨rploader.sh的脚本,发现了一些实用功能,给大家分享一下。1.编译2.5G网卡驱动
事情最早起源于我买了一块RTL8125BG的2.5G网卡,然后编译,结果发现没用,于是仔细观察了编译过程的跑码,发现奇怪的是编译过程可以顺利识别英特尔的I219网卡,并可以自动添加e1000e的驱动,但是对r8125BG就没识别。于是上github上看了看,发现有r8125的驱动,很奇怪为什么编译过程中识别不到呢。后来查看rploader.sh的原始代码,原来是可以手动编译驱动的,对于8125驱动,使用以下指令,可以提前加载8125驱动:
sudo ./rploader.sh ext ds920p-7.1.1-42962 add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8125/rpext-index.json或者:
sudo ./rploader.sh ext ds920p-7.1.1-42962 add https://gitee.com/gebi1/pocopico-rp-ext/raw/main/r8125/rpext-index.json提前编译驱动,然后编译引导,顺利重启之后,发现终于……还是没解决。在后来,我重新买了一块RTL8125B(没有G)的2.5G网卡,发现它能用了,所以结论就是:RTL8125B可以用,RTL8125BG不能用?
2.黑群晖里的调整网卡顺序
这个是琢磨网络唤醒功能琢磨出来的,我是主板自带一个千兆网卡I219V,后来有加了一个PCIE X1的RTL8125B,前几次编译的时候,userconfig.json的网卡参数,默认是只有一个设置mac1地址的参数,而且没有"netif_num":"1"参数的。我手动添加了mac2,并且设置为2.5G网卡的真实物理地址(知识点:网络唤醒是需要使用真实MAC地址的,虚拟出来的地址不行),编译万发现可以识别出来两张网卡,但是只有网络1可以设置唤醒,悲催的是网络1默认的是板载千兆网卡,我设置的是虚拟地址。设置了真实地址的2.5G网卡,在群晖里显示的是网络2,但是网络唤醒设置里没有网络2的选项……这就很神烦。
直到今天重新编译,发现redpill最新的userconfig.json文件里新增了这个参数"netif_num":"1",于是就琢磨了一下,把这个参数改成2,把mac1设置成2.5G网卡的真实地址,mac2设置成生成的的虚拟MAC地址,最后编译成功之后,惊喜就来了,网络1变成了2.5G网卡,并且是真实地址。网络2是板载网卡,是虚拟的地址。更神奇的是,设置页面两个网络都可以设置唤醒了,之前只有网络1的设置,感觉好神奇。
(如上图,之前只有“启用局域网1的网络唤醒”,今天编译完局域网2也可以设置了)
3.DS920的dtspatch功能
这个功能也是看脚本函数看出来的。仔细看sh脚本的这个函数,发现这个是对dts文件打补丁的函数?因为下载的默认ds920p.dts是模板文件,里边的pcipath地址什么的都需要根据实际情况改。使用这个函数,好像就可以自动识别主板上的sata、nvme等的地址,并patch到920p.dts文件中。然后,函数会把dts转换为dtb文件,复制到custome_module文件夹里,并更改名称为“model_ds920p.dtb”,这样后续执行命令的时候好像就可以把dtb文件编译到引导里了?
但是经过实践,发展这里有两个坑需要注意一下:
一是函数识别sata和nvme的pcipath不一定是100% 正确的。特别是主板上有扩展sata芯片,但又没插硬盘的情况,有可能识别不到扩展sata板的pcipath。
针对这个问题,可以参考论坛里大神之前发的帖子,手动修改dts文件。
二是使用gebi1的优化版本执行这函数,经常性会出现最后复制文件失败的情况,这时候就需要手动把生成的dtb文件复制到custome_module文件夹并重命名。执行函数的时候要注意看屏幕跑码过程。我使用最新版的redpill 0.9.2.9版本,这个情况出现的较少,但是最后的结果会说什么dts文件不需要patch,custome_module文件夹里也不会出现最终的dtb文件,好像还是需要自己操作。
针对这个问题,可以参考论坛里大神之前发的帖子,手动修改dts文件并转换为dtb文件后,再手动传输到custome_module文件夹里,并更改名称为“model_ds920p.dtb”。好像就可以编译了
以下是具体命令:
sudo ./rploader.sh patchdtc geminilake-7.1.1-42962或者:
sudo ./rploader.sh patchdtc ds920p-7.1.1-42962这里其实还有个问题,我的主板有两个nvme插槽,设置了dts的sata和nvme的pcipath之后,8个sata硬盘都能正常识别,但就是没有nvme缓存功能,我确定nvme的pcipath是无误的,这个问题到现在还没解决,哪位大神可以帮忙分析分析什么问题。
4是redpill的bringfriend函数
这个函数也是琢磨脚本函数看到的,我理解这个类似于自动打补丁功能?好像是运行这个版本的函数之后,启动项在原来的usb和sata之外,会多出来一个tcrp friend的引导,并且默认使用该引导。经过测试,如果没有安装系统更新的时候,这个引导选项功能和usb引导就是一样的,可以自动进入群晖。我理解如果在群晖里安装了更新,这个引导项具有自动打补丁的功能,这样就可以自动化升级引导了?这个因为我已经是新版本了,所以没法测试。
问题:这个添加TCRP friend的函数好像是从0.9.2.0开始新添加的功能,很不幸,gebi1只优化到了0.9.1.9的版本。所以想使用国内优化网络环境编译引导的,就没法用这个函数功能了,而想使用这个新功能的,就只能使用最新版脚本,但是使用最新版脚本的话,又需要解决github限制的问题。
使用方法:注意要先编译,即执行sudo ./rploader.sh build ds920p-7.1.1-42962命令,编译引导成功之后,再输入以下命令:
sudo ./rploader.sh bringfriend ds920p-7.1.1-42962或者:
sudo ./rploader.sh bringfriend geminilake-7.1.1-42962
(sh脚本<0.9.2.9)中间出现需要选择的什么东西,按y回车即可。执行成功之后,引导向就会多出来一项TCRP friend,并且是默认引导项。实测也可以正常进入群晖系统了。
以上。
楼主发贴辛苦了,谢谢楼主分享! 非常感谢你提供这个啊 楼主发贴辛苦了,谢谢楼主分享! 楼主发贴辛苦了,谢谢楼主分享!
不懂帮顶!
页:
[1]