ELF 2開發板基于瑞芯微RK3588高性能處理器設計,擁有四核ARM Cortex-A76與四核ARM Cortex-A55的CPU架構,主頻最高可達2.4GHz,內置6TOPS算力的NPU,這一設計讓它能夠輕松駕馭多種深度學習框架,高效處理各類復雜的AI任務。

ELF 2開發板已經適配了Linux 5.10及Elf2 Desktop 22.04操作系統,其中Elf2 Desktop 22.04系統是專為嵌入式設計的Ubuntu base。雖然其apt-get 等命令支持在線安裝軟件,但存在明顯缺陷:重新燒寫鏡像后軟件會丟失,需再次安裝。 這在批量部署多塊開發板時,工作量巨大。因此,將軟件預先集成到鏡像中,實現燒錄后無需重新安裝,成為亟待解決的問題。
本文將圍繞如何在 【RK3588】ELF 2開發板上基于 Ubuntu 22.04 操作系統進行根文件系統的定制展開詳細闡述。
1、 開發環境安裝QEMU
QEMU 是一款輕量級硬件模擬器,支持多種架構,如 ARM、x86 和 x86-64。 它應用廣泛,是 Xen 虛擬化平臺和 Android 模擬器等項目的底層基礎。在嵌入式領域,開發者常利用 QEMU 深入研究 Linux 系統,進行文件系統優化等工作。
下面我們開始在開發環境(需要開發環境能上網)中安裝QEMU,如下:
(1)更新下載源
elf@ubuntu:~sudo apt-getupdate
(2)執行命令安裝
elf@ubuntu:~sudo apt-getinstall qemu-user-static
2、文件系統掛載
將SDK中ELF 2 Desktop 文件系統鏡像jammy-rootfs.img進行掛載,掛載后可以被訪問操作。
(1)文件系統備份
操作前先對文件系統鏡像備份,如若操作出現異常,可回退使用最初鏡像。
elf@ubuntu:~$ cd work/ELF2-linux-source/ubuntu/ #SDK源碼路徑需修改為個人路徑
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ mkdir bak
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ cp jammy-rootfs.img bak/
(2)文件系統擴容
文件系統擴容的大小不超過根分區大小(默認根分區為14G)
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ e2fsck -f jammy-rootfs.img
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ resize2fs jammy-rootfs.img 3145728
resize2fs IMAGE SIZE
IMAGE為要修改的鏡像名稱;
SIZE為塊的數量,一個塊的大小為4K。
(例如擴容到12G,12G=12x1024x1024=12582912K=3145728x4K,SIZE參數為3145728)
(3)創建掛載目錄,并將文件系統掛載到該目錄
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ mkdir rootfs
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo mount jammy-rootfs.img rootfs/
3、修改配置
(1)將開發環境中的qemu-arm-static拷貝到desktop文件系統中
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
(2)將開發環境中的DNS配置拷貝到desktop文件系統中,因為安裝程序時要用絡
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$sudo cp -b /etc/resolv.conf rootfs/etc/resolv.conf
(3)修改下載源
$sudo vim rootfs/etc/apt/sources.list
添加:
deb http://ports.ubuntu.com/ubuntu-ports/ jammy main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main universe
4、文件系統隔離
通過chroot進行虛擬化隔離,將隔離步驟寫入到ch-mount.sh腳本中。
#!/bin/bash
function mnt() {
echo "MOUNTING"
sudo mount -t proc /proc ${2}proc
sudo mount -t sysfs /sys ${2}sys
sudo mount -o bind /dev ${2}dev
sudo chroot ${2}
}
function umnt() {
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev
}
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
umnt $1 $2
else
echo ""
echo "Either 1'st, 2'nd or both parameters were missing"
echo ""
echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m /media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
ch-mount.sh腳本放到ELF2-linux-source/ubuntu目錄下,賦予權限后,通過參數-m指定掛載路徑:
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo chmod a+x ch-mount.sh
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo ./ch-mount.sh -m rootfs/
root@ubuntu:/#
5、文件系統修改
前面我們掛載了文件系統,已將文件系統掛載到了QEMU模擬器,下面就可以安裝我們所需要的軟件了。
(1)更新下載源
root@ubuntu:/# apt update
(2)軟件安裝與卸載
至此,便可以安裝所需軟件了,在這里用apt-get安裝自己所需軟件,根據所需安裝。我們這里來安裝一個minicom串口測試工具。如下:
root@ubuntu:/# exit
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$
此外通過dpkg --list命令查看所有安裝的軟件,如果想裁剪文件系統,可以使用【apt-get remove 軟件包名稱】進行卸載相關軟件。
(3)安裝完成后,exit退出QEMU
root@ubuntu:/# exit
(4)執行ch-mount.sh腳本卸載文件系統,指定參數-u,后打印如下:
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo ./ch-mount.sh -u rootfs/
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo umount rootfs
6、打包鏡像
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ cd ..
elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh updateimg
在ELF2-linux-source/rockdev路徑下會生成新的update.img。
通過以上步驟,我們成功完成了 【RK3588】ELF 2開發板上進行根文件系統的定制工作,這一過程不僅簡化了批量生產中的軟件安裝流程,還顯著提升了開發效率。各位小伙伴如果在實踐過程遇見各種問題,歡迎隨時留言探討。
-
單片機
+關注
關注
6067文章
44969瀏覽量
649278 -
嵌入式
+關注
關注
5147文章
19619瀏覽量
316527 -
嵌入式開發板
+關注
關注
5文章
91瀏覽量
19151 -
Linux開發
+關注
關注
0文章
39瀏覽量
7297
發布評論請先 登錄
RK3588 EVB開發板原理圖講解【八】 RK3588 power Tree
RK3588 EVB 開發板介紹
瑞芯微旗艦芯RK3588開發板開售 比亞迪為應達利頒獎
【首發開箱】揭開RK3588開發板的神秘面紗!

rk3588有哪些開發板?
ElfBoard技術貼|【RK3588】ELF 2開發板開機自啟動詳解

評論