25. 四大组件组成鲁班猫SD镜像¶
25.1. 官方镜像与鲁班猫镜像¶
我们将kernel,dtb,dtbo打包进了rootfs内,这样更为通用且更换其中如何一部分只需将文件替换即可。官方镜像则得烧写指定地址需要更新其中一部分则较为困难
25.5. 操作方法¶
默认./all下为野火2022-12-24的镜像组件,如果需要修改可以根据以下进行修改。
25.5.1. 修改rootfs¶
./all/rootfs下默认是没有内容的,需要把自己的rootfs解压到./all/rootfs目录,或者将野火官方的文件系统解压到./all/rootfs下。
野火官方的文件系统可以从网盘 i.MX6ULL系列/3、Debian镜像/ebf_debian_2022_12_24/usb烧录文件/mfgtools-release/Profiles/Linux/OS Firmware/release中获取.
console-armhf-rootfs-lubancat-buster.tar为纯净版文件系统。
qt-armhf-rootfs-lubancat-buster.tar为带qt的文件系统。
选择一个需要的文件系统,解压到./all/rootfs下。
提示
如果使用野火的发布的文件系统,需要稍作修改。野火镜像的/boot分区是由/dev/mmcblk0p1或/dev/mmcblk1p1进行挂载得到的,以上压缩包解压出来文件系统默认没有添加挂载/boot分区命令。
如果使用野火发布的文件系统,将文件系统解压后,打开解压后文件系统的 /etc/fstab 文件添加挂载/boot分区命令。
添加内容如下:
1 2 | #mmcblk0p1为sd卡镜像的boot分区,如果是emmc则是mmcblk1p1
/dev/mmcblk0p1 /boot auto defaults 0 0
|
25.5.2. Kernel的修改¶
把前面章节生成的zImage拷贝到./all/boot/kernel文件夹下更名替换vmlinuz-4.19.35-imx6,注意boot文件夹不能超过40M
25.5.3. uboot的修改¶
把生成的u-boot-dtb.imx更名替换./all/uboot/目录下的u-boot-mmc.imx,注意编译时需要选择mmc版的uboot配置文件编译
25.5.4. 设备树的修改¶
把面章节生成的设备树imx6ull-mmc-npi.dtb替换.all/rootfs/usr/lib/linux-image-4.19.35-imx6/imx6ull-mmc-npi.dtb
25.5.5. 设备树插件的修改¶
把生成的设备树插件xxx.dtbo添加或替换.all/rootfs/usr/lib/linux-image-4.19.35-imx6/overlays/下,并在./all/boot/uEnv.txt进行相应的修改
25.5.6. 构建:¶
sudo ./build_sd_img.sh 1
重要
构建前请确认./all/rootfs目录已经放了文件系统,参考以上 1.修改rootfs 确认。
执行sudo ./build_sd_img.sh 1 构建SD卡镜像参数1为内存卡大小为1G,同时也为镜像内可用大小,该参数支持小数,比如输入0.5即构建500M大小的镜像包,但总大小最小要求为rootfs文件夹的大小+40M 。
建议在打包的时候参数尽量小,避免烧录镜像至sd卡的时间过长,我们在烧录完成后再对分区进行扩容即可。
25.7. 扩容¶
用以上打包出来的镜像不会自动进行扩容,如果打包参数比较大,那么打包出来的镜像包烧录到sd卡需要的时间比较长,建议在打包的时候参数尽量小,避免烧录镜像至sd卡的时间过长,我们在烧录完成后再对分区进行扩容即可。
烧录镜像后,将sd卡插入板卡并以sd卡启动方式启动,执行下面命令对分区进行扩容。
#sd卡的主分区是/dev/mmcblk0
sudo parted /dev/mmcblk0
#以GB作为单位查看分区信息
unit GB print
#对mmcblk0的第2分区进行扩容,该分区存放跟文件系统
resizepart 2
#按提示输入yes进行确认
yes
#输入参数-1表示完全使用剩余空间
-1
#退出交互
quit
# 调整文件系统大小
sudo resize2fs /dev/mmcblk0p2
同理,emmc分区是mmcblk1,如果有需要对emmc分区进行扩容也可以使用以上方法。
提示
如果sd卡只是作为烧录卡,用来将系统烧录到emmc,那么sd卡可以不进行扩容,因为在烧录emmc的时候,会对emmc进行充分扩容,以确保充分利用emmc空间。
sd卡与emmc/nand互相烧录请参考: emmc/nand与SD卡之间镜像备份与烧录 章节。