0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Ubuntu系统迁移指南:轻松驾驭国产3568嵌入式实验箱

创龙教仪 2024-10-29 08:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

94ec2274-9589-11ef-8084-92fbcf53809c.png

本文基于创龙教仪 TL3568-PlusTEB 嵌入式教学实验箱实现 ubuntu 系统移植。

瑞芯微平台提供的SDK支持buildroot、Debian、yocto,但Ubuntu需要自行定制文件系统。

本文详细介绍了如何在Ubuntu虚拟机中使用ubuntu-base构建根文件系统,包括设置软件源、配置DNS、安装必要软件和桌面环境,以及修改系统配置。以及如何打包镜像文件,并将其烧录到瑞芯微RK3568开发板上,涉及挂载、格式化、修复和调整镜像大小的步骤。

Ubuntu 系统简介

Ubuntu是一个以桌面应用为主的Linux发行版操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。

Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了GNOME桌面环境,改为Unity。

此前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。Ubuntu也拥有庞大的社区力量,用户可以方便地从社区获得帮助。自Ubuntu 18.04 LTS起,Ubuntu发行版重新开始使用GNOME3桌面环境。


95139eee-9589-11ef-8084-92fbcf53809c.png


ubuntu-base 构建根文件系统

1.获取 ubuntu

在ubuntu官网获取 ubuntu-base-18.04.5-base-arm64.tar.gz,创龙教仪提供对应的文件:

952498a2-9589-11ef-8084-92fbcf53809c.png

2.解压、拷贝文件

执行以下命令将文件拷贝到ubuntu虚拟机,新建目录,解压:

mkdir ubuntu_rootfs

sudo tar -xpf ubuntu-base-18.04.5-base-arm64.tar.gz -C ubuntu_rootfs/

3.安装qemu-user-static

qemu-user-static是一个仿真器,可以选取arm64配置文件仿真开发板运行环境,然后挂载下载的ubuntu-base文件,从而构建ubuntu文件系统:

sudo apt install qemu-user-static

由于下载的ubuntu-base是aarch64架构的,因此需要拷贝 qemu-aarch64-static到ubuntu_rootfs/usr/bin/下:

sudo cp /usr/bin/qemu-aarch64-static ubuntu_rootfs/usr/bin

4.设置软件源

需要注意的是,这里要用 ARM 源,不能复制我们本机的源:

sudo vim ./ubuntu_rootfs/etc/apt/sources.list

这里我们选择华为国内下载源,如下图所示:

9532e29a-9589-11ef-8084-92fbcf53809c.png

5.配置DNS

为了可以联网更新软件,我们拷贝本机的dns配置文件到根文件系统:

sudo cp /etc/resolv.conf ubuntu_rootfs/etc/resolv.conf

然后在/etc/resolv.conf文件中添加dns

sudo vim ./ubuntu_rootfs/etc/resolv.conf

添加内容如下:

如下图所示:

nameserver 8.8.8.8

nameserver 114.114.114.114

954c48ac-9589-11ef-8084-92fbcf53809c.png

6.挂载ubuntu-base文件系统

编写挂载脚本:

#!/bin/bash

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}

}

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 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

增加脚本执行权限:

sudo chmod +x mount.sh

挂载文件系统:

bash mount.sh -m ubuntu_rootfs/

7. 安装必要软件

apt-get update

apt-get install net-tools

apt-get install ethtool

apt-get install ifupdown

apt-get install psmisc

apt-get install nfs-common

apt-get install htop

apt-get install vim

apt-get install rsyslog

apt-get install iputils-ping

apt-get install language-pack-en-base

apt-get install sudo

apt-get install network-manager

8. 安装桌面环境

apt-get install ubuntu-desktop

9. 修改root用户密码

为了方便,我们可以把密码也设置为:

tronlong

passwd root

10. 添加新用户

adduser tronlong

需要输入用户的一些信息,也可以直接回车保留默认值即可:

11. 新用户使用sudo命令

默认情况下新用户是不能使用 sudo 命令的,我们需要修改/etc/sudoers 文件。

/etc/sudoers 文件默认是只读的,因此需要先修改此文件的写权限,使用如下命令:

chmod u+w /etc/sudoers

然后使用 vim 打开/etc/sudoers,找到“root ALL=(ALL:ALL) ALL”这一行,在这一行下面添加:

vim /etc/sudoers

tronlong ALL=(ALL:ALL) ALL

修改完成以后保存退出,重新恢复/etc/sudoers 的只读属性,使用如下命令:

chmod u-w /etc/sudoers

12. 设置主机名称和IP

echo "rk3568" > /etc/hostname

echo "127.0.0.1 localhost" >> /etc/hosts

echo "127.0.0.1 rk3568" >> /etc/hosts

13. 配置DHCP

我们配置一下网络 DHCP,这样系统启动以后就会自动设置好网络

RK3568默认有两个网卡:

网卡eth0:

echo auto eth0 > /etc/network/interfaces.d/eth0

echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0

网卡eth1:

echo auto eth1 > /etc/network/interfaces.d/eth1

echo iface eth1 inet dhcp >> /etc/network/interfaces.d/eth1

在实际测试中网口必须接入网线系统才能正常启动,就是在不联网的情况下,每次开机都要等待很久,卡在网络连接上5分钟,这里我们可以修改下面这个文件:

vim /lib/systemd/system/networking.service

将里面的TimeoutStartSec=5min 修改为:

TimeoutStartSec=10sec

14. 修改系统重启默认等待时间

重启开发板的时候,如果有进程没有结束,系统就会等待,默认等待时间很长,导致重启速度慢。

我们可以修改默认等待时间:


vim /etc/systemd/system.conf

找到这几行:

#DefaultTimeoutStartSec=90s

#DefaultTimeoutStopSec=90s

#DefaultTRestartSec=100ms

解除注释并将 DefaultTimeoutStopSec=90s 改为:

DefaultTimeoutStopSec=1s


保存退出

15. 设置开机免密登录到图形界面

我们使用以下命令修改 50-ubuntu.conf 文件:


vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

在文件末尾加入以下内容,添加完成如下图所示:

greeter-show-manual-login=true

all-guest=false

9564bd60-9589-11ef-8084-92fbcf53809c.png

修改完成后保存退出,然后输入以下命令修改 gdm-autologin 文件内容,修改完成如下图所示:


vim /etc/pam.d/gdm-autologin

9577e34a-9589-11ef-8084-92fbcf53809c.png

接着输入以下命令修改 gdm-password 文件内容,修改完成如下图所示:

vim /etc/pam.d/gdm-password

958c9c54-9589-11ef-8084-92fbcf53809c.png

然后输入以下命令修改/root/.profile 文件:


vim /root/.profile

将文件最后一行改为以下内容,修改完成如下图所示:

tty -s && mesg n || true

95a3a5d4-9589-11ef-8084-92fbcf53809c.png

然后输入以下命令修改 custom.conf 文件:

vim /etc/gdm3/custom.conf

到文件末尾添加以下内容,添加完成如下图所示(红框部分):

[daemon]

AutomaticLoginEnable=true

AutomaticLogin=root

TimedLoginEnable=true

TimedLogin=root

TimedLoginDelay=10

95b39a3e-9589-11ef-8084-92fbcf53809c.png

17. 禁用系统休眠

查看:

sudo systemctl status sleep.target

禁用:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

18. 卸载文件系统

退出仿真环境:

exit

卸载文件系统:

bash mount.sh -u ubuntu_rootfs/

三、打包镜像文件

18. 创建空镜像文件

大小为20480MB(大概20G左右,注意这里需要根据实际EMMC的大小进行修改,以我的为例子是32G版本的EMMC):


dd if=/dev/zero of=ubuntu_rootfs.img bs=1M count=20480

19. 将该文件格式化成ext4文件系统

mkfs.ext4 ubuntu_rootfs.img

20.镜像文件挂载

将该镜像文件挂载到一个空的文件夹上,然后将ubuntu_rootfs的文件复制到该空文件夹中:


mkdir ubuntu_base_rootfs

sudo mount ubuntu_rootfs.img ubuntu_base_rootfs

sudo cp -rfp ubuntu_rootfs/* ubuntu_base_rootfs/

21.修复镜像文件

复制完后用e2fsck修复及检测镜像文件系统,resize2fs 减小镜像文件的大小:

sudo umount ubuntu_base_rootfs/

e2fsck -p -f ubuntu_rootfs.img

22.修改文件夹名称

将ubuntu_rootfs.img拷贝到SDK的rockdev文件夹,并将ubuntu_rootfs.img改名为rootfs.img:

95c8a046-9589-11ef-8084-92fbcf53809c.png

23.修改parameter.txt文件

这里需要注意要根据实际的emmc大小进行修改,以我为例子是32G版本的EMMC:


修改前:

95d6db84-9589-11ef-8084-92fbcf53809c.png

修改后

95e8ed42-9589-11ef-8084-92fbcf53809c.png

0x03200000@0x00058000(rootfs),0x00040000@0x03258000(oem),0x00010000@0x03298000(amp),-@0x032a8000(userdata:grow)

@之前是大小,@之后的是地址

每0x100000为512MB,那么我这里rootfs分配的为25G.当然修改了前面的,后面的oem,amp,userdata的起始地址也需要需改。

然后回到SDK,运行./build.sh updateimg

9618db10-9589-11ef-8084-92fbcf53809c.png

9627a65e-9589-11ef-8084-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20153

    浏览量

    328937
  • Ubuntu
    +关注

    关注

    5

    文章

    603

    浏览量

    32889
  • 实验箱
    +关注

    关注

    0

    文章

    70

    浏览量

    9518
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式Linux新手入门:为什么迅为RK3568+迅为资料是黄金组合

    嵌入式Linux新手入门:为什么迅为RK3568+迅为资料是黄金组合
    的头像 发表于 11-04 14:05 254次阅读
    <b class='flag-5'>嵌入式</b>Linux新手入门:为什么迅为RK<b class='flag-5'>3568</b>+迅为资料是黄金组合

    嵌入式入门必看!迅为RK3568 V2.0升级,新手也能轻松玩转

    嵌入式入门必看!迅为RK3568 V2.0升级,新手也能轻松玩转
    的头像 发表于 10-28 13:26 189次阅读
    <b class='flag-5'>嵌入式</b>入门必看!迅为RK<b class='flag-5'>3568</b> V2.0升级,新手也能<b class='flag-5'>轻松</b>玩转

    挖到宝了!人工智能综合实验,高校新工科的宝藏神器

    和深度至关重要。这款实验涵盖了9门课程,包括Python程序设计、机器学习、机器视觉、深度学习、深度视觉、数字图像处理、嵌入式系统及应用、语音识别与传感器、基于视觉的机器人应用。从基
    发表于 08-07 14:30

    挖到宝了!比邻星人工智能综合实验,高校新工科的宝藏神器!

    和深度至关重要。这款实验涵盖了9门课程,包括Python程序设计、机器学习、机器视觉、深度学习、深度视觉、数字图像处理、嵌入式系统及应用、语音识别与传感器、基于视觉的机器人应用。从基
    发表于 08-07 14:23

    RK3568开发板暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞凌嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32位应用,并使其能够在飞凌
    的头像 发表于 07-19 08:49 4188次阅读
    RK<b class='flag-5'>3568</b>开发板暗藏32位兼容开关?飞凌<b class='flag-5'>嵌入式</b>带你一键解锁!

    基于RK3588,飞凌教育品牌ElfBoard推出嵌入式人工智能实验EDU-AIoT ELF 2

    飞凌嵌入式教育品牌ElfBoard立足产业前沿,重磅推出嵌入式人工智能实验EDU-AIoT ELF 2,以“软硬协同、产教融合”为设计理念,为高校人工智能人才培养提供全链路解决方案。
    的头像 发表于 06-13 16:12 1146次阅读
    基于RK3588,飞凌教育品牌ElfBoard推出<b class='flag-5'>嵌入式</b>人工智能<b class='flag-5'>实验</b><b class='flag-5'>箱</b>EDU-AIoT ELF 2

    【RK3588】嵌入式人工智能实验——智启高校产教融合新平台

    在AIoT技术驱动产业变革的浪潮中,嵌入式人工智能已成为工业物联网、智慧交通、智慧医疗等领域创新突破的关键引擎。飞凌嵌入式教育品牌ElfBoard立足产业前沿,重磅推出嵌入式人工智能实验
    的头像 发表于 06-11 14:29 1352次阅读
    【RK3588】<b class='flag-5'>嵌入式</b>人工智能<b class='flag-5'>实验</b><b class='flag-5'>箱</b>——智启高校产教融合新平台

    迅为RK3568驱动指南GPIO子系统 GPIO操作函数实验

    迅为电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1046次阅读
    迅为RK<b class='flag-5'>3568</b>驱动<b class='flag-5'>指南</b>GPIO子<b class='flag-5'>系统</b> GPIO操作函数<b class='flag-5'>实验</b>

    【新品发布】嵌入式人工智能实验EDU-AIoT ELF 2正式发布

    在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard,特别推出嵌入式人工智能
    的头像 发表于 05-27 14:01 888次阅读
    【新品发布】<b class='flag-5'>嵌入式</b>人工智能<b class='flag-5'>实验</b><b class='flag-5'>箱</b>EDU-AIoT ELF 2正式发布

    【RK3588新品】嵌入式人工智能实验EDU-AIoT ELF 2发布

    在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard特别推出嵌入式人工智能
    的头像 发表于 05-23 16:02 829次阅读
    【RK3588新品】<b class='flag-5'>嵌入式</b>人工智能<b class='flag-5'>实验</b><b class='flag-5'>箱</b>EDU-AIoT ELF 2发布

    嵌入式开发,如何选择适合的系统

    嵌入式ARM开发中,面对多种操作系统的选择,如何做出最适合项目的决策?本文将为您梳理常见系统的特性,帮助您快速了解它们的优缺点,以便更好地选择适合的系统。引言在
    的头像 发表于 05-20 11:32 910次阅读
    <b class='flag-5'>嵌入式</b>开发,如何选择适合的<b class='flag-5'>系统</b>?

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式
    发表于 05-15 09:29

    嵌入式主板开发详细指南

    嵌入式主板开发涉及硬件设计、软件集成、系统优化等多个环节,需要结合具体应用场景进行深度定制。以下是嵌入式主板开发的详细指南,涵盖关键步骤、工具、挑战及实际案例:一、开发流程与关键步骤1
    的头像 发表于 04-02 11:35 938次阅读
    <b class='flag-5'>嵌入式</b>主板开发详细<b class='flag-5'>指南</b>

    嵌入式系统开发圣经【干货】

    主管、系统设计分析人员及欲进入该领域的工程师。是一本开发嵌入式系统产品必备的入门圣经,进入嵌入式系统领域的宝典。可以翻看翻看,学习一下
    发表于 03-12 13:58

    RK3568国产实验+人工智能机械臂:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    一、产品简介TL3568-PlusTEB人工智能实验国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产
    的头像 发表于 12-12 19:01 1856次阅读
    RK<b class='flag-5'>3568</b><b class='flag-5'>国产</b><b class='flag-5'>实验</b><b class='flag-5'>箱</b>+人工智能机械臂:跳舞、叠罗汉、夹方块、积木搬运案例全解!