温馨提示×

如何定制 Ubuntu From Scratch

小樊
44
2026-07-01 05:40:52
栏目: 智能运维

Ubuntu From Scratch (UFS) 是一个非官方的项目概念,通常指从零开始构建一套基于 Ubuntu 的 Linux 系统,而不是像 Linux From Scratch (LFS) 那样从源码编译内核和工具链。

由于 Ubuntu 是基于 Debian 的二进制发行版,定制 Ubuntu From Scratch 通常有两种主流路径:

  1. 基于 Debian 构建(推荐,类似 LFS 但用 Deb 包):从最小化 Debian 开始,手动安装 Ubuntu 的组件。
  2. Live CD 定制(最实用):修改现有的 Ubuntu ISO 镜像,移除不需要的软件,加入自己的配置。

以下是详细的步骤指南,侧重于从零构建根文件系统的方法。


准备工作

你需要一台已经安装好 Ubuntu(或 Debian)的宿主机,以及至少 20GB 的空闲磁盘空间。

  1. 安装必要工具

    sudo apt update
    sudo apt install debootstrap binutils dpkg-dev
    
  2. 创建构建目录

    mkdir ~/ufs
    cd ~/ufs
    

步骤一:使用 Debootstrap 构建基础系统

debootstrap 是 Debian/Ubuntu 的官方工具,用于从软件源下载并解压一个最小化的根文件系统。

  1. 下载 Ubuntu 基础系统(以 Ubuntu 22.04 “Jammy” 为例):

    # 语法: sudo debootstrap <版本代号> <目标目录> <镜像源>
    sudo debootstrap jammy ./rootfs http://archive.ubuntu.com/ubuntu
    

    这会在 ./rootfs 下生成一个非常小的 Ubuntu 系统(只有几 MB 到几百 MB)。

  2. 进入 Chroot 环境: 我们需要进入这个新的系统里进行配置。

    sudo mount --bind /dev ./rootfs/dev
    sudo mount --bind /proc ./rootfs/proc
    sudo mount --bind /sys ./rootfs/sys
    sudo chroot ./rootfs /bin/bash
    

步骤二:在 Chroot 内配置系统

现在你已经在“新系统”里了(提示符可能会变成 I have no name!,这是正常的)。

  1. 设置基础配置

    # 设置主机名
    echo "my-custom-ubuntu" > /etc/hostname
    
    # 设置时区
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # 设置 root 密码
    passwd
    
  2. 配置软件源 (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
    
  3. 更新并安装核心软件

    apt update
    apt upgrade -y
    
    # 安装内核、引导程序、网络工具
    # 注意:linux-generic 会安装内核和模块
    apt install -y linux-generic grub-pc network-manager sudo vim bash-completion
    
  4. 创建用户

    adduser yourusername
    usermod -aG sudo yourusername
    
  5. 配置 Fstab: 你需要知道你未来要安装这个系统的分区 UUID。暂时可以先留空或简单配置,等到安装到硬盘时再改。

    # 示例:/dev/sda1 是根分区
    # UUID=xxxx-xxxx / ext4 errors=remount-ro 0 1
    
  6. 退出 Chroot

    exit
    

步骤三:安装到硬盘(或制作成镜像)

现在你有一个配置好的 rootfs 文件夹。你需要把它变成可启动的系统。

方案 A:安装到物理分区(真机/虚拟机)

  1. 格式化一个分区(例如 /dev/sdb1)。
  2. 挂载并复制文件:
    sudo mkfs.ext4 /dev/sdb1
    sudo mount /dev/sdb1 /mnt
    sudo cp -a ~/ufs/rootfs/* /mnt/
    
  3. 安装 Grub 引导: 你需要 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
    

方案 B:制作成 Live USB 或 ISO(高级)

如果你想把它打包成一个 ISO 文件(像官方 Ubuntu 安装盘那样),过程非常复杂,涉及 squashfsinitrd 修改。通常建议使用 Cubic (Custom Ubuntu ISO Creator) 工具来简化这个过程。


替代方案:使用 Cubic 定制 ISO(推荐给大多数用户)

如果你只是想移除 Ubuntu 预装的软件(如 Snap、Amazon、LibreOffice)并预装自己的软件,不需要从源码编译,使用 Cubic 是最简单的方法。

  1. 安装 Cubic

    sudo apt-add-repository ppa:cubic-wizard/release
    sudo apt update
    sudo apt install cubic
    
  2. 操作流程

    • 打开 Cubic,选择一个空目录作为项目。
    • 选择你要定制的 Ubuntu ISO 镜像。
    • Cubic 会自动解压并进入 Chroot 终端
    • 在终端里执行 apt removeapt install
    • 点击 “Next” 直到生成新的 ISO 文件。

总结:UFS 与 LFS 的区别

特性 Linux From Scratch (LFS) Ubuntu From Scratch (UFS) / Debootstrap
构建方式 下载源码,手动编译 (GCC, Glibc, Binutils) 下载预编译的二进制包 (.deb)
难度 极高,耗时极长 (几天到几周) 中等,耗时短 (几小时)
目的 学习 Linux 底层原理 快速定制一个干净的 Ubuntu 环境
包管理 无 (需手动编译安装) APT (方便管理软件)

建议

  • 如果你想学习 Linux 内部运作机制,请去 Linux From Scratch 官网
  • 如果你只是想要一个纯净、无冗余、属于自己的 Ubuntu 系统,请使用上面的 Debootstrap 方法或 Cubic 工具。

0