Rootfs 定制化
概述
Rootfs(根文件系统)定制化是指根据产品需求对 Ubuntu 根文件系统进行个性化配置的过程。
运行原理
Rootfs 编译流程

ext4 基础镜像
ubuntu-rootfs.ext4 是 Rootfs 定制化的基础,它包含:
- Ubuntu 基础系统
- 系统核心库和工具
- 基础软件包
所有定制化修改都基于这个基础镜像进行。
编译产物路径
构建完成后主要文件路径如下:
- 预构建的 ext4:
build/tmp/deploy/images/aimodule/ubuntu-rootfs.ext4
- 完整的 rootfs 镜像:
build/tmp/deploy/images/aimodule/m1000-image-ubuntu-aimodule-xxx.rootfs.wic
boot-ubuntu.wks 控制分区结构(label、size、source 等)。
快速开始
准备工作
从 TOS 下载 ubuntu-image-xxx.ext4 或下载 m1000-image-ubuntu-aimodule-xxx.rootfs.wic
并解压为 ext4:
# 查看 wic 分区信息
fdisk -l m1000-image-ubuntu-aimodule-xxx.rootfs.wic
Disk m1000-image-ubuntu-aimmodule-20260308205733.rootfs.wic: 32 GiB, 34360804352 bytes, 67110946 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0F763A1C-8B96-4004-8B93-3C3BFDCB3E51
Device Start End Sectors Size Type
m1000-image-ubuntu-aimodule-20260308205733.rootfs.wic1 2048 67110911 67108864 32G Linux filesystem
# 提取 ext4 分区(结合 sector size 和 Linux filesystem 的 Start 来取分区)
dd if=m1000-image-ubuntu-aimodule-xxx.rootfs.wic \
of=ubuntu-image.ext4 bs=$sector_size skip=$Start count=$Sectors
# 解包得到 Linux filesystem ubuntu-image.ext4
# 拷贝到 downloads 目录下
cp ubuntu-image.ext4 m1000-soc-sw-sdk/downloads/.
指定 ext4 为基础镜像
修改 m1000-soc-sw-sdk/meta/meta-mt-distro/recipes-images/rootfs/ubuntu-rootfs-ext4-prebuild.bb:
UBUNTU_ROOTFS_EXT4_NAME = ubuntu-image-xxx.ext4
安装编译依赖以及 rootfs 编译
# 进入 SDK 目录
cd m1000-soc-sw-sdk
# 清理并安装 Kernel 相关依赖
bitbake linux-mthreads -c cleanall
# 脚本在 ${DEPLOYDIR}/debs/ 下编译出 deb 包
build-linux-deps.sh
# 一步构建 rootfs.wic
bitbake m1000-image-ubuntu
# 或分步构建
bitbake ubuntu-rootfs-ext4-prebuild
bitbake m1000-image-ubuntu
Rootfs 安装 deb 包
步骤 1:Kernel 包编译安装
bitbake linux-mthreads -c cleanall
build-linux-deps.sh
生成的 deb 包位于 ${DEPLOYDIR}/debs/ 下,在 sdk 编译 rootfs 时自动安装,包括:
- Kernel image
- 驱动 ko
- libc 库文件
- 头文件包
步骤 2:安装 MUSA、MUSA-SDK、all_debs
方法一:编译 rootfs 时自动安装
将 musa_*-AB100_arm64.deb 以及需要打入镜像的 deb 放入:
m1000-soc-sw-sdk/musa-debs/
方法二:手动安装
# 挂载 ext4
sudo mount -o loop ubuntu-rootfs.ext4 ./mnt
sudo mount --bind /sys ./mnt/sys
sudo mount --bind /dev ./mnt/dev
sudo mount --bind /dev/pts ./mnt/dev/pts
sudo mount --bind /proc ./mnt/proc
sudo cp /etc/resolv.conf ./mnt/etc/resolv.conf
# 进入 chroot 环境
sudo chroot ./mnt
sudo chmod 1777 /tmp
# 安装 deb 包
dpkg -i xxx.deb
# 退出
rm -f /etc/resolv.conf
exit
sudo umount ./mnt/sys
sudo umount ./mnt/dev/pts
sudo umount ./mnt/dev
sudo umount ./mnt/proc
sudo umount ./mnt
系统配置定制
步骤 1:修改用户名、密码、机器名
方法一:修改配置文件
在 /meta/meta-mt-distro/recipes-images/rootfs/ubuntu-rootfs-ext4-prebuild.bb 中修改变量。
HOSTNAME、 ROOT_PASSWD、 U_NAME、 U_PASSWD。
重新编译 rootfs,烧录启动开发板。
方法二:手动挂载修改
# 挂载 ext4
sudo mount -o loop ubuntu-rootfs.ext4 ./mnt
# 修改配置文件
# ...
# 卸载
sudo umount ./mnt
# 重新编译 rootfs
bitbake m1000-image-ubuntu -c cleanall
bitbake m1000-image-ubuntu