记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

网心云armbian固件手动合成&系统迁移SATA硬盘启动

网心云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代码
  1. sudo fdisk -l                 # 查看磁盘和分区信息
  2. sudo mkfs.ext4 /dev/sda1      # 格式化新分区为 ext4 文件系统
  3. sudo mkdir /mnt/sda1
  4. sudo mount /dev/sda1 /mnt/sda1
XML/HTML代码
  1. # 复制根文件系统到新分区
  2. sudo rsync -aAXv / /mnt/sda1 --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
  3. blkid /dev/sda1  # 查看新分区的 UUID
  4. # 更新 /etc/fstab 文件, 记住是修改不是添加
  5. sudo nano /mnt/sda1/etc/fstab
  6. UUID={替换成新分区的 UUID} / ext4 noatime,lazytime,rw 0 1
  7. # 如果里面挂载了sda1 请注释掉
  8. # 更新 /boot/armbianEnv.txt 文件,记住是修改不是添加
  9. nano /boot/armbianEnv.txt
  10. rootdev=UUID={替换成新分区的 UUID}
  11. # 更新 /boot/extlinux/extlinux.conf 文件,记住是修改不是添加
  12. nano /boot/extlinux/extlinux.conf
  13. APPEND root=UUID={替换成新分区的 UUID}
重启后系统就从硬盘启动了,内置EMMC只有boot分区加载启动,系统分区完全使用SATA了。
修改核心其实就是一点,数据分区文件迁移到SATA,然后UUID改成加载硬盘就可以。
如果对于命令不熟悉,有移动硬盘盒可以直接使用Diskgen克隆数据分区到SATA硬盘,也是一样的。目的都是系统文件迁移UUID改变加载设备。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):