在嵌入式linux平台中,大部分工作则是填充根文件系统,在开发中,根文件系统一般都是以目录的方式放在开发宿主机上。
当根文件系统填充完成后,我们需要将其打包成xxx.img或者其他的镜像格式。本文以xxx.img镜像格式为例,描述如何将根文件系统打包成img的镜像文件。
本文打包的根文件系统目录结构和文件如下图所示:
(文件和目录有点乱,不影响)
这些目录和文件都存放在rootfs
目录下。
我们在rootfs目录的同级目录下打开linux终端,输入如下命令:
dd if=/dev/zero of=rk3568.img bs=1M count=2000
如下图所示:
上图中:
dd :是linux命令,用于读取、转换并输出数据。if :表示输入文件。of :表示输出文件。bs : 表示块大小。count :表示被复制的块数。
上述命令的意思则是创建一个2000M(约2G)的文件,内容全部填充为0。
运行上述命令后,则会创建一个rk3568.img
的文件,接下来就创建一个ext4的文件系统镜像。
在终端输入:
sudo mkfs.ext4 -F -L linuxroot rk3568.img
如下图所示:
sudo mkfs.ext4 :为linux命令,用于对磁盘设备进行Ext4格式化的操作。-F :表示强制格式化。-L :设置卷标。这里则是linuxrootrk356.img : 则是设备。
然后在终端输入下列命令:
mkdir tmpfs
创建一个tmpfs
文件。其中mkdir为linux命令,用于创建一个目录;tmpfs为名录名称(可自定义)。
接着使用下列命令:
sudo mount rk3568.img tempfs/
将rk3568.img文件系统挂载到tmpfs。
使用下列命令,将rootfs目录下的目录和文件拷贝到tmpfs目录:
sudo cp -rfp rootfs/* tmpfs/
完成后,使用下列命令卸载文件系统:
sudo umount tmpfs/
接下来使用:
sudo e2fsck -p -f rk3568.img
检查ext4文件系统的正确性。上述命令中:
-f:表示即使文件系统没有错误迹象,仍强制地检查正确性。-p:表示不询问使用者意见,便自动修复文件系统。
然后使用:
sudo resize2fs -M rk3568.img
调整文件系统的大小,如下图所示:
通过上述步骤,就将根文件系统完全打包成img镜像文件了。
镜像文件打包完成后,可通过烧写工具将img镜像文件下载到存储介质中。例如,本文是打包的瑞芯微的rk3568处理器平台的根文件系统,则可以使用官方提供的下载工具下载即可: