[Linux]製作ubuntu文件系統鏡像

主機平臺:虛擬機Ubuntu 18.04 x86_64

目標平臺:arm64

根文件系統版本:ubuntu-base-16.04.6-base-arm64

 

1.主機安裝qemu模擬器

sudo apt install qemu-user-static
mkdir rootfs                                                     //用於製作根文件系統的臨時目錄
sudo tar -xpf ubuntu-base-16.04.6-base-arm64.tar.gz -C rootfs    //解壓文件系統到臨時目錄

2.進入根文件系統並配置基礎環境

此時可以先修改臨時根文件系統內apt源地址爲國內,以便稍後的軟件安裝不至於太慢;不過此時的文件系統內可能沒有常用的文本編輯器,可以以現有源地址安裝vim之後再修改,也可以在主機端修改好後複製到臨時根目錄內,注意arm源地址目錄是/ubuntu-port/
配置文件地址:rootfs/etc/apt/source.list
推薦源地址:
https://mirrors.ustc.edu.cn/ubuntu-ports/
http://mirrors.aliyun.com/ubuntu-ports/

sudo cp -b /etc/resolv.conf rootfs/etc/                 //複製主機網絡配置
sudo cp /usr/bin/aemu-aarch64-static rootfs/usr/bin/    //複製qemu到臨時目錄,以便稍後可以交叉切換到臨時根目錄
sduo chroot rootfs                                      //切換到臨時根目錄,此時的操作作用於剛纔掛載的臨時根目錄

3.安裝所需軟件

apt update
apt upgrade
apt install vim git openssh-server ethtool net-tools ifupdown iputils-ping
apt install xubuntu-desktop    //按需安裝
安裝桌面時可能會因爲系統環境未定義系統語言,造成配置頁面亂碼,可以提前指定系統語言爲英文;
/etc/enviroment:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
也可以在chroot切換文件系統之前,手動賦值
LANG=C LANGUAGE=C

4.添加用戶及密碼

useradd -s '/bin/bash' -m -G adm,sudo userxxx
passwd userxxx
passwd root
apt clean
apt autoclean
exit

5.打包根文件系統

sudo tar cjvf ./ubuntu-16.04-desktop-rootfs.tar.bz2

6.製作根文件系統鏡像

dd if=/dev/zero of=linuxroot.img bs=1M count=2048    //生成鏡像文件
sudo mkfs.ext4 linuxroot.img                         //格式化鏡像
mkdir rootfsTemp                                     //鏡像臨時掛載目錄
sdudo mount linuxroot.img rootfsTemp/                //掛載
sudo cp -rfp rootfs/* rootfsTemp/                    //將製作好的根文件系統內文件拷貝到鏡像掛載的目錄
sudo umount rootfsTemp
e2fsck -p -f linuxroot.img
resize2fs -M linuxroot.img

若系統啓動後 df 查看磁盤容量未識別硬盤完整容量,則再次使用resize2fs擴展文件系統大小到硬盤分區真實值
sudo resize2fs /dev/xxx

7.調試筆記

1.locale:
    用於檢查系統的[locale setting]變量是否正確設置,常見於LC_xxx,LANG,LANGUAGE等的錯誤。
設置到[~/.bashrc],[/etc/default/locale],[/etc/enviroment]均可
2.glmark2-es2:
    嵌入式系統中用於測試GPU性能的工具
3.bash-completion:
    若ssh登陸發現終端命令無法補全,可以安裝此軟件包修復
4.lrzsz:
    xshell常用到的文件傳輸工具
5.libgbm.so.1:
    在刪除兩個軟件包(似乎是rockchip的gpu驅動庫)之後運行其他程序(glmark-es2)提示此lib丟失,使用locate 還能查找到文件路徑,而直接到目錄查看時卻沒有,應該是文件被刪除而沒有出發數據庫更新,最終使用強制重新安裝的方式修復:apt -reinstalll install libgbm1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章