学习linux系统移植的三大步骤分别是UBoot、内核&设备树、根文件系统的制作与烧写。之前我已经实现了UBoot、内核、设备树的编译与烧写以及根文件的制作,但是并未对根文件系统进行烧写。现在分享根文件系统的烧写过程,每个开发版的烧写过程不一样,这里只是分享湃兔的镜像文件烧写。

一、准备材料

可以根据自己的需要准备相应材料,以下是我自己使用的:
开发环境:VMware
操作系统:ubuntu
开发版:湃兔i2S-6UB
烧写工具:SD卡

二、准备制作所需的文件

1.zImage和dtb文件,可以找开发版提供的固件,也可以自己制作,教程见内核与设备树的编译和烧写
2.根文件系统,可以直接在ubuntu官网直接下载,也可以自己制作,教程见通过busybox制作根文件系统详细过程
3.湃兔官方提供的镜像文件制作工具,下载地址https://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系统移植的入门过程已经完成了,将系统成功移植到开发版后就可以进行应用软件和驱动的开发了,有时间再和小伙伴们一起学习系统移植。

版权声明:本文为jzcn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jzcn/p/14977885.html