一、簡介
arm開發板製作系統是比較麻煩,不論使用busybox還是yocto製作根檔案系統對新手都比太友好,除非深度定製,否則使用ubuntu系統既可以滿足,把更多的精力放在應用開發上。
二、準備材料
我使用的晶片是RK3288,小夥伴可以根據自己的情況選擇開發版。
開發環境:VMware
作業系統:ubuntu
開發版:RK3288
三、ubuntu的下載與配置
- 下載ubuntu系統
ubuntu官網根檔案系統下載地址 http://cdimage.ubuntu.com ,根據需要下載自己所需的版本,我使用的是ubuntu20.04.2。開啟連結後選擇ubuntu-base → releases → 版本號 → release → ubuntu-base-20.04.1-base-armhf.tar.gz 下載完成後將ubuntu-base-20.04.1-base-armhf.tar.gz拷貝到ubuntu下,並解壓。
mkdir ubuntu20.04.2
sudo tar zxf ubuntu-base-20.04.1-base-armhf.tar.gz -C ubuntu20.04.2
- 安裝qemu-user-static工具
安裝完成後拷貝“/usr/bin/qemu-arm-static”到剛剛解壓檔案的“/usr/bin”路徑下。
sudo apt-get install qemu-user-static
sudo cp /usr/bin/qemu-arm-static ubuntu20.04.2/usr/bin/
- 網路配置
我在上一篇文章中uboot通過NFS掛載ubuntu根檔案系統,介紹在ubuntu20.04.2/etc/apt/sources.list檔案中更改ubuntu的軟體源,不知道為啥這次配置後反而下載不了,所以這裡我就沒有配置,各位小夥伴視情況而定。為了製作成功的根檔案系統能夠聯網,可以直接拷貝本機的dns配置檔案到根檔案系統的相應位置。
sudo cp /etc/resolv.conf ubuntu20.04.2/etc/resolv.conf
- 使用chroot工具掛載檔案系統
掛載成功後會進入到我們下來的系統中,注意裡面的操作都是對我們掛載的系統進行操作的,無法在對開發系統進行操作,除非使用exit命令退出。
sudo chroot ubuntu20.04.2
- 安裝軟體
首先更新源,更新完成,安裝必要軟體,如有需要根據自己需求安裝所需的軟體即可,以下是我使用時需要的軟體。
apt-get update
apt-get upgrade
# 需要安裝的軟體
apt-get install sudo
apt-get install openssh-server
apt-get install vim
apt-get install net-tools
apt-get install iproute2
apt-get install udhcpc
apt-get install iputils-ping
- 使用者配置
設定root密碼
passwd root
建立使用者
adduser rk3288
設定主機名稱和本機IP
echo "rk3288" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.1.1 rk3288" >> /etc/hosts
- 設定串列埠和網路dhcp
因為沒有安裝桌面,所以這裡的配置要和核心中登入的串列埠的裝置對應,否則串列埠會卡死,無法登陸。
sudo vim /lib/systemd/system/serial-getty\@.service
修改BindsTo選項將‘dev-%i.device’改成‘dev-%i’,修改ExecStart選項將‘-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM’改成‘-/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM’
- 退出掛載
exit
四、打包跟檔案系統
不同的開發板需要的檔案格式不一樣,有的只需要將根檔案系統壓縮即可,是情況而定。RK3288需要的是.img格式,所以需要將根檔案系統打包成.img檔案,具體的操作方法我就不在介紹了,可以瞭解我之前文章linux下製作img檔案。
五、燒寫檔案
-
開啟瑞芯的燒寫軟體,檔案結構如圖所示
-
拷貝檔案系統到
\rockdev\Image路徑下 -
開啟AndroidTool_Release/AndroidTool.exe燒寫工具,並將rootfs替換成要燒寫的軟體
-
通過ota連線裝置,進入燒寫模式,這裡燒寫的是linux系統,所以和andriod系統的燒寫有所不同,具體如下
-
完成燒寫
五、網路測試
- 通過
sudo udhcpc
自動獲取網路
ifconfig
sudo udhcpc
- 開啟ssh登入
修改/etc/ssh/sshd_config檔案,
vim /etc/ssh/sshd_config
開啟PermitRootLogin和PasswordAuthentication。
重啟ssh服務
systemctl restart ssh
完成後就可以開啟ssh服務了
六、磁碟空間
- df(英文全稱:disk full):列出檔案系統的整體磁碟使用量
- du(英文全稱:disk used):檢查磁碟空間使用量
- fdisk:用於磁碟分割槽
- 檢視檔案系統的整體磁碟使用量
df -h
- 檢視磁碟分割槽
fdisk -l
- 用於列出所有可用塊裝置的資訊
sudo lsblk
從上面資訊可以看出來我整個空間有14G左右,但是檔案系統使用的空間只有4G左右,還有10G的空間未使用,所以現在需要將系統空間重新分配一下。
- 重新分配空間
從下圖中可以明顯看出來我整個空間有14G左右,而空間/dev/mmcblk2p5
掛載的是根檔案系統,並且空間有14.3G,但是通過df -h
檢視時只使用了4G左右,還有一部分空間未使用,所以只需要使用命令resize2fs
將/dev/mmcblk2p5空間重新分配一下即可。
重新分配根檔案空間
sudo resize2fs /dev/mmcblk2p5
到此在ARM架構中安裝ubuntu系統已經完成了,有寫得不好的地方望小夥伴們指出,我將努力學習並改進。
參考文獻
RK3288的ubuntu根檔案系統製作與配置:https://www.it610.com/article/1291557055815032832.htm
Linux平臺檢視、格式化、(開機自動)掛載未使用的磁碟空間https:<blog.csdn.net/rainforest_c/article/details/104986078>
resize2fs命令 – 調整檔案系統大小:https://www.linuxcool.com/resize2fs
Linux 磁碟管理:https://www.runoob.com/linux/linux-filesystem.html