开发板根文件系统打包备份,制作镜像完成生产部署

制作条件:
        一个U盘,window系统上的虚拟机,需要备份根文件的开发板(我的是RK3568);

首先将现有的根文件,完成备份:方法很多种,这里只讲利用tar工具和dd,

第一种方法:使用 tar 工具

 sudo tar --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/dev --exclude=/mnt --exclude=/media --exclude=/run --exclude=/var/log --exclude=/var/tmp --exclude=/var/cache -czvf /path/to/backup/rootfs.tar.gz .
 

  • --exclude 参数排除不需要的目录,例如:

  • /proc, /sys: 虚拟文件系统,动态生成。

  • /tmp, /var/tmp: 临时文件目录。

  • /run, /var/run: 动态运行时数据。

  • /dev: 设备文件。

  • /var/log, /var/cache: 日志和缓存文件。

  • /path/to/backup/ 是存放打包文件的目录,可以选择挂载的外部存储设备。

      

这样就得到了一个压缩包rootfs.tar.gz,利用scprsync 进行传输,将压缩包拷到虚拟机里头;
接下来在虚拟机里利用这个压缩包制作rootfs.img,
首先先创建一个工作目录

mkdir -p rootfs

将压缩包解压进去

sudo tar -zxf rootfs.tar.gz -C rootfs/

 然后查看整个根文件多大,得到如下得类似输出,

sudo du -sh rootfs

 所以现在需要一块地址,大小要大于5.1G的地方,制作rootfs.img,

dd if=/dev/zero of=rootfs.img bs=1G count=6

 接着将rootfs.img文件格式化为EXT 4格式

mkfs.ext4 rootfs.img

 将这块地址挂载到一个目录下,然后将压缩包解压进去;

sudo mount -o loop rootfs.img /mount_dir(自己选一个空目录)

sudo tar -zxf rootfs.tar.gz -C /mount_dir

然后记住,先取消挂载,

sudo umount -l /mount_die 

再次挂载rootfs.img,查看是否制作完成

 sudo mount -o loop rootfs.img /mount_dir

ls /mount_die

到这里,使用tar打包开发板根文件系统就完成了,你可以用这个镜像烧录到别的同型号开发板,做生产的部署 ,再简单点,把这个根文件镜像,合成进整个系统镜像的固件里去,这里省略说明

另一种方法就是直接在开发板,开辟空间,直接生成rootfs.img根文件。这里有两种方式:

1:通过 dd 工具制作整盘镜像

这种方法直接将整个分区或设备内容打包为 .img 文件。

流程

1. 确认设备名称

运行以下命令确认目标设备的名称,例如 /dev/mmcblk0/dev/sda

lsblk

2. 挂载或卸载设备

确保设备未被使用,并卸载所有挂载点:

sudo umount /dev/sdX1 /dev/sdX2 # 替换为实际的挂载点

3. 创建镜像文件

使用 dd 命令生成镜像:

sudo dd if=/dev/sdX of=/path/to/output.img bs=4M status=progress

说明:

  • if=/dev/sdX 是输入设备路径。
  • of=/path/to/output.img 是输出镜像文件路径。
  • bs=4M 设置读写块大小为 4MB,提升速度。
  • status=progress 显示进度。
4. 验证镜像文件

可以通过 file 命令查看 .img 文件是否正确:

file /path/to/output.img

这种方式就是将整个开发板打包成镜像,我试过了,时间很久,最后烧到别的地方,也不适配,很多错误, 不推荐,我建议就是,分开打包,减少工作量

2:自定义根文件系统生成镜像

这种方法适合需要从根文件系统 (rootfs) 手动生成镜像文件的情况。这个前提是你的开发板空间足够用,因为既要打包根文件,又要开辟空间制作镜像,需要大量空间

流程

1. 准备根文件系统

确保已经有一个完整的根文件系统目录,利用开头的第一种方法先把根文件打包出来rootfs,或者你直接用  /  根文件,复制整个根文件

2. 创建空白镜像文件

创建一个指定大小的空镜像文件:

dd if=/dev/zero of=/path/to/rootfs.img bs=1M count=1024*6

说明:此命令创建一个 6GB 的空白镜像,count=1024 *6指定块数量。

3. 格式化镜像文件

将镜像文件格式化为指定的文件系统(如 ext4):

mkfs.ext4 /path/to/rootfs.img

4. 挂载镜像文件

挂载镜像文件到临时目录:

sudo mount /path/to/rootfs.img /mnt

5. 复制根文件系统

将根文件系统复制到镜像中:

sudo rsync -a /path/to/rootfs/ /mnt/

6. 卸载镜像文件

复制完成后,卸载镜像:

sudo umount /mnt

然后这就生成完成了,拷出来用就行了。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值