温馨提示×

怎么制作ubuntu fromscratch镜像

小樊
38
2026-09-25 17:48:02
栏目: 智能运维

制作 Ubuntu From Scratch(UFS) 镜像,本质上是从零开始构建一个最小化的 Ubuntu 系统(类似 LFS,但基于 Ubuntu 的软件包体系)。下面给你一套可落地的完整思路与步骤,适用于制作 可用于容器 / 虚拟机 / 物理机 的 Ubuntu 基础镜像。


一、明确目标

先确定你要的“From Scratch”到什么程度:

类型 说明
真·From Scratch 只用 debootstrap + 手动配置
半 From Scratch 基于 ubuntu-minimal 再裁剪
容器镜像 使用 debootstrap + tar
虚拟机镜像 debootstrap + qemu / cloud-init

下面以 Ubuntu 22.04 / 24.04 + debootstrap + 容器镜像 为例。


二、准备宿主机环境

sudo apt update
sudo apt install -y debootstrap squashfs-tools git qemu-user-static

建议使用 Ubuntu / Debian 宿主机。


三、使用 debootstrap 构建基础系统

sudo debootstrap \
  --arch=amd64 \
  --variant=minbase \
  jammy /ubuntu-root \
  http://archive.ubuntu.com/ubuntu

说明:

  • minbase:最小化系统
  • jammy:Ubuntu 22.04
  • /ubuntu-root:目标根目录

四、进入 Chroot 环境

sudo chroot /ubuntu-root /bin/bash

在 chroot 内执行:

apt update
apt install -y \
  systemd \
  systemd-sysv \
  netplan.io \
  nano \
  ca-certificates \
  sudo

清理:

apt clean
rm -rf /var/lib/apt/lists/*

五、(可选)配置基础系统

1. 设置 hostname

echo "ubuntu-fromscratch" > /etc/hostname

2. 配置网络(Netplan)

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

3. 创建用户

useradd -m -s /bin/bash ubuntu
echo "ubuntu:ubuntu" | chpasswd
usermod -aG sudo ubuntu

六、打包为镜像

方式一:Docker / 容器镜像

cd /ubuntu-root
sudo tar -czf ../ubuntu-fromscratch.tar.gz .

导入为 Docker 镜像:

docker import ubuntu-fromscratch.tar.gz my-ubuntu:fromscratch

方式二:Raw / QCow2 虚拟机镜像

dd if=/dev/zero of=ubuntu.img bs=1M count=2048
mkfs.ext4 ubuntu.img
mkdir /mnt/ufs
mount ubuntu.img /mnt/ufs
cp -a /ubuntu-root/. /mnt/ufs/
umount /mnt/ufs

转换为 qcow2:

qemu-img convert -f raw -O qcow2 ubuntu.img ubuntu-fromscratch.qcow2

七、进阶 From Scratch(更接近 LFS)

如果你想 完全不用 debootstrap:

  1. 下载 Ubuntu .deb 包
  2. 手动解包:
    dpkg-deb -x xxx.deb root/
    
  3. 手动配置:
    • /etc/passwd
    • /etc/fstab
    • /lib/systemd
  4. 使用 multistrap 或 mmdebstrap

示例(mmdebstrap):

mmdebstrap jammy ./root \
  --variant=apt \
  --include=systemd,sudo

八、验证镜像

docker run -it my-ubuntu:fromscratch bash

或启动虚拟机:

qemu-system-x86_64 -hda ubuntu-fromscratch.qcow2

九、常见坑

  • ❌ 没装 systemd → 无法 init
  • ❌ 没装 ca-certificates → apt 失败
  • ❌ chroot 忘挂载 /proc
mount -t proc proc /proc

十、可参考项目

  • Ubuntu Base:https://wiki.ubuntu.com/Base
  • mmdebstrap
  • Ubuntu cloud-images
  • LFS(思路参考)

如果你愿意,我可以:

  • 给你 一键脚本
  • 帮你做 Docker / KVM / ARM 架构
  • 或做一个 极简 Ubuntu(< 30MB)

你打算用在 容器 / 虚拟机 / 嵌入式 哪个场景?

0 踩