Ubuntu From Scratch (UFS) 是一个非官方的项目概念,通常指从零开始构建一套基于 Ubuntu 的 Linux 系统,而不是像 Linux From Scratch (LFS) 那样从源码编译内核和工具链。
由于 Ubuntu 是基于 Debian 的二进制发行版,定制 Ubuntu From Scratch 通常有两种主流路径:
以下是详细的步骤指南,侧重于从零构建根文件系统的方法。
你需要一台已经安装好 Ubuntu(或 Debian)的宿主机,以及至少 20GB 的空闲磁盘空间。
安装必要工具:
sudo apt update
sudo apt install debootstrap binutils dpkg-dev
创建构建目录:
mkdir ~/ufs
cd ~/ufs
debootstrap 是 Debian/Ubuntu 的官方工具,用于从软件源下载并解压一个最小化的根文件系统。
下载 Ubuntu 基础系统(以 Ubuntu 22.04 “Jammy” 为例):
# 语法: sudo debootstrap <版本代号> <目标目录> <镜像源>
sudo debootstrap jammy ./rootfs http://archive.ubuntu.com/ubuntu
这会在 ./rootfs 下生成一个非常小的 Ubuntu 系统(只有几 MB 到几百 MB)。
进入 Chroot 环境: 我们需要进入这个新的系统里进行配置。
sudo mount --bind /dev ./rootfs/dev
sudo mount --bind /proc ./rootfs/proc
sudo mount --bind /sys ./rootfs/sys
sudo chroot ./rootfs /bin/bash
现在你已经在“新系统”里了(提示符可能会变成 I have no name!,这是正常的)。
设置基础配置:
# 设置主机名
echo "my-custom-ubuntu" > /etc/hostname
# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 设置 root 密码
passwd
配置软件源 (APT):
编辑 /etc/apt/sources.list,确保包含 main, restricted, universe 仓库:
cat > /etc/apt/sources.list <<EOF
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
EOF
更新并安装核心软件:
apt update
apt upgrade -y
# 安装内核、引导程序、网络工具
# 注意:linux-generic 会安装内核和模块
apt install -y linux-generic grub-pc network-manager sudo vim bash-completion
创建用户:
adduser yourusername
usermod -aG sudo yourusername
配置 Fstab: 你需要知道你未来要安装这个系统的分区 UUID。暂时可以先留空或简单配置,等到安装到硬盘时再改。
# 示例:/dev/sda1 是根分区
# UUID=xxxx-xxxx / ext4 errors=remount-ro 0 1
退出 Chroot:
exit
现在你有一个配置好的 rootfs 文件夹。你需要把它变成可启动的系统。
/dev/sdb1)。sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /mnt
sudo cp -a ~/ufs/rootfs/* /mnt/
chroot 到 /mnt 并安装 grub:sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sdb # 注意是磁盘 /dev/sdb,不是分区 sdb1
update-grub
exit
如果你想把它打包成一个 ISO 文件(像官方 Ubuntu 安装盘那样),过程非常复杂,涉及 squashfs 和 initrd 修改。通常建议使用 Cubic (Custom Ubuntu ISO Creator) 工具来简化这个过程。
如果你只是想移除 Ubuntu 预装的软件(如 Snap、Amazon、LibreOffice)并预装自己的软件,不需要从源码编译,使用 Cubic 是最简单的方法。
安装 Cubic:
sudo apt-add-repository ppa:cubic-wizard/release
sudo apt update
sudo apt install cubic
操作流程:
apt remove 或 apt install。| 特性 | Linux From Scratch (LFS) | Ubuntu From Scratch (UFS) / Debootstrap |
|---|---|---|
| 构建方式 | 下载源码,手动编译 (GCC, Glibc, Binutils) | 下载预编译的二进制包 (.deb) |
| 难度 | 极高,耗时极长 (几天到几周) | 中等,耗时短 (几小时) |
| 目的 | 学习 Linux 底层原理 | 快速定制一个干净的 Ubuntu 环境 |
| 包管理 | 无 (需手动编译安装) | APT (方便管理软件) |
建议: