3. 修改img镜像内部的文件¶
在构建鲁班猫系统章节中,我们得到了完整的img镜像(将开发板直接提供的xxx.img.xz镜像文件解压也能得到img文件), 除了重新编译镜像之外,还有一种方法也能够修改img镜像内部的内容, 将部署应用程序需要的一些程序、脚本等文件直接添加到img镜像中。
将img镜像文件拷贝到PC的ubuntu系统下,以
imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img
文件为例
使用
parted xxx.img
命令进入GNU Parted如下所示1 2 3 4 5 6
guest@dev107:~/ls$ parted imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img WARNING: You are not superuser. Watch out for permissions. GNU Parted 3.2 Using /home/guest/ls/imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
以字节大小查看img镜像的分区情况
1 2 3 4 5 6 7 8 9 10 11 12 13
(parted) unit b (parted) print Model: (file) Disk /home/guest/imx8/imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img: 2420113408B Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 4194304B 213909503B 209715200B primary fat16 boot, lba 2 213909504B 2420113407B 2206203904B primary ext4 (parted)
从上图可以看到img镜像的分区情况,其中Start下面的
4194304B
、213909504B
表示 为文件系统的分区起始地址, 因为我们要需改文件系统里面的内容(比如添加、删除、修改一些文件或者添加自己的app), 所以我们后面的操作需要用到此地址信息。使用quit
即可退出GNU Parted。创建一个空白目录,用于img镜像挂载,并将img镜像第二个分区挂载到该目录下,如下所示
1 2
#根文件系统起始地址为213909504B sudo mount -o loop,offset=213909504 imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img /mnt
这条命令将imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img文件挂载到/mnt目录, 具体路径以情况以电脑上的镜像路径及需要挂载的目录为准。
接着就可以往挂载了img镜像的目录下添加自己想要的脚本、程序等文件了。
1 2 3 4 5 6 7 8
guest@dev107:~/ls$ sudo mount -o loop,offset=213909504 imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img /mnt guest@dev107:~/ls$ ls /mnt/ bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var guest@dev107:~/ls$ #往/home/debian目录下添加需要添加的文件内容 zhan@zhan:/mnt/home/debian$ ls bin hello.sh
此处添加往/home/debian目录添加了一个简单的hello.sh,具体路径和具体文件完全由用户决定。
修改完成之后回到刚刚的目录下取消挂载img镜像的文件系统,取消挂载之后在/mnt目录下的目录和文件 将会消失。
1
sudo umount /mnt
此时得到img镜像已经是修改过的img镜像了,将img镜像烧写到sd卡,并选择以sd卡启动, 在板子新烧录的系统/home/debian目录下便可以看到hello.sh文件。
同理,我们可以挂载镜像的boot分区进行修改,命令参考如下:
1 2 #/boot分区起始地址为4194304B sudo mount -o loop,offset=4194304 imx8m-mini-lubancat-bullseye-xfce-arm64-2024-06-04.img /mnt