? ? ? ? 前面提到過基于ubuntu-base去構建根文件系統基于Ubuntu-base構建根文件系統-CSDN博客,但是有時候我們并不需要重頭開始,可以基于現有的根文件系統做調整。又或者我們直接在出廠的系統上去搭建好自己的運行環境并且編譯出自己想要的程序,現在要批量移植到其它的開發板上,最省事的辦法當然是直接導出了。
? ? ? ? 根文件系統導出有很多種方式,可以使用U盤本地導出,也可以使用網絡遠程導出,當然是網絡更加的方便,這里就只描述網絡導出的方式了。
? ? ? ? 首先我們得明白開發板里的根文件系統實際上就是一個包含各種文件的文件夾,我們也知道linux下的根目錄是“/”,所以實際上就是將“/”下的所有文件導出即可。
? ? ? ? 我們使用rsync來進行根文件系統的數據導出,PC和開發板ubuntu都需要安裝SSH和rsync,默認你已經安裝好了,且通過ping可以確認PC與開發板網絡連接正常。
? ? ? ? 我們在PC上新建一個目錄ubuntu_rootfs
mkdir ubuntu_rootfs
? ? ? ? 同步開發板根文件系統,usrname為開發板Ubuntu的用戶名,可以是root也可以是普通用戶名,boardip為開發板IP,意思就是將開發板/下的文件同步到ubuntu_rootfs文件夾中。連接過程中會提示輸入開發板用戶的密碼,按實際輸入即可。
sudo rsync -avx usrname@boardip:/ ubuntu_rootfs
? ? ? ? 耐心等待一會兒,就會發現ubuntu_rootfs里多出來根文件系統的文件,查看一下大小,跟開發板根文件系統大小基本一致。
????????后面的事就簡單了,步驟與?基于Ubuntu-base構建根文件系統-CSDN博客中的一致。如果想要查看和調整根文件系統,可以使用mount.sh腳本進行掛載,就可以進入根文件系統去操作了,可以修改hostname,用戶名做一些個性化定制,或者再安裝一些軟件等等,結束之后退出即可。
? ? ? ? 然后是制作根文件系統鏡像,首先新建一個空鏡像文件和空目錄,將鏡像掛在到空目錄上,然后將包含根文件系統的文件夾內容全部拷進空目錄,再取消掛載,鏡像文件就已經包含了根文件系統。
? ? ? ? 匯總指令如下:
//首先創建一個空鏡像文件,大小參考ubuntu_rootfs那個文件夾,可以略大一些
dd if=/dev/zero of=ubuntu_rootfs.img bs=1M count=4096//將該文件格式化為ext4文件系統
mkfs.ext4 ubuntu_rootfs.img//將鏡像文件掛載到一個空文件中,并將ubuntu_roofs中的文件拷貝到該空文件中
chmod 777 rootfs_maker
sudo mount ubuntu_rootfs.img rootfs_maker/
sudo cp -rfp ubuntu_rootfs/* rootfs_maker/
umount rootfs_maker///復制完以后用e2fsck修復及檢測鏡像文件系統,resize2fs減小鏡像文件的大小
e2fsck -p -f ubuntu_rootfs.img
resize2fs -M ubuntu_rootfs.img
? ? ? ? 這樣我們就得到開發板的根文件系統了,把它燒錄到其它開發板就可以直接使用,省去重復配置環境的工作了。