1. 为什么选择Ubuntu Base来构建根文件系统?
如果你玩过树莓派或者类似的ARM开发板,比如瑞芯微的RK3528,你可能用过官方提供的现成系统镜像。这些镜像开箱即用,确实方便。但当你需要深度定制,比如预装自己的应用、裁剪掉不需要的组件以节省宝贵的存储空间,或者适配一块全新的定制硬件时,从零开始构建一个属于自己的根文件系统就成了必经之路。
这时候,Ubuntu Base 就是你最好的起点。它是什么?你可以把它理解成Ubuntu官方提供的“骨架”或者“最小化系统”。它只包含了最核心的包管理器(apt)、最基本的命令行工具和库,体积通常只有几十兆。相比BusyBox,它背后有Ubuntu庞大的软件仓库支持,你可以用熟悉的 apt install 安装几乎任何你需要的软件;相比Yocto或Buildroot,它的学习曲线平缓得多,不需要理解复杂的层和配方,更像是在搭建一个标准的Linux系统。
我这次实战的目标平台是瑞芯微的RK3528开发板。选择Ubuntu Base 20.04 LTS(Focal Fossa)版本,主要是考虑到其长期支持带来的稳定性,以及国内镜像源(如阿里云)对ARM架构的20.04版本支持比较完善,下载和更新软件包速度更快。当然,22.04版本也是可行的,但需要确保你的内核和工具链兼容性。下面,我就带你一步步把这个“骨架”填充、修剪,最终移植到开发板上运行起来。
2. 搭建构建环境与获取基础材料
工欲善其事,必先利其器。构建根文件系统主要在x86的Linux主机上完成,我们需要一个干净、高效的环境。
2.1 宿主环境准备
我使用的是 Ubuntu 22.04 LTS的虚拟机作为构建主机。为什么用虚拟机?因为整个过程会涉及挂载、chroot等操作,在独立的环境里折腾更安全,不怕把宿主机搞乱。物理机当然也可以,但务必注意操作路径,避免误操作。
首先,更新系统并安装必要的工具:
sudo apt update
sudo apt upgrade -y
sudo apt install -y qemu-user-static binfmt-support tar vim
这里的关键是 qemu-user-static。我们的构建主机是x86架构,而目标板是ARM架构(aarch64)。这个包提供了静态编译的QEMU用户态模拟器,允许我们在x86主机上直接运行ARM架构的程序。没有它,后续的chroot环境根本无法工作。
2.2 下载Ubuntu Base根文件系统
前往Ubuntu官方镜像站:http://cdimage.ubuntu.com/ubuntu-base/releases/ 找到20.04 LTS版本,下载对应ARM64架构的压缩包:ubuntu-base-20.04.5-base-arm64.tar.gz。你也可以用wget直接下载:
wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.5-base-arm64.tar.gz
我选择20.04而非更新的版本,一方面是出于与内核版本(如5.10)兼容性的考虑,另一方面是这个版本的社区资源和镜像支持非常成熟,踩坑时更容易找到解决方案。
2.3 初始化工作目录
创建一个独立的工作目录,所有操作都在这里进行,保持清晰。
mkdir -p ~/rk3528_rootfs
cd ~/rk3528_rootfs
将下载的Base包解压到这个目录。务必使用sudo并保留文件权限,否则会导致后续问题。
sudo tar -xpf /path/to/ubuntu-base-20.04.5-base-arm64.t

2580

被折叠的 条评论
为什么被折叠?



