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