湃兔更新鏡像文件的製作與燒寫

學習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系統移植的入門過程已經完成了,將系統成功移植到開發版後就可以進行應用軟體和驅動的開發了,有時間再和小夥伴們一起學習系統移植。

Tags: