网心云armbian固件手动合成
网心云OEC/T和OES因为CPU加密导致一般的固件无法刷入,强制刷入就会变砖。因为网心云的CPU是加密的,只能刷入指定固件,通过Diskgen加载img镜像发现,网心云的固件除了boot和rootfs还有5个分区,而ophub的通用固件只有boot和rootfs两个分区。如果只替换这两个分区内容,其他保持不变,就可以实现定制线刷固件,从而使用最新的系统。
操作过程很简单,打开Diskgen软件,将需要合成的网心云原版固件和最新通用固件都拉到Diskgen中,加载两者镜像,然后使用克隆分区功能,将最新通用固件的系统分区克隆到网心云线刷固件中。克隆后系统分区的UUID会发生改变,此时需要修改三个文件的UUID内容,从而使固件可以正常启动。
boot分区下 /armbianEnv.txt /extlinux/extlinux.conf rootfs分区下 /etc/fstab 也就是修改启动分区中两个文件和系统分区下一个文件,可以通过Diskgen直接提取文件修改,至于UUID在Diskgen可以通过查看分区的分区参数--卷UUID看到。
修改完成后确认这三个文件中加载的UUID参数无误,就可以关闭虚拟磁盘文件,保存退出,然后刷机验证。
注意:通用版的固件boot文件也不是通用的,比如dtb文件,通过测试克隆boot分区,修改UUID参数,机器不能启动。检查后是dtb文件不一致,替换dtb文件仍然无法启动,不知道问题在哪里。
结论:使用Diskgen克隆系统分区,然后修改boot两个文件UUID和rootfs的UUID即可,经验证此方法完全可用。
更改SATA硬盘启动
空闲的emmc改成swap用了(非必要)
以/sda1为例,创建一个新的分区,格式化为ext4文件系统
XML/HTML代码
- sudo fdisk -l # 查看磁盘和分区信息
- sudo mkfs.ext4 /dev/sda1 # 格式化新分区为 ext4 文件系统
- sudo mkdir /mnt/sda1
- sudo mount /dev/sda1 /mnt/sda1
XML/HTML代码
- # 复制根文件系统到新分区
- sudo rsync -aAXv / /mnt/sda1 --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
- blkid /dev/sda1 # 查看新分区的 UUID
- # 更新 /etc/fstab 文件, 记住是修改不是添加
- sudo nano /mnt/sda1/etc/fstab
- UUID={替换成新分区的 UUID} / ext4 noatime,lazytime,rw 0 1
- # 如果里面挂载了sda1 请注释掉
- # 更新 /boot/armbianEnv.txt 文件,记住是修改不是添加
- nano /boot/armbianEnv.txt
- rootdev=UUID={替换成新分区的 UUID}
- # 更新 /boot/extlinux/extlinux.conf 文件,记住是修改不是添加
- nano /boot/extlinux/extlinux.conf
- APPEND root=UUID={替换成新分区的 UUID}
重启后系统就从硬盘启动了,内置EMMC只有boot分区加载启动,系统分区完全使用SATA了。
修改核心其实就是一点,数据分区文件迁移到SATA,然后UUID改成加载硬盘就可以。
如果对于命令不熟悉,有移动硬盘盒可以直接使用Diskgen克隆数据分区到SATA硬盘,也是一样的。目的都是系统文件迁移UUID改变加载设备。