rk3506构建ubuntu22系统


前言

使用buildroot编译时总是遇到些错误不好解决,编译的时间又长。。。


一、镜像下载

使用阿里云

https://mirrors.aliyun.com/ubuntu-cdimage/ubuntu-base/releases/22.04.5/release/?spm=a2c6h.25603864.0.0.22a82ee4I5CpWP

防止权限错误,先进入root环境

sudo su

创建目录

mkdir ubuntu22-rootfs
mkdir ubuntu22-base

解压

tar -zxvf ubuntu-base-22.04.5-base-armhf.tar.gz -C ubuntu22-base

安装必要插件

sudo apt install qemu-user-static
适用于32即arm架构
cp /usr/bin/qemu-arm-static ubuntu22-base/usr/bin/
适用于aarch64即arm64架构
cp /usr/bin/qemu-aarch64-static ubuntu22-base/usr/bin/

拷贝dns设置

cp -b /etc/resolv.conf ubuntu22-base/etc/resolv.conf

换源

nano ubuntu22-base/etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu-ports/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ jammy-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ jammy-updates main restricted universe multiverse

# deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ jammy-backports main restricted universe multiverse

ctrl+o保存
ctrl+x退出

编写挂载/卸载脚本mount.sh

#!/bin/bash
function mnt() {
  echo "MOUNTING"
  mount -t proc /proc ${2}proc
  mount -t sysfs /sys ${2}sys
  mount -o bind /dev ${2}dev
  #mount -t devpts -o gid=5,mode=620 devpts ${2}dev/pts
  mount -o bind /dev/pts ${2}dev/pts
  chroot ${2}
}
function umnt() {
  echo "UNMOUNTING"
  umount ${2}proc
  umount ${2}sys
  umount ${2}dev/pts
  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

挂载并进入arm的根文件系统

./mount.sh -m ubuntu22-base/

使用uname -a查看是否挂载成功
有armv7等字样
在这里插入图片描述

更新系统

apt update
apt upgrade

定制自己需要的功能

apt install locales tzdata -y
# 时区选择
# Asia/Shanghai
dpkg-reconfigure locales
# 勾选英文和中文环境
# en_US.UTF-8 UTF-8
# zh_CN.UTF-8 UTF-8

apt install language-pack-en-base #这个必须要否则无法生成/etc/network/interfaces配网文件

apt install apt-utils dialog -y
apt install vim  nano sudo -y
apt install bash-completion  -y
apt install net-tools iputils-ping ifupdown ethtool -y
apt install wireless-tools network-manager -y
apt install ssh rsync udev htop rsyslog -y

配置网络

nano /etc/network/interfaces
source-directory /etc/network/interfaces.d #以太网
auto eth0
iface eth0 inet dhcp
#wifi
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_config.conf
nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114

添加用户及设置密码

添加用户:

useradd -s '/bin/bash' -m -G adm,sudo lckfb
nano /etc/sudoers
lckfb ALL=(ALL:ALL) ALL

给用户设置密码:

passwd lckfb

给root用户设置密码:

passwd root
echo "lckfb" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 lckfb" >> /etc/hosts

修改开关机等待时间

nano /lib/systemd/system/networking.service

TimeoutStartSec=5min 修改为TimeoutStartSec=5sec。

nano /etc/systemd/system.conf

解除 DefaultTimeoutStopSec=90s 注释,改为DefaultTimeoutStopSec=2s。

修改完自己的根文件系统就可以退出了

exit
./mount.sh -u ubuntu22-base/

安装rk3566驱动

编译开发板厂商提供的SDK中的kernel

/*先用厂商提供的build.sh配置开发板,然后编译内核,进入SDK中的kernel目录,执行下列命令安装驱动*/
make ARCH=arm modules_install INSTALL_MOD_PATH=/home/yw/ubuntu22-base

在这里插入图片描述

配置/etc/fstab

1. 什么是 /etc/fstab
/etc/fstab 文件是 Linux 系统中用于定义和管理文件系统的挂载信息的配置文件。它的作用是告诉系统在启动时,应该如何自动挂载各种文件系统。挂载是 Linux 操作系统中一种将存储设备与目录树关联的操作。通过挂载,存储设备中的文件可以通过目录访问。
2. /etc/fstab 文件的格式
/etc/fstab 文件的每一行描述了一个文件系统或设备的挂载信息,通常由 6 个字段组成,每个字段通过空格或制表符分隔。字段的顺序非常重要,具体如下:
<设备文件>  <挂载点>  <文件系统类型>  <挂载选项>  <dump>  <fsck>

拷贝官方SDK中buildroot中生成的fstab文件(需要先编译SDK的buildroot)

cp -f Lyra-sdk/buildroot/output/rockchip_rk3506_luckfox/target/etc/fstab ubuntu22-base/etc/

fstab文件中的内容

# <file system> <mount pt>      <type>  <options>       <dump>  <pass>
/dev/root       /               ext4    rw,noauto       0       1
tmpfs           /tmp            tmpfs   mode=1777       0       0
tmpfs           /run            tmpfs   mode=0755,nosuid,nodev  0       0
tmpfs           /var/log        tmpfs   mode=0755,nosuid,nodev  0       0
proc    /proc   proc    defaults        0 0
devtmpfs        /dev    devtmpfs        defaults        0 0
devpts  /dev/pts        devpts  mode=0620,ptmxmode=0000,gid=5   0 0
tmpfs   /dev/shm        tmpfs   nosuid,nodev,noexec     0 0
sysfs   /sys    sysfs   nosuid,nodev,noexec     0 0
configfs        /sys/kernel/config      configfs        defaults        0 0
debugfs /sys/kernel/debug       debugfs defaults        0 0
pstore  /sys/fs/pstore  pstore  nosuid,nodev,noexec     0 0

制作根文件系统

查看我们制作的ubuntu22-base大小

cd ubuntu22-base
du -h --max-depth=1
cd ..

在这里插入图片描述

制作自己的根文件系统,大小依据自己的根文件系统而定,注意依据 ubuntu22-base文件夹的大小来修改 count 值,因为我们这里的大小为690M所以count=1024保证大于我们的ubuntu22-base

rm linux-rootfs.img
dd if=/dev/zero of=linux-rootfs.img bs=1M count=1024
mkfs.ext4 linux-rootfs.img
mount linux-rootfs.img ubuntu22-rootfs
cp -rfp ubuntu22-base/* ubuntu22-rootfs/
umount ubuntu22-rootfs
e2fsck -p -f linux-rootfs.img
resize2fs -M linux-rootfs.img

调开发板整分区大小

在开发板上运行后,发现存储空间不对,在开发板上执行以下命令

df -h 查看当前系统分区大小
lsblk 查看当前硬盘分区大小
resize2fs /dev/mmcblk0p3 调整分区(改为自己的)

我的开发板上只显示956M,实际应该是8G的emmc
在这里插入图片描述
第三分区挂载到/目录,大小为7.2G
在这里插入图片描述
切换root,并调整分区
在这里插入图片描述

添加终端补全

nano /etc/bash.bashrc

在这里插入图片描述
在这里插入图片描述

总结

换源注意使用:http://**

<think>好的,用户的问题是关于如何在RK3568平台上构建Ubuntu22.04的文件系统。我需要根据用户提供的引用内容和之前的问题来组织回答。首先,用户之前的问题提到了使用debootstrap和qemu-user-static,所以这部分需要详细说明步骤。然后引用[1]提到需要适配硬件,比如GPU、NPU等,所以构建完基础系统后,需要添加这些硬件支持。接下来,我需要考虑用户可能需要的详细步骤。比如,构建根文件系统的具体命令,安装必要软件包,配置qemu。然后内核编译部分,需要从Rockchip的仓库获取源码,配置和编译。之后是硬件驱动适配,比如安装闭源驱动,修改设备树,这部分引用[3]有提到。还需要配置系统服务,比如网络和SSH,用户之前的问题里也提到了修改sshd_config。验证部分,用户可能想知道如何检查各个硬件是否正常工作,比如GPU、NPU、网络等,可能需要给出具体的测试命令。最后,生成相关问题需要考虑用户可能的后续需求,比如优化启动时间、打包软件包、配置PCIe接口等。 需要注意的是,用户特别指出要参考站内引用,所以回答中要适当加入引用标识,比如在debootstrap步骤后引用[4],在安装闭源驱动时引用[3]。同时,确保所有命令正确,特别是设备树修改和驱动安装部分,避免错误。还要检查是否有遗漏的步骤,比如更新软件源、安装语言包、配置时区,这些在构建文件系统时都是必要的。此外,内核配置中的关键选项需要列出,确保硬件支持。最后,验证方法要具体,给出测试命令和预期结果,帮助用户确认构建成功。可能的问题是如何确保驱动安装正确,特别是闭源驱动,可能需要参考Rockchip的官方文档,所以在步骤中要提到参考官方文档。另外,设备树修改可能需要用户根据具体硬件调整,所以需要提醒用户检查自己的外设配置。 总的来说,回答需要结构清晰,分步骤说明,引用正确,覆盖构建文件系统的各个方面,从基础系统到驱动适配,再到系统配置和验证,确保用户能够按步骤操作并成功构建。</think>### RK3568构建Ubuntu 22.04文件系统方法与步骤 #### 一、基础文件系统构建 1. **安装依赖工具** ```bash sudo apt install debootstrap qemu-user-static binfmt-support ``` 2. **创建最小化根文件系统** ```bash sudo debootstrap --arch=arm64 --variant=minbase jammy ./ubuntu_rootfs http://ports.ubuntu.com/ubuntu-ports ``` 此命令会生成包含基本命令的最小系统,文件系统大小约300MB[^4] 3. **配置QEMU仿真环境** ```bash sudo cp /usr/bin/qemu-aarch64-static ./ubuntu_rootfs/usr/bin/ sudo mount --bind /dev ./ubuntu_rootfs/dev sudo chroot ./ubuntu_rootfs /bin/bash ``` #### 二、系统功能完善 1. **基础软件安装** ```bash apt update && apt install -y ubuntu-standard network-manager ssh sudo ``` 2. **硬件支持包安装** ```bash apt install -y linux-firmware-rockchip rk3568-gpu-driver # 引用[3] ``` 3. **关键配置项** | 配置文件 | 修改内容 | 作用说明 | |-------------------|-----------------------------------|-----------------------| | /etc/fstab | `/dev/mmcblk1p2 / ext4 defaults 0 1` | 设置根分区挂载 | | /etc/hostname | `rk3568-ubuntu` | 设置设备主机名 | #### 三、内核定制与驱动适配 1. **获取内核源码** ```bash git clone https://github.com/rockchip-linux/kernel.git -b develop-5.10 cd kernel make ARCH=arm64 rockchip_linux_defconfig ``` 2. **关键内核配置项** ```text CONFIG_ROCKCHIP_MPP_SERVICE=y # 多媒体处理框架支持[^1] CONFIG_DRM_PANFROST=m # Mali GPU驱动支持 ``` 3. **编译与安装** ```bash make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) cp arch/arm64/boot/Image /boot/ ``` #### 四、硬件适配验证 1. **GPU加速验证** ```bash glmark2-es2 --benchmark # 应输出>30fps的测试结果[^3] ``` 2. **NPU功能验证** ```bash rknn_benchmark /usr/share/rknn/rk1808/mobilenet_v1.rknn # 推理耗时<100ms为正常[^1] ``` 3. **存储性能测试** ```bash dd if=/dev/zero of=testfile bs=1M count=1024 conv=fdatasync # 写入速度应>50MB/s ``` #### 五、高级配置建议 1. **优化启动时间** ```bash systemd-analyze blame # 分析启动耗时服务 systemctl disable apt-daily.timer # 禁用自动更新检查 ``` 2. **安全加固配置** ```bash apt install -y apparmor ufw ufw enable && ufw default deny ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值