湃兔更新镜像文件的制作与烧写
学习linux系统移植的三大步骤分别是UBoot、内核&设备树、根文件系统的制作与烧写。之前我已经实现了UBoot、内核、设备树的编译与烧写以及根文件的制作,但是并未对根文件系统进行烧写。现在分享根文件系统的烧写过程,每个开发版的烧写过程不一样,这里只是分享湃兔的镜像文件烧写。
一、准备材料
可以根据自己的需要准备相应材料,以下是我自己使用的:
开发环境:VMware
操作系统:ubuntu
开发版:湃兔i2S-6UB
烧写工具:SD卡
二、准备制作所需的文件
1.zImage和dtb文件,可以找开发版提供的固件,也可以自己制作,教程见内核与设备树的编译和烧写。
2.根文件系统,可以直接在ubuntu官网直接下载,也可以自己制作,教程见通过busybox制作根文件系统详细过程
3.湃兔官方提供的镜像文件制作工具,下载地址//i2som-zh.oss-cn-beijing.aliyuncs.com/i2S-6UB-BuildSWU.tar.gz。
三、i2S-6UB-BuildSWU工具使用
1.将下载后的工具拷贝到开发环境下进行解压
sudo tar -vxf i2S-6UB-BuildSWU.tar.gz
解压后的目录如下图所示
2.可以看出制作工具中已经有一些项目案例,对其中一个项目进行编译
./mkupdate_package i2s6uby2-emmc-core
编译完成后会生成一个.swu
的文件,这个就是更新固件所需的文件,如下图所示
这样更新固件已经制作完成,但是这个湃兔提供的系统,我们需要将自己制作的文件加入其中进行制作。
3.进入i2s6uby2-emmc-core项目中,查看文件目录如下图所示
文件作用见下表所示:
文件 | 说明 |
---|---|
core-image-base-i2c6ulxbe-20180505071829.boot.vfat | 设备树和内核 |
core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4 | 根文件系统 |
imx-emmc-postinstall.sh | shell脚本 |
sw-description | 项目文件 |
由此可知,只需要将.vfat
和.ext4
文件替换成我们需要更改的内容即可。
四、打包根文件系统
使用过linux的朋友都知道根文件系统的目录结构,如下图所示
现在需要将所有的文件打包成.ext4
,具体打包流程如下所示
1.将制作工具中的i2s6uby2-emmc-core
项目复制一份
sudo cp -pr i2s6uby2-emmc-core ./i2s6uby2-emmc-core-test
然后将core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4
文件删除
cd i2s6uby2-emmc-core-test
sudo rm core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4
2.创建.ext4
文件
dd if=/dev/zero of=./rootfs.ext4 bs=1024 count=409600
mkfs -t ext4 ./rootfs.ext4
3.挂载.ext4
文件并将根文件系统中所有文件拷贝至挂载目录下
sudo mount -o loop rootfs.ext4 /mnt
sudo cp /home/rootfs/* /mnt -avrf
sync
完成后卸载文件
sudo umount /mnt
4.修复并调整文件大小
e2fsck -p -f rootfs.ext4
resize2fs -M rootfs.ext4
到此已经完成根文件系统的打包。
五、替换内核与设备树文件
挂载core-image-base-i2c6ulxbe-20180505071829.boot.vfat
文件
sudo mount -o loop core-image-base-i2c6ulxbe-20180505071829.boot.vfat /mnt
挂载完成后便可以看到内核与设备树文件,如下图所示
然后只需将zImage
和.dtb
名称更改一致并替换相应的文件即可,完成后记得卸载文件
sudo umount /mnt
注:拷贝时记得将设备树与内核的权健更改为777
,否则更新后会启动失败。
六、制作镜像文件
因为我们将.ext4
文件替换为rootfs.ext4
文件,所以需要对sw-description
文件进行更改,如下图所示
编译文件
./mkupdate_package i2s6uby2-emmc-core-test
完成后将编译生成的.swu
文件拷贝至VFAT分区格式的SD卡内,如下图所示
七、烧写镜像文件
将具有.swu
文件的sd卡插入湃兔的开发版中,启动并进入UBoot命令行,输入更新命令
setenv mmcpart 2
run bootcmd
更新完成后会有相应的日志输出,如下图所示
启动完成后会看到我们自己制作的根文件系统,如下图所示
到此我们linux系统移植的入门过程已经完成了,将系统成功移植到开发版后就可以进行应用软件和驱动的开发了,有时间再和小伙伴们一起学习系统移植。