基于 debootstrap 构建 Debian 与 Ubuntu 根文件系统
基础环境配置
在开始制作根文件系统之前,建议将主机的软件源替换为国内镜像以提高下载速度。以下操作以 Ubuntu 20.04 环境为例。
# 备份并替换镜像源
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y
# 安装必要工具
# qemu-user-static: 用于在当前主机架构下模拟目标架构的运行环境
# debootstrap: Debian/Ubuntu 官方提供的基础系统构建工具
sudo apt install qemu-user-static debootstrap -y
构建基础系统架构
利用 debootstrap 命令下载基础包。可以通过 --arch 指定目标架构(如 amd64, arm64, armhf),并指定对应的发行版代号。
# 定义变量
export TARGET_ROOTFS="/mnt/custom_rootfs"
export ARCH_TYPE="arm64"
export RELEASE_CODE="bookworm" # Debian 12
# 开始第一阶段下载
sudo debootstrap --foreign --verbose --arch=$ARCH_TYPE $RELEASE_CODE $TARGET_ROOTFS http://mirrors.ustc.edu.cn/debian/
# 拷贝 QEMU 仿真器到目标系统
sudo cp /usr/bin/qemu-aarch64-static $TARGET_ROOTFS/usr/bin/
# 执行第二阶段初始化
sudo LC_ALL=C LANGUAGE=C LANG=C chroot $TARGET_ROOTFS /debootstrap/debootstrap --second-stage
系统内部配置与个性化
系统初始化完成后,需要进入 chroot 环境进行用户设置、网络配置以及常用软件的安装。
# 进入虚拟根环境
sudo chroot $TARGET_ROOTFS /bin/bash
# 1. 设置系统语言与环境
export LC_ALL=C
# 2. 修改 root 密码
passwd root
# 3. 创建标准用户
USER_NAME="developer"
useradd -m -G sudo -s /bin/bash $USER_NAME
passwd $USER_NAME
# 4. 配置主机名
echo "custom-node" > /etc/hostname
# 5. 更新内部源并安装常用软件包
apt update
apt install -y vim net-tools iputils-ping ssh wget curl
# 6. (可选) 安装桌面环境
# 若需要图形界面,可以使用 tasksel
# apt install tasksel -y
# tasksel install desktop
# 清理缓存并退出
apt clean
history -c
exit
生成文件系统镜像
完成配置后,需要将目录打包为可烧录的镜像文件(如 .img 格式)。
# 1. 统计当前系统占用的空间
SYS_SIZE=$(du -ms $TARGET_ROOTFS | cut -f1)
# 增加约 20% 的剩余空间缓冲
IMG_SIZE=$((SYS_SIZE + 500))
# 2. 创建空白镜像文件
OUTPUT_IMG="rootfs_v1.0.img"
dd if=/dev/zero of=$OUTPUT_IMG bs=1M count=$IMG_SIZE
# 3. 格式化为 ext4
mkfs.ext4 $OUTPUT_IMG
# 4. 挂载镜像并同步文件
MOUNT_DIR="/tmp/img_mount"
mkdir -p $MOUNT_DIR
sudo mount $OUTPUT_IMG $MOUNT_DIR
sudo cp -a $TARGET_ROOTFS/. $MOUNT_DIR/
# 5. 卸载并清理
sudo umount $MOUNT_DIR
rm -rf $MOUNT_DIR
# 6. 镜像优化(缩减多余空间)
e2fsck -p -f $OUTPUT_IMG
resize2fs -M $OUTPUT_IMG
至此,一个定制化的根文件系统镜像制作完成。该镜像可以直接用于嵌入式设备的烧录或在虚拟机中进行测试。