rk3399pro上烧录Debian10根文件系统之后,我们在调试过程中,可能会单独修改某个配置或者某个应用,或者是基于网络下载某些应用工具,这些修改通过最终测试并定板之后,为了工厂生产的烧录,我们就需要将这个经过最终测试的设备上的文件系统整体拷出来打包并制作烧录镜像,下面一起来看下这个过程:
1打包根文件系统,在开发板上执行1.计算根文件系统的大小(单位:M)(假定得到数值是:7312M):
切换到根目录下,运行下面的命令:
du -sh
2.打包开发板的根文件系统
tar cvfpJ /userdata/rootfs.tar.xz {/bin,/boot,/etc,/home,/lib,/lib64,/media,/opt,/root,/sbin,/usr,/var,/udisk}
注意:如果根目录下还有别的目录要一起打包进来,按照上面的格式在括号内追加即可。
另外,这个过程需要一些时间,等一会…
3.将rootfs.tar.xz拷贝到制作image的设备
scp ./rootfs.tar.xz xxx@xxx.xxx.xxx:/home/xxx/
说明:如果开发板的空间足够,忽略此步,直接在开发板上制作根文件系统。
2制作根文件系统,在任意一台linux设备上执行注意:一定要确保存储空间足够
1.生成rootfs.img文件
dd if=/dev/zero of=rootfs.img bs=1M count=8K
说明:rootfs.img的大小为:1M * 8K = 8G (假定步骤3)计算根文件系统大小为7312M,则大于7312M即可,实际操作中请根据实际根文件系统大小确定)。
2.创建ext4文件系统
sudo mkfs.ext4 rootfs.img
3.挂载rootfs
sudo mount rootfs.img /mnt
4.解压rootfs.tar.xz:
sudo tar xvfpJ rootfs.tar.xz -C /mnt
5.卸载rootfs:
sudo umount /mnt
卸载之后,rootfs.img就是我们从开发板里面导出的根文件系统并制作的镜像
3文件系统大小问题按照上面的步骤制作rootfs.img之后,通过瑞芯微的工具烧录到板子上之后,发现根文件系统的大小有问题了:
正常的烧录sdk编译的根文件系统是如下显示:
root@rockchip-evb:/# df -h
烧录从设备拷出的根文件系统自行制作的rootfs.img之后如下:
解决方法:
(1)查看根文件系统的分区名
从上面的大小以及parameter.txt分区文件,可以看出根文件系统的Device是/dev/mmcblk0p8
(2)执行resize2fs命令
root@rockchip-evb:~# resize2fs /dev/mmcblk0p8
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/mmcblk0p8 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
[ 2309.986454] EXT4-fs (mmcblk0p8): resizing filesystem from 1048576 to 1572864 blocks
[ 2309.997794] EXT4-fs (mmcblk0p8): resized filesystem to 1572864
The filesystem on /dev/mmcblk0p8 is now 1572864 (4k) blocks long.
再次查看分区:
根文件系统的大小已经正常了。