说明
根文件系统制作有多种方式如下:
- busybox制作
- buildroot制作
- yocto制作
- 出厂镜像修改
本次采用修改出厂镜像的方式进行制作。
出厂镜像说明
开发板在资料中提供镜像文件myir-image-full-myd-imx8mm.sdcard
,其中包含uboot,dtb,内核,根文件系统。
镜像结构
- 将镜像导入到ubuntu中,使用
fdisk ./myir-image-full-myd-imx8mm.sdcard
指令,输入参数p
即可查看其分区结构如下:
book@100ask:~/Turing_imx8mm/images$ fdisk ./myir-image-full-myd-imx8mm.sdcard
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk ./myir-image-full-myd-imx8mm.sdcard: 1.7 GiB, 1801820160 bytes, 3519180 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8487319c
Device Boot Start End Sectors Size Id Type
./myir-image-full-myd-imx8mm.sdcard1 * 16384 186775 170392 83.2M c W95 FAT32 (LBA)
./myir-image-full-myd-imx8mm.sdcard2 196608 3519179 3322572 1.6G 83 Linux
Command (m for help): ^C
- 可见镜像分区有两个,分区1存放uboot,dtb,kernel等文件,分区2存放的是根文件系统
镜像提取制作
- 挂载根文件系统镜像
mkdir rootfs
sudo mount -o loop,offset=100663296 myir-image-full-myd-imx8mm.sdcard /home/book/Turing_imx8mm/images/rootfs //挂载镜像,其中 offset = 分区2的起始地址*512
- 制作空镜像
dd if=/dev/zero of=rootfs.img bs=1M count=5000
- 制作卷标linuxroot
sudo mkfs.ext4 -F -L linuxroot rootfs.img
mkdir tmpfs
- 挂载空镜像
sudo mount rootfs.img /home/book/Turing_imx8mm/images/tmpfs
- 拷贝根文件系统内容
sudo cp -rfp ./rootfs/* ./tmpfs/
- 卸载镜像
sudo umount ./tmpfs/
- 校验
sudo e2fsck -p -f rootfs.img
- 重新调整镜像大小
sudo resize2fs -M rootfs.img
- 至此已经将出厂镜像中的根文件系统提取出并制作成img文件