• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板上進(jìn)行根系統(tǒng)的定制

9小時(shí)前
288
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

ELF 2開發(fā)板基于瑞芯微RK3588高性能處理器設(shè)計(jì),擁有四核ARM Cortex-A76與四核ARM Cortex-A55的CPU架構(gòu),主頻最高可達(dá)2.4GHz,內(nèi)置6TOPS算力的NPU,這一設(shè)計(jì)讓它能夠輕松駕馭多種深度學(xué)習(xí)框架,高效處理各類復(fù)雜的AI任務(wù)。

ELF 2開發(fā)板已經(jīng)適配了Linux 5.10及Elf2 Desktop 22.04操作系統(tǒng),其中Elf2 Desktop 22.04系統(tǒng)是專為嵌入式設(shè)計(jì)的Ubuntu base。雖然其apt-get 等命令支持在線安裝軟件,但存在明顯缺陷:重新燒寫鏡像后軟件會(huì)丟失,需再次安裝。 這在批量部署多塊開發(fā)板時(shí),工作量巨大。因此,將軟件預(yù)先集成到鏡像中,實(shí)現(xiàn)燒錄后無需重新安裝,成為亟待解決的問題。

本文將圍繞如何在 【RK3588】ELF 2開發(fā)板上基于 Ubuntu 22.04 操作系統(tǒng)進(jìn)行根文件系統(tǒng)的定制展開詳細(xì)闡述。

1、 開發(fā)環(huán)境安裝QEMU

QEMU 是一款輕量級(jí)硬件模擬器,支持多種架構(gòu),如 ARM、x86 和 x86-64。 它應(yīng)用廣泛,是 Xen 虛擬化平臺(tái)和 Android 模擬器等項(xiàng)目的底層基礎(chǔ)。在嵌入式領(lǐng)域,開發(fā)者常利用 QEMU 深入研究 Linux 系統(tǒng),進(jìn)行文件系統(tǒng)優(yōu)化等工作。

下面我們開始在開發(fā)環(huán)境(需要開發(fā)環(huán)境能上網(wǎng))中安裝QEMU,如下:

(1)更新下載源

elf@ubuntu:~ sudo apt-get update

(2)執(zhí)行命令安裝

elf@ubuntu:~ sudo apt-get install qemu-user-static

2、文件系統(tǒng)掛載

SDK中ELF 2 Desktop 文件系統(tǒng)鏡像jammy-rootfs.img進(jìn)行掛載,掛載后可以被訪問操作。

(1)文件系統(tǒng)備份

操作前先對(duì)文件系統(tǒng)鏡像備份,如若操作出現(xiàn)異常,可回退使用最初鏡像。

elf@ubuntu:~$ cd work/ELF2-linux-source/ubuntu/   #SDK源碼路徑需修改為個(gè)人路徑
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ mkdir bak
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ cp jammy-rootfs.img bak/

(2)文件系統(tǒng)擴(kuò)容

文件系統(tǒng)擴(kuò)容的大小不超過根分區(qū)大小(默認(rèn)根分區(qū)為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為塊的數(shù)量,一個(gè)塊的大小為4K。

(例如擴(kuò)容到12G,12G=12x1024x1024=12582912K=3145728x4K,SIZE參數(shù)為3145728)

(3)創(chuàng)建掛載目錄,并將文件系統(tǒng)掛載到該目錄

elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ mkdir rootfs
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo mount jammy-rootfs.img rootfs/

3、修改配置

(1)將開發(fā)環(huán)境中的qemu-arm-static拷貝到desktop文件系統(tǒng)中

elf@ubuntu:~/work/ELF2-linux-source/ubuntu$ sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/

(2)將開發(fā)環(huán)境中的DNS配置拷貝到desktop文件系統(tǒng)中,因?yàn)榘惭b程序時(shí)要用絡(luò)

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、文件系統(tǒng)隔離

通過chroot進(jìn)行虛擬化隔離,將隔離步驟寫入到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目錄下,賦予權(quán)限后,通過參數(shù)-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、文件系統(tǒng)修改

前面我們掛載了文件系統(tǒng),已將文件系統(tǒng)掛載到了QEMU模擬器,下面就可以安裝我們所需要的軟件了。

(1)更新下載源

root@ubuntu:/# apt update

(2)軟件安裝與卸載

至此,便可以安裝所需軟件了,在這里用apt-get安裝自己所需軟件,根據(jù)所需安裝。我們這里來安裝一個(gè)minicom串口測試工具。如下:

root@ubuntu:/# apt-get install minicom

此外通過dpkg --list命令查看所有安裝的軟件,如果想裁剪文件系統(tǒng),可以使用【apt-get remove 軟件包名稱】進(jìn)行卸載相關(guān)軟件。

(3)安裝完成后,exit退出QEMU

root@ubuntu:/# exit
elf@ubuntu:~/work/ELF2-linux-source/ubuntu$

(4)執(zhí)行ch-mount.sh腳本卸載文件系統(tǒng),指定參數(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路徑下會(huì)生成新的update.img。

通過以上步驟,我們成功完成了 【RK3588】ELF 2開發(fā)板上進(jìn)行根文件系統(tǒng)的定制工作,這一過程不僅簡化了批量生產(chǎn)中的軟件安裝流程,還顯著提升了開發(fā)效率。各位小伙伴如果在實(shí)踐過程遇見各種問題,歡迎隨時(shí)留言探討。

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦