基于ubuntu-base构建根文件系统并移植到RK3568开发板

这篇具有很好参考价值的文章主要介绍了基于ubuntu-base构建根文件系统并移植到RK3568开发板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

一、使用ubuntu-base构建根文件系统

1、到ubuntu官网获取 ubuntu-base-18.04.5-base-arm64.tar.gz

2、将获取的文件拷贝到ubuntu虚拟机,新建目录,并解压。

3、安装qemu-user-static

4、设置软件源

5、配置DNS

6、挂载ubuntu-base文件系统

7、安装必要软件

8、安装桌面环境

9、修改root用户密码

10、添加新用户

11、新用户使用sudo命令

12、设置主机名称和IP

13、配置DHCP

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

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

16、禁用系统休眠

二、打包镜像文件

1、创建空镜像文件,大小为6144MB

2、将该文件格式化成ext4文件系统

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

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

三、将文件系统烧录到开发板

参考:


前言

国产瑞芯微RK3568开发板的配置参数,让人眼前一亮,性价比很高。

但官方基于buildroot搭建的软生态并不理想,个人也比较喜欢ubuntu官方的操作界面,所以就查阅文献,构建ubuntu文件系统,最终成功在开发板上跑了起来!喜悦!撒花~~~

在这个过程中,踩坑无数,在此做个记录,便于日后继续完善。

实验环境:

开发板:迅为RK3568

文件系统:ubuntu-base-18.04.5-base-arm64

一、使用ubuntu-base构建根文件系统

1、到ubuntu官网获取 ubuntu-base-18.04.5-base-arm64.tar.gz

下载地址:ubuntu-base-18.04.5-base-arm64.tar.gz

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

这里我们选择华为国内下载源。

deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main multiverse restricted universe

将原文删除,然后替换内容。

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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/

卸载文件系统

bash mount.sh -u ubuntu_rootfs/

注意:

挂载后,就进入到了开发板仿真环境,可以安装软件,更改系统配置;

文件系统构建完成后,输入 exit ,退出仿真环境,然后运行脚本,卸载ubuntu_base文件系统;

最后,打包镜像。

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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用户密码

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

基于ubuntu-base构建根文件系统并移植到RK3568开发板

10、添加新用户

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

11、新用户使用sudo命令

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

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

chmod u+w /etc/sudoers

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

vim /etc/sudoers

ssismm	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

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

vim /etc/pam.d/gdm-autologin

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

vim /etc/pam.d/gdm-password

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

vim /root/.profile

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

tty -s && mesg n || true

基于ubuntu-base构建根文件系统并移植到RK3568开发板

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

vim /etc/gdm3/custom.conf

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

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=root
TimedLoginEnable=true
TimedLogin=root
TimedLoginDelay=10

基于ubuntu-base构建根文件系统并移植到RK3568开发板

16、禁用系统休眠

查看:

sudo systemctl status sleep.target

禁用:

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

至此,我们构建的文件系统,就可以开启root用户免密登录可视界面了!

二、打包镜像文件

1、创建空镜像文件,大小为6144MB

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

2、将该文件格式化成ext4文件系统

mkfs.ext4 ubuntu_rootfs.img

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

mkdir ubuntu_base_rootfs
sudo mount ubuntu_rootfs.img ubuntu_base_rootfs
sudo cp -rfp ubuntu_rootfs/* ubuntu_base_rootfs/

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

sudo umount ubuntu_base_rootfs/
e2fsck -p -f ubuntu_rootfs.img
resize2fs -M ubuntu_rootfs.img

最终,我们得到了文件系统镜像文件,大小4.9GB 

基于ubuntu-base构建根文件系统并移植到RK3568开发板

三、将文件系统烧录到开发板

为了简便,先在开发板上烧录官方提供的buildroot镜像,然后再单独烧录文件系统。

基于ubuntu-base构建根文件系统并移植到RK3568开发板

至此,大功告成!此处应该有掌声!!!撒花~~~

基于ubuntu-base构建根文件系统并移植到RK3568开发板

参考:

【ARM】使用Ubuntu-base构建根文件系统

基于ubuntu-base构建根文件系统并移植到RK3568开发板文章来源地址https://www.toymoban.com/news/detail-428131.html

到了这里,关于基于ubuntu-base构建根文件系统并移植到RK3568开发板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用qemu创建ubuntu-base文件系统,并安装PM相关内核模块

    流程简述: (镜像基本的文件系统配置) 1、下载ubuntu-base的镜像 2、挂载镜像,配置镜像的网络,并安装各类软件 (PM模块配置) 3、编译内核模块,并拷贝到镜像中 4、启动qemu 5、安装内核模块,并配置相关软件 1、使用 qemu-img 创建image镜像(此处起名为 ubuntu-rootfs-raw-20G.

    2024年02月16日
    浏览(46)
  • 基于 RK3588 构建 Ubuntu 22.04 根文件系统

    以下内容在 Rockchip 的 Linux SDK 目录下完成,请先解压 Linux SDK。 1.1 下载 Ubuntu Base Ubuntu-Base 是Ubuntu官方构建的ubuntu最小文件系统,基础包大小通常只有几十兆,可以很方便的个性化定制嵌入式环境。使用北京外国语大学镜像站加速下载,注意选择根据开发板架构选择arm64或其他

    2024年02月13日
    浏览(118)
  • 基于讯为RK3588平台搭建Ubuntu20.04.5根文件系统

    在搭建系统之前,需要详细阅读讯为公司提供的一些资料(虽然他们家资料一直都做的不完善),搭建好用于开发的Ubuntu虚拟机环境,熟练使用一些常用工具如烧录系统的工具RKDevTool、传输文件的工具FileZilla、远程连接工具MobaXterm等等。当然,本章只针对根文件系统,uboot、

    2024年02月02日
    浏览(39)
  • 基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译

            由于官方的SDK占用空间较大(大约20GB左右),需要联系相关供应商提供,且官方的SDK通过各种脚本文件进行集成编译,难以理解系统开发的详细过程。本章介绍直接从官方Github网站下载源码进行移植,进行uboot移植及编译,具体内容如下所述: 1.进入官方的github网

    2024年01月16日
    浏览(61)
  • RK3568 移植Ubuntu

    使用ubuntu-base构建根文件系统 1、到ubuntu官网获取 ubuntu-base-18.04.5-base-arm64.tar.gz Ubuntu Base 18.04.5 LTS (Bionic Beaver) 2、将获取的文件拷贝到ubuntu虚拟机,新建目录,并解压

    2024年01月23日
    浏览(41)
  • RK35xx定制 Ubuntu18 根文件系统

    目录 一、为什么定制? 二、定制步骤 1.准备工作 2.下载 Ubuntu base 3.进入rootfs的目录: 4.更新软件 5.安装系统软件 6.基础系统改造 7.添加产品定制内容   这里记录定制产品RK3568,RK3588,文件系统rootfs的过程。文件系统制作比较麻烦,有很多的安装包,还有很多驱动,但是很影

    2024年02月14日
    浏览(34)
  • RK3588适配Ubuntu系统

            RKsdk上支持buildroot以及Debian系统,但是Ubuntu需要自己移植,有很多公司都移植好了可以直接用,这里就总结记录一下我制作Ubuntu的过程。 http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.1-base-arm64.tar.gz 这里我选择的是Ubuntu20.04,直接下载至指定本地文件夹

    2024年02月09日
    浏览(55)
  • RK356x基于Ubuntu20.04搭建ROS开发环境

    CPU:RK356x 操作系统:arm64 Ubuntu20.04 1、首先确保开发板是可以联网的。

    2024年01月20日
    浏览(44)
  • rk3399移植linux kernel

    参考文章: 1.RK3399移植u-boot 2.I.MX6Q-SDB开发板移植ubuntu 3.Rockchip RK3399 - 移植ubuntu 20.04.4根文件系统 4.Rockchip RK3399 - 移植uboot 2023.04 linux 6.3   在前一节中移植了rk3399的u-boot,这一节就继续移植linux kernel。不过rk3399在移植kenel前,需要先制作根文件系统,这样才能在生成内核镜像

    2024年02月14日
    浏览(57)
  • 【技术分享】RK356X Debian/Ubuntu 系统安装Docker

    本文基于IDO-SBC3528主板演示Debian/Ubuntu 系统任何安装Docker,方法适用于RK3568全系列产品。  IDO-SBC3528-V1采用RK3568四核64位开发的智能主板,可作为RK3568开发评估板,支持8G大内存;支持PCIE2.0接口,可扩展大容量固态硬盘;支持双千兆以太网口;支持双频WiFi、蓝牙4.2以上,可扩展

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包