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