温馨提示×

怎样入门ubuntu fromscratch

小樊
33
2026-08-13 03:28:57
栏目: 智能运维

Ubuntu From Scratch (UFS) 是一个相对小众且硬核的项目,它旨在帮助用户从零开始构建自己的 Ubuntu 系统,而不是像常规安装那样直接使用现成的 ISO 镜像。这是一个极佳的学习 Linux 系统内部运作机制的方式,但难度较高。

以下是入门 Ubuntu From Scratch 的详细指南和步骤:

1. 理解概念:UFS 是什么?

  • 与 LFS (Linux From Scratch) 的区别:LFS 是从源代码编译一个全新的 Linux 系统;而 UFS 通常是基于 Ubuntu 的软件包(.deb)和仓库,手动组装一个 Ubuntu 系统。
  • 核心思想:在一个已有的宿主系统(Host System)上,通过分区、下载基础包、配置引导程序等步骤,从无到有地搭建出一个可以启动的 Ubuntu 系统。

2. 准备工作

在开始之前,你需要具备以下基础:

  • 熟练的 Linux 命令行操作能力(文件权限、挂载、chroot 等)。
  • 了解磁盘分区(MBR/GPT, ext4, swap 等)。
  • 了解 GRUB 引导程序的基本原理。

物理/虚拟环境准备:

  • 虚拟机 (推荐):使用 VirtualBox 或 VMware 创建一个干净的虚拟机。这样你可以随意操作,不用担心搞坏物理机。
  • 宿主系统:你需要一个已经安装好的 Linux 系统(可以是 Ubuntu 或其他发行版)来作为构建的“工作台”。

3. 入门步骤概览

由于 Ubuntu From Scratch 没有像 Linux From Scratch 那样拥有极其完善的官方手册(其官方 Wiki 曾一度停止更新或变动),通常的构建流程如下:

第一步:准备宿主环境

更新你的宿主系统,并安装必要的工具:

sudo apt update
sudo apt install build-essential parted gdisk debootstrap grub-pc-bin
  • debootstrap 是关键工具,它用于从 Ubuntu 仓库下载基础系统文件到指定目录。

第二步:磁盘分区

假设你的目标磁盘是 /dev/sdb(在虚拟机中通常是 /dev/sda/dev/vda请务必确认,数据无价)。

  1. 使用 fdiskparted 进行分区。
  2. 创建文件系统(例如 ext4)。
  3. 挂载分区到宿主系统的某个目录,例如 /mnt/ufs
# 示例:假设 sdb1 是根分区
sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /mnt/ufs

第三步:使用 Debootstrap 安装基础系统

这是 UFS 的核心步骤。你需要指定 Ubuntu 的版本代号(如 focal 对应 20.04, jammy 对应 22.04)和镜像源。

# 安装基础系统到 /mnt/ufs
sudo debootstrap --arch amd64 jammy /mnt/ufs http://archive.ubuntu.com/ubuntu

这个过程会下载 Ubuntu 的最小化基础包(大约几百MB)到你的目标分区。

第四步:Chroot 进入新系统

现在你需要进入这个“半成品”系统,进行配置。

# 挂载必要的虚拟文件系统
sudo mount --bind /dev /mnt/ufs/dev
sudo mount --bind /proc /mnt/ufs/proc
sudo mount --bind /sys /mnt/ufs/sys

# 切换到新系统
sudo chroot /mnt/ufs

第五步:配置新系统

chroot 环境下,你现在是新系统的 root 用户。

  1. 设置主机名
    echo "ufs-system" > /etc/hostname
    
  2. 配置网络(可选,现代 Ubuntu 使用 netplan): 创建 /etc/netplan/01-netcfg.yaml
  3. 设置 APT 源: 编辑 /etc/apt/sources.list,添加 Ubuntu 仓库。
  4. 安装内核和引导程序: 这是最关键的一步。你需要安装 Linux 内核和 GRUB。
    apt update
    apt install linux-image-generic
    apt install grub-pc
    
  5. 配置 GRUB
    grub-install /dev/sdb  # 注意是磁盘设备,不是分区
    update-grub
    
  6. 设置 root 密码
    passwd
    

第六步:退出并重启

  1. 退出 chroot (exit)。
  2. 卸载分区:
    sudo umount /mnt/ufs/dev
    sudo umount /mnt/ufs/proc
    sudo umount /mnt/ufs/sys
    sudo umount /mnt/ufs
    
  3. 重启虚拟机,从你刚才构建的硬盘启动。

4. 推荐的学习资源

由于 UFS 的资料比较零散,建议结合以下资源:

  1. Linux From Scratch (LFS) 书:虽然构建方式不同(LFS 是编译,UFS 是包管理),但 LFS 书中关于**分区、挂载、chroot 环境、系统配置(fstab, passwd, group)**的概念是完全通用的。强烈建议先看 LFS 的前几章理解原理。
  2. Ubuntu Wiki / Debootstrap 文档
    • 搜索 “Debootstrap Chroot” 或 “Installing Ubuntu from a Unix/Linux System”。
    • Ubuntu 官方安装指南中有关于“从现有 Linux 安装”的章节。
  3. Arch Wiki
    • 虽然 Arch 不是 Ubuntu,但 Arch Wiki 关于安装过程的文档(特别是关于 chrootfstab 的部分)是全 Linux 界最清晰的,极具参考价值。

5. 常见坑点

  • UUID 问题:在配置 /etc/fstab 时,最好使用 blkid 命令获取分区的 UUID,而不是写死设备名(如 /dev/sda1),因为设备名可能会变。
  • Grub 安装失败:确保你在 chroot 环境中正确挂载了 /dev, /proc, /sys,否则 grub-install 会找不到设备。
  • 网络未配置:最小化的 debootstrap 系统可能没有网络工具,需要在 chroot 后手动安装 iproute2, iputils-ping, netplan.io 等。

总结

入门 Ubuntu From Scratch 的最佳路径是:先玩虚拟机 -> 学习 LFS 的前几章概念 -> 使用 Debootstrap 搭建骨架 -> 手动配置内核和 GRUB

如果你只是想体验“从零构建”的乐趣,LFS 的文档更完善;如果你必须得到一个 Ubuntu 环境且想了解其底层,UFS 是很好的选择。祝你构建顺利!

0