米爾瑞米派Remi Pi Ubuntu系統移植指南

myfeiyang發表於2024-05-24

1.概述

Linux系統平臺上有許多開源的系統構建框架,這些框架方便了開發者進行嵌入式系統的構建和定製化開發,目前比較常見的有Buildroot, Yocto, OpenEmbedded等等。

同時更多的傳統的桌面系統也加入到嵌入式環境體系中,如Ubuntu,debian等,為嵌入式提供更方便實用的系統。本文主要介紹基於ubuntu22.04 core和米爾核心板定製一個完整的嵌入式ubuntu22.04系統的完整流程,其中包括開發環境的準備,ubuntu22.04系統的獲取與移植, LXDE輕量級桌面管理等。

本文件並不包含Linux BSP系統相關基礎知識的介紹,將直接使用米爾釋出的myir-image-full提供的的BSP。如需瞭解BSP檔案的製作請檢視《Remi Pi_Linux軟體開發指南

1.1. 軟體資源

Remi Pi使用的Ubuntu系統基於ubuntu-base-22.04-base-arm64.tar.gz版本製作(下載地址如下),在此版本基礎上新增了豐富的系統資源和其他軟體資源。

Ubuntu Base 22.04.2 LTS (Jammy Jellyfish)

表1-1.資源列表

功能項

檔名

Ubuntu22.04 base

ubuntu-base-22.04-base-arm64.tar.gz

啟動管理

Xinit

網路管理

network-manager

network-manager-gnome

⾳頻管理

xine

影片播放器

xine

注意:米爾提供的ubuntu系統的登入名為:root 密碼為:123456

2. 開發環境準備

基於ubuntu base系統在開發過程中所需的一些軟硬體環境,包括必要的開發主機環境,必備的軟體工具,程式碼和資料的獲取等,具體的準備工作下面將進行詳細介紹。

2.1. 開發主機環境

本節將介紹如何搭建適用於瑞薩Remi Pi平臺的開發環境,該平臺使用的RZ/G系列處理器是多核異構的處理器,RZ/G2L擁有兩個2個ARM Cortex A53。透過閱讀本章節,您將瞭解相關硬體工具,軟體開發除錯工具的安裝和使用。並能快速的搭建相關開發環境,為後面的開發和除錯做準備。

  • 主機硬體

整個SDK包專案的構建對開發主機的要求比較高,要求處理器具有雙核以上CPU,8GB以上 記憶體,100GB硬碟或更高配置。可以是安裝Linux系統的PC或伺服器,也可以是執行Linux系統的虛擬機器,Windows系統下的WSL2等。

  • 主機作業系統

一般選擇在安裝Fedora, openSUSE, Debian, Ubuntu, RHEL或者 CentOS等Linux發行版的本地主機上進行,這裡推薦的是Ubuntu22.04 64bit桌面版系統,後續開發也是以此係統為例進行介紹。

  • 安裝必備軟體包

基礎軟體包請檢視《Remi Pi_Linux軟體開發指南》進行安裝,這裡只需安裝一個軟體包即可。

PC@system1:~$  sudo apt-get update
PC@system1:~$ sudo apt-get install qemu-user-static

3. Ubuntu 22.04 檔案系統移植

3.1. 簡介

ubuntu-base 是Ubuntu官方構建的ubuntu最小檔案系統,包含debain軟體包管理器,基礎包大小通常只有幾十兆,其背後有整個ubuntu軟體源支援,ubuntu軟體一般穩定性比較好,基於ubuntu-base按需安裝Linux軟體,深度可定製等,常用於嵌入式rootfs構建。

嵌入式常見的幾種檔案系統構建方法:busybox、yocto、buildroot,但Ubuntu方便,強大的包管系統,有強大的社群支援,可以直接apt-get install來安裝新軟體包。本文介紹瞭如何基於Ubuntu-base構建完整的ubuntu 系統。ubuntu支援很多架構,arm、X86、powerpc、ppc等,本文主要基於arm為例,構建一個較為完整的ubuntu系統。

3.2. 獲取原始碼

我們提供兩種獲取原始碼的方式,一種是直接從米爾光碟映象04-sources目錄中獲取壓縮包,另外一種是使用wget獲取位官方的上原始碼進行構建,請使用者根據實際需要選擇其中一種進行構建。

3.2.1. 透過wget獲取原始碼

具體操作方法如下:

PC@system1:~$ sudo wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz

建立rootfs目錄,然後將下載的ubuntu-base-22.04-base-arm64.tar.gz壓縮包解壓到rootfs目錄下:(使用者請根據自己實際路徑和目錄操作)

PC@system1:~$ mkdir rootfs
PC@system1:~$ tar -xf ubuntu-base-22.04.1-base-arm64.tar.gz -C rootfs/

解壓出的目錄內容如下:

PC@system1:~$ tree -d -L 1 rootfs
ubuntu_rootfs
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
└── var

3.3. 準備chroot環境

3.3.1. 安裝模擬器

PC@system1:~$ cp /usr/bin/qemu-aarch64-static ./rootfs/usr/bin/

(如果主機沒有安裝qemu-user-static工具包,可輸入以下命令安裝工具包)

PC@system1:~$ sudo apt install qemu-user-static

複製主機 DNS 配置檔案到 arm 架構 Ubuntu 檔案系統內(必須複製,否則可能會導致下面操作無法進行)。

PC@system1:~$ cp /etc/resolv.conf ./rootfs/etc/resolv.conf

3.3.2. 製作掛載指令碼

將下列指令碼程式碼複製到ch-mount.sh檔案中,並改變許可權(777)為可執行。

PC@system1:~$  vi 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 mount -o bind /dev/pts ${2}dev/pts
sudo chroot ${2}
}
function umnt(){
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev/pts
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 bothparameters were missing"
echo ""
echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m/media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi

3.4. 安裝包檔案

3.4.1. 掛載系統

首先使用ch-mount.sh將ubuntu檔案系統掛載。

PC@system1:~$ ./ch-mount.sh -m ./rootfs/
MOUNTING
root@system1:/#
root@system1:/# ls
bin dev home media opt root sbin sys usr
boot etc lib mnt proc run srv tmp var

掛載成功即可配置ubuntu檔案系統與安裝一些必要的軟體。

3.4.2. 基礎包安裝

可根據需要自行安裝下列包檔案,推薦全部安裝。(請按照順序安裝,避免安裝時出錯)

root@system1:/# chmod 777 /tmp         (避免update時失敗)
root@system1:/# apt update
root@system1:/# apt-get install language-pack-zh-hant language-pack-zh-hans
root@system1:/# apt install language-pack-en-base
root@system1:/# apt install dialog rsyslog
root@system1:/# apt install systemd avahi-daemon avahi-utils udhcpc ssh(必備安裝)
root@system1:/# apt install sudo
root@system1:/# apt install vim
root@system1:/# apt install net-tools
root@system1:/# apt install ethtool
root@system1:/# apt install ifupdown
root@system1:/# apt install iputils-ping
root@system1:/# apt install htop
root@system1:/# apt install lrzsz
root@system1:/# apt install gpiod
root@system1:/# apt install wpasupplicant
root@system1:/# apt install kmod
root@system1:/# apt install iw
root@system1:/# apt install usbutils
root@system1:/# apt install memtester
root@system1:/# apt install alsa-utils
root@system1:/# apt install ufw
root@system1:/# apt install psmisc

新增log,使用者除錯ubuntu系統的除錯

root@system1:/# touch /var/log/rsyslog
root@system1:/# chown syslog:adm /var/log/rsyslog
root@system1:/# chmod 666 /var/log/rsyslog
root@system1:/# systemctl unmask rsyslog
root@system1:/# systemctl enable rsyslog

安裝網路和語言包支援

root@system1:/# apt-get install synaptic
root@system1:/# apt-get install rfkill
root@system1:/# apt-get install network-manager
root@system1:/# apt install -y --force-yes --no-install-recommends fonts-wqy-microhei
root@system1:/# apt install -y --force-yes --no-install-recommends ttf-wqy-zenhei

3.4.3. 桌面系統的安裝

LXDE桌面系統安裝

root@system1:/# apt-get install xinit
root@system1:/# apt-get install lxde

瀏覽器和音訊安裝

root@system1:/# sudo apt install epiphany-browser
root@system1:/# sudo apt install xine-ui

3.4.4. 建立使用者

設定root密碼: 123456

root@system1:/# passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

可刪除root使用者密碼登入

root@system1:/# passwd -d root

一定要執行下面的指令,不然會sudo報錯sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

root@system1:/# chown root:root /usr/bin/sudo
root@system1:/# chmod 4755 /usr/bin/sudo

建立一個使用者名稱為:myir 密碼為:123456

root@system1:/# adduser myir
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "zh_CN.UTF-8",
LC_IDENTIFICATION = "zh_CN.UTF-8",
LC_TELEPHONE = "zh_CN.UTF-8",
LC_NUMERIC = "zh_CN.UTF-8",
LC_ADDRESS = "zh_CN.UTF-8",
LC_NAME = "zh_CN.UTF-8",
LC_MONETARY = "zh_CN.UTF-8",
LC_PAPER = "zh_CN.UTF-8",
LC_MEASUREMENT = "zh_CN.UTF-8",
LANG = "zh_CN.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Adding user `myir' ...
Adding new group `myir' (1000) ...
Adding new user `myir' (1000) with group `myir' ...
Creating home directory `/home/myir' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for myir
Enter the new value, or press ENTER for the default
Full Name []: cy
Room Number []: 604
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

設定許可權

sudo vi /etc/sudoers
root ALL=(ALL:ALL) ALL
myir(根據自己新增的使用者來新增) ALL=(ALL:ALL) ALL

上面新增使用者的時候,中間出現的警告可使用下列命令:

root@system1:/# export LC_ALL=C

3.4.5. 其他配置

設定hosts和主機名稱,新增127.0.0.1 myir

root@system1:/# vi /etc/hosts

清空hostname檔案內容,新增myir(根據實際新增的使用者名稱來新增)

root@system1:/# vi /etc/hostname

修改passwd檔案

root@system1:/# vi /etc/passwd
找到這一行:_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
修改為:_apt:x:0:65534::/nonexistent:/usr/sbin/nologin

建立連結檔案(一定要執行,不然執行二進位制可執行程式時會報錯)

root@system1:/# ln -s /lib /lib64

配置網路卡介面,新增如下內容

root@system1:/# vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp

3.4.6. 解除安裝系統

以上步驟操作完成後即可解除安裝系統。直接在系統中輸入exit退出系統,並使用命令來解除安裝

root@system1:/# exit
exit
PC@system1:~$
PC@system1:~$ ./ch-mount.sh -u ubuntu-rootfs/
UNMOUNTING

至此ubuntu 檔案系統已經配置完成。

3.5. ubuntu系統打包

3.5.1. 製作ext4格式檔案

根據以上步驟已經制作好了ubuntu-rootfs檔案系統,此時要將它製作成.ext4格式的檔案,用於刷寫到開發板中。

PC@system1:~$ dd if=/dev/zero of=ubuntu22.04.ext4  bs=1M  count=3300

請使用者根據實際情況來決定大小,這裡以3.3G大小舉例製作。

PC@system1:~$ mkfs.ext4 ubuntu22.04.ext4

建立一個臨時目錄temp,然後將ubuntu22.04.ext4檔案掛載

PC@system1:~$ mkdir temp
PC@system1:~$ sudo mount ubuntu22.04.ext4 temp

將ubuntu-rootfs目錄中的內容複製到掛載的檔案系統中,然後解除安裝。

PC@system1:~$ sudo cp -avrf ubuntu-rootfs/* temp
PC@system1:~$ sudo umount temp

3.5.2. 製作SD啟動映象

先將下載資源的03_Tools/myir tools目錄下的RemiPi_SDUpdate.tar.bz2解壓到虛擬機器中(使用者請根據自己實際情況解壓)

PC@system1:~$ tar -xf RemiPi_SDUpdate.tar.bz2
PC@system1:~$ cd RemiPi_SDUpdate/renesas-sd
PC@system1:~/RemiPi_SDUpdate/renesas-sd$ ls
image README.md rzg2_bsp_scripts fat16 output rootfs

把打包好的ubuntu22.04檔案系統替換到rootfs/home/root/g2l_images目錄

PC@system1:~/RemiPi_SDUpdate/renesas-sd/rootfs/home/root/g2l_images$ tree -L 1
.
├── DDR_1G
├── Image
├── Manifest
├── mys-rzg2l-sdcard.dtb
├── mys-rzg2l-wifi.dtb
└── ubuntu22.04.ext4
1 directory, 5 files

修改Manifest檔案

PC@system1:~/RemiPi_SDUpdate/renesas-sd/rootfs/home/root/g2l_images$ cat Manifest
bl2file="bl2_bp-myir-remi-1g_pmic.bin"
fipfile="fip-myir-remi-1g_pmic.bin"
imagefile="Image"
dtbfile="*.dtb"
rootfsfile="ubuntu22.04.ext4"
ledname="162"

修改自己實際路徑的配置,這個請參考《RemiPi_Linux 軟體開發指南》4.3章節,修改myir_config.ini配置檔案,將裡面的路徑修改成自己實際的路徑。

最後進入到下面目錄,執行製作映象的指令碼即可。

PC@system1:~/RemiPi_SDUpdate/renesas-sd$ cd rzg2_bsp_scripts/image_creator/
PC@system1: ~/RemiPi_SDUpdate/renesas-sd/rzg2_bsp_scripts/image_creator$ ./create_image.sh myir_config.ini

燒錄步驟請參考《RemiPi_Linux 軟體開發指南》中4.2章節。

4. 認識LXDE

4.1. LXDE介紹

LXDE是一個輕量級和快速的桌面環境。它被設計為使用者友好和佔用資源少,同時保持資源使用率低。LXDE使用更少的記憶體和CPU來儘可能地展現功能豐富的桌面環境。與其它的桌面環境不同,LXDE努力成為模組化的桌面環境,所以每個元件可以獨立使用。這使得移植LXDE不同分佈和平臺更容易。

LXDE包含多個核心元件,可用於桌面環境下來管理整個系統資源。主要元件如下:

  • LXPanel:這是LXDE的皮膚系統,類似於GNOME的GNOME Panel或KDE的Kicker。它提供了快速訪問應用程式、系統工具、資料夾和剪貼簿的方式。

  • LXSession:這是LXDE的會話管理器,它負責啟動和終止LXDE桌面環境。

  • LXDE-OpenBox: 這是一個視窗管理器,提供視窗布局和導航。LXDE使用OpenBox作為其預設的視窗管理器。

  • PCManFM:這是一個輕量級的檔案管理器,提供檔案和目錄的瀏覽、複製、移動、刪除等操作

除了這些核心元件外,LXDE還有其他一些輔助工具,如LXAppearance(用於更改主題和圖示)、LXTask(工作管理員)等。

4.2. 啟動LXDE

開機啟動後,可手動輸入密碼123456登入,或者在串列埠終端執行(startx /usr/bin/lxsession -s LXDE &)命令進行登入,如圖4-1:

圖4-1:lxde登入介面

登入成功後,由於預設背景是黑色的,可以點選滑鼠右鍵後選擇Desktop Preferences->Appearance->Wallpaper(/usr/share/lxde/wallpapers/lxde_blue.jpg)來選擇背景圖片,如圖4-2:

圖4-2:lxde背景圖片修改

背景圖片修改成功,如圖4-3:

圖4-3:lxde背景圖片

5. 參考資料

  • Linux kernel 開源社群

https://www.kernel.org/

  • ubuntu

http://cdimage.ubuntu.com/ubuntu-base/releases/18.04.5/release/

  • freedesktop

https://www.freedesktop.org/wiki/

相關文章