RK3399制作及使用ubuntu文件系统--上

Ubuntu ARM64 文件系统制作及RK3399设备适配
本文档详细介绍了如何在RKLinuxSDK环境下,由于缺乏官方ROS支持,转而使用Ubuntu制作ARM64文件系统的过程。包括下载最新Ubuntu arm64 image,安装qemu-user-static,挂载并配置文件系统,安装所需软件包,进行系统基础配置,最后制作可烧录的固件镜像。整个流程适用于 RK3399 平台的设备。

Kernel4.4
RK Linux SDK

rk的buildroot对ros支持不友好,也没有官方可用教程参考,项目需求只好用ubuntu做文件系统。

记录下制作方法步骤:

1.首先下载最新的arm64 ubuntu release image

最新的Ubuntu arm64的image可以在这里找到:
http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.5/release/ubuntu-base-16.04.5-base-arm64.tar.gz
可以直接下载,或者通过如下的办法来下载:

$ mkdir ~/ubuntu-rootfs && cd ubuntu-rootfs
然后,通过如下的方法来下载arm64的release软件:

$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.5/release/ubuntu-base-16.04.5-base-arm64.tar.gz
$ tar -xpf ubuntu-base-16.04.2-base-arm64.tar.gz
解压缩后是这样的:

user@user:~/ubuntu-rootfs$ ls
bin dev home media opt root sbin sys usr
boot etc lib mnt proc run srv tmp var

2.安装 qemu-user-static

$ pwd
/home/user/ubuntu-rootfs
$ apt-get install qemu-user-static
$ cp /usr/bin/qemu-aarch64-static usr/bin
$ cp -b /etc/resolv.conf etc/
在这里我们要注意的是我们针对arm64的qemu-user-static安装的文件是qemu-aarch64-static。

3.mount proc, sys, dev, dev/pts到新的文件系统

利用一个简单的ch-mount.sh脚本来完成这个动作。
它可以帮我们mount及unmount。

#!/bin/bash
# 

#sudo chgrp -R root ubuntu-rootfs/
#sudo chown -R root ubuntu-rootfs/

function mnt() {
   
   
    echo "MOUNTING"
    sudo mount -t proc /proc ${2}proc
    sudo mount -t sysfs /sys ${2}sys
    sudo 
### 3. 构建 Ubuntu文件系统RK3399 开发板上构建基于 Ubuntu 的根文件系统,通常需要使用 **Ubuntu Base**,这是官方提供的最小化 rootfs 镜像,适用于自定义嵌入式系统的构建。可以从 Ubuntu 官方网站获取适用于 ARM64 架构的 ubuntu-base 镜像文件,并将其作为基础进行扩展[^1]。 #### 3.1 下载 Ubuntu Base 镜像 访问 [Ubuntu Base 下载页面](https://cdimage.ubuntu.com/ubuntu-base/releases/),选择适合 ARM64 架构(即 `arm64`)的镜像版本,例如: ```bash wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.1-base-arm64.tar.gz ``` #### 3.2 创建目标根文件系统目录 创建一个用于解压和修改 rootfs 的目录,并将下载的 ubuntu-base 解压到该目录中: ```bash mkdir -p /path/to/rootfs tar -xpf ubuntu-base-22.04.1-base-arm64.tar.gz -C /path/to/rootfs ``` #### 3.3 安装必要的软件包 为了使系统具备基本的功能,如网络、SSH 和包管理工具,需要在 chroot 环境下安装必要的软件包。首先挂载必要的系统目录: ```bash sudo mount --bind /dev /path/to/rootfs/dev sudo mount --bind /dev/pts /path/to/rootfs/dev/pts sudo mount --bind /proc /path/to/rootfs/proc sudo mount --bind /sys /path/to/rootfs/sys sudo mount --bind /run /path/to/rootfs/run ``` 然后进入 chroot 环境并安装基础组件: ```bash sudo chroot /path/to/rootfs /bin/bash apt update apt install --no-install-recommends systemd-sysv openssh-server netbase iproute2 ifupdown iputils-ping exit ``` #### 3.4 挂载内核模块 如果已编译好适用于 RK3399 的 Linux 内核模块,可以将其复制到 rootfs 的 `/lib/modules` 目录中: ```bash cp -af ${KMODULES_OUTDIR}/lib/modules/* /path/to/rootfs/lib/modules/ ``` 其中 `${KMODULES_OUTDIR}` 是内核模块输出目录路径[^2]。 #### 3.5 制作 ext4 根文件系统镜像 创建一个空的 ext4 文件系统镜像,并将构建好的 rootfs 内容复制进去: ```bash dd if=/dev/zero of=ubuntu-rootfs.img bs=1M count=4000 mkfs.ext4 ubuntu-rootfs.img mkdir -p rootfs_mount sudo mount ubuntu-rootfs.img rootfs_mount/ sudo cp -a /path/to/rootfs/* rootfs_mount/ sudo umount rootfs_mount ``` 优化镜像空间占用以减少体积: ```bash e2fsck -p -f ubuntu-rootfs.img resize2fs -M ubuntu-rootfs.img ``` #### 3.6 烧录到 SD 卡或 eMMC 将制作好的 rootfs 镜像写入 SD 卡或 eMMC 设备中,确保设备路径正确(如 `/dev/sdX`): ```bash sudo dd if=ubuntu-rootfs.img of=/dev/sdX bs=4M status=progress sync ``` #### 3.7 启动配置与验证 将 SD 卡插入 RK3399 开发板,设置从 SD 卡启动,并通过串口终端查看系统启动日志。首次启动后,可能需要手动调整分区大小以充分利用存储空间: ```bash sudo resize2fs /dev/mmcblk0p2 ``` 确认系统能够正常引导并加载完整的 Ubuntu 环境。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值