黑群晖引导文件编译避坑
Table of Contents
想在群晖上搞个软路由,买了绿联的USB 网卡,但是不被直接支持,为了解决网卡驱动问题, 有两种方式,一种是在装好系统后使用脚本把编译好的驱动加载使用,第二种是同引导文件 一同打包。两种方式都可以,但是网上资源各式各样,没有找对的情况下可能出现各种问题。 下面一一记录备忘。
1 关于编译环境和工具
只需要ds.apollolake-7.0.dev.txz 这个包,它已经包含交叉编译驱动所需要的一切,包括 内核头文件和交叉编译工具等。不用下载 ds.apollolake-7.0.env.txz 和 base-env.txz等 其他文件。在编译的时候根据说明设置 PATH 或者 LINUX_SRC 等参数指向相应的路径即可。
windows 系统下可以使用 DG 分区和 rufus 写盘,linux 系统可以使用 partx 和 dd, mount,不用另外安装或者找专业版的破解软件。
# 将镜像写入U盘,conv 参数保证多个分区组成的镜像的正确写入,否则只会写入第一个分区 # 写之前要检查 U 盘是不是挂在 /dev/sdb 下,根据实际修改 sudo dd if=imagefile.img of=/dev/sdb bs=2M conv=sync,noerror # 将镜像文件挂载为 loop 设备 ,再使用 mount 将设备挂载到目录上进行读写 partx -a imagefile.img partx -d /dev/loopX mount /dev/loopXpY /mnt
- 找不到 DG 专业版,破解版又担心不安全,其他版本不支持文件写入
解决办法
使用 Linux dd partx mount 工具
- U 盘被写入过一次后 windows 将其识别为其他设备导致 rufus 找不到U盘
解决办法
使用 Linux dd
- 编译过程报错挂载 loop 设备失败,引导文件写盘后无法引导系统。
检查发现系统不能将 img 文件挂载到目录,编译工具把 zImage custom.gz rd.gz 和 grub.cfg 写到宿主机的第一个分区去了,创建的 img 文件中缺少文件,导致引导失败。
解决办法
编译之前检查能否挂载 loop 设备及分区。不能挂载的原因很多,我遇到的是
内核未启用 cp437 和 iso-8859-1 编码,造成无法挂载loop 设备中的分区。启用后重新编
译内核并安装,不仅 loop 设备可以挂载,写入镜像的引导盘也可以挂载读写(不需要通过
DG修改 grub.cfg)。
- 由于上面所讲的原因,在使用工具编译 redpill-load 的时候覆盖掉工作机子的引导
文件 /boot/grub/grub.cfg, 导致重启电脑失败。恭喜中奖可以用到下面的命令使用 grub2 手动引导进入系统后修复。
set root=(hd0,msdosX) linux /boot/vmlinuz initrd /boot/initrd.img root=UUID=xxxxxxxxxxxxxxxxxxxx ro quiet boot
2 编译 redpill-load
2.1 编译 redpill-lkm
教程很多,就是使用上文提到的交叉编译工具直接整就是了,整完放到 redpill-load 的 ext/rp-lkm/redpill-linux-vx.y.zzz.ko。
2.2 编译 redpill-load
2.2.1 遇到的坑
官方的支持的配置文件较少,可以使用 pocopico-redpill-load。遇到的问题有:
- include/json.sh:行16: 2:未绑定的变量
解决办法
检查 user-config.json 文件,修正格式后再试
- ./ext-manager remove 删除扩展无效
解决办法
检查 bundle.json 文件,以及手动删除 custom/extentions 文件夹下的相应文件夹
- 可以引导系统但是安装完后10分钟等待超时,刷新或者重启后还是未安装,要求重新安装
解决办法
通过检查是我加扩展驱动有问题,如果驱动加载出了问题可能造成引导问题,
所以不要乱用 ./ext-manager.sh add 加载驱动除非很清楚驱动有问题没有。如果不确定可
以先不加此驱动扩展,待进入系统用手工加载验证无误后再编译进引导中。
2.2.2 加载本地扩展
由于file: 和 http: 一样可以表示uri , 如果发现扩展源码有问题,则可以下载下来后自 己动手改一改 json 文件中的路径和 sha256 ,使用类似下面的方式将本地包加入扩展:
./ext-manager.sh add file:///root/dsm/ax88179_178a-driver/rpext-index.json # 以下是常用的批量替换命令,记录一下 #sed -i 's?/root/dsm/?'`pwd`/'?' `grep /root/dsm/ -rl .`
总之,网上的保姆教程很多,但我遇到的好多坑却都是别人没有遇到的,特别突出的是pat 包装完后还是未安装状态而要求重装的,如果不认真排查可能就放弃了。
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议 进行许可。
posted on 2022-08-09 17:08 YourTech-WuPeng 阅读(2484) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」