03 八月, 2023

thumbnail

Hinas从USB启动系统教程(可备份恢复)

原理为修改启动参数以U盘作为引导系统,通过自定义引导脚本来实现重定向系统根目录至USB设备。
并且支持切换多套配置以及备份恢复的类似快照功能,并且备份为增量备份,不占用多余空间
提供懒人刷机包,使用写盘工具或dd命令全盘写入即可(刷机包img包含了三个分区,一定要写入全盘!!!)
命令:

tar xf usb.tar.gz  dd if=usb.img of=/dev/sda

交流群搜索:xjm

安装教程

1、准备U盘,划分需要的三个分区(用全分区镜像写入U盘/TF,可直接跳到第5步):
boot分区:默认fat32格式,LABEL设为小写boot,用于存放内核及squashfs镜像,文件后缀为".squashfs"
busybox分区:ext4格式,用于存放busybox环境和引导程序
overlay分区:ext4格式,LABEL设为小写overylay,用于存放各个系统的overlay数据,用文件夹区分
2、准备若干 squashfs 镜像,可先分别挂载各系统img,再使用命令 "mksquashfs <你挂载img的目录> <系统名称>.squashfs -comp xz" 生成相应squashfs。
3、把内核文件 hi_kernel.bin 和 准备好的各个 <系统文件>.squashfs 放入boot分区。
4、准备 boot.cfg 配置文件放入fat32分区,内容为<系统名称>,可使用命令生成: echo "<系统名称>" > boot.cfg。如在windows下编辑必须在名称后换行并使用unix换行符。
5、接好TTL,并在fastboot阶段发送CTRL+C中断启动进程。
6、设置新的启动参数并保存:

setenv bootargs console=ttyAMA0,115200 root=/dev/sda2 init=/preinit rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),1M(bootargs),10M(kernel),256M(rootfs),700M(backup),-(ubuntu)  setenv bootcmd 'usb start;fatload usb 0:1 0x1FFFFC0 hi_kernel.bin;bootm 0x1FFFFC0'  saveenv

7、插入U盘并重新启动

切换系统方法:

通过执行命令 echo "<系统名称>" > /boot/boot.cfg 把想在下次重启后进入的系统名称写入boot.cfg即可

恢复到系统squashfs镜像的默认状态(清空系统的overylay数据):

执行命令 touch /boot/clear_overlay 即可在下次重启时清空 boot.cfg 对应系统的overylay数据

同一squashfs镜像启用不同overylay数据分支:

启用不同overylay数据分支可实现同一套底层系统,不同的版本配置,比如一个分支装A软件,一个分支装B软件等等。
把 /boot/boot.cfg 中的"<系统名称>" 更改为 "<系统名称>.<分支名称>",比如"ubuntu.test",重启后会进入全新的overylay数据

分支可进行快照备份和恢复:

快照的原理为依靠overlay可多层文件夹叠加的功能,把多个不同时间备份后形成的数据文件夹进行依次叠加,数据以上层文件夹为准。
因此可以把旧备份的文件夹叠到suqashfs镜像上作为中间层,新的文件夹作为当前的可写数据,实现无需复制数据就可备份的效果,理论上可不停套娃下去,但是考虑到io性能,不建议快照太多。

默认的全分区镜像的boot分区提供了一键脚本 snapshot-tools.sh,用法如下:

    Usage: /boot/snapshot-tools.sh command [option]      Valid command are:          backup  [snapshot name]     make a snapshot in the moment overlay ( need reboot )          list                        list all snapshot          recover [snapshot name]     recover backup to lastest snapshot or specified ( need reboot )

备份命令:

/boot/snapshot-tools.sh backup [快照名称]不提供快照名称则使用当前时间戳作为名称


查看可进行恢复的备份名称:

/boot/snapshot-tools.sh list 列出当前分支可进行恢复的快照名称


恢复命令:

/boot/snapshot-tools.sh recover [快照名称] 不提供快照名称则恢复到最近的一个快照
执行恢复快照命令后当前的数据会备份当前时间戳的新文件夹,确定无需保留后可在/mnt/overlay/<系统名称> 下自行删除

如要恢复到原版NAS启动,恢复启动参数即可

setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0p6 rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),1M(bootargs),10M(kernel),256M(rootfs),700M(backup),-(ubuntu)  setenv bootcmd 'mmc read 0 0x1FFFFC0 0x1000 0x5000;bootm 0x1FFFFC0'  saveenv  reset

已制作好三分区的img镜像下载:

链接:https://pan.baidu.com/s/1-pb1j9wPxJ5A1VR8f3O0eQ
提取码:yfkn
(默认使用mv100的内核,其他机型自行替换fat32分区的内核文件hi_kernel.bin测试)
(如需替换系统squashfs请按照安装教程方法制作)


 

Subscribe by Email

Follow Updates Articles from This Blog via Email

No Comments

About

搜索此博客