查看: 1006|回复: 0

[资料] 瑞米派Ubuntu系统移植指南-米尔RemiPi

[复制链接]
  • TA的每日心情

    2019-10-15 10:48
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2024-5-24 19:33:10 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 swiftman 于 2024-5-24 19:40 编辑

    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版本制作(下载地址如下),在此版本基础上添加了丰富的系统资源和其他软件资源。

    表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/ubunt ... 4-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:
    2.png
    图4-1:lxde登录界面

    登录成功后,由于默认背景是黑色的,可以点击鼠标右键后选择Desktop Preferences->Appearance->Wallpaper(/usr/share/lxde/wallpapers/lxde_blue.jpg)来选择背景图片,如图4-2:
    3.png
    图4-2:lxde背景图片修改

    背景图片修改成功,如图4-3:
    4.png
    图4-3:lxde背景图片

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 04:16 , Processed in 0.133022 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.