基于上游发行版制作你的 Linux 发行版 — live-build/archiso/livecd-tools 指南
六月 25, 2026 [linux] #linux #debian #archlinux #fedora #live-build #archiso #livecd-tools为什么基于上游制作
自己从 LFS 构建系统不现实——没有包管理、没有软件仓库。绝大多数"小而美"的发行版(elementary OS、Kali Linux、PureOS)都是基于 Debian/Arch/Fedora 等上游发行版的软件源制作的。
三大上游各自提供了成熟的构建工具链:
| 上游 | 工具 | 知名下游发行版 |
|---|---|---|
| Debian | live-build | Kali Linux, elementary OS, PureOS |
| Arch Linux | archiso | Manjaro, EndeavourOS, ArcoLinux |
| Fedora | livecd-tools | Nobara, Ultramarine |
下文以 Debian + live-build 为主线讲解实操,Arch 和 Fedora 的方案提要点。
live-build 快速上手(重点)
安装
sudo apt install live-build
三步构建一个默认 ISO
mkdir myos && cd myos
# 1. 生成配置骨架
lb config --distribution bookworm \
--archive-areas "main contrib non-free non-free-firmware" \
--mirror-binary https://mirrors.163.com/debian
# 2. 构建(需 root)
sudo lb build
# 3. 产物:live-image-amd64.hybrid.iso
lb build 按五个阶段顺序执行:
- bootstrap — debootstrap 构建基础 Debian 根文件系统
- chroot — 安装内核、软件包、执行 hook(大部分定制在此阶段)
- installer — (可选) 集成 Debian Installer
- binary — 打包为可引导 ISO
- source — (可选) 生成源码映像
auto 脚本:固化配置
每次敲长参数不现实,用 auto/ 目录下的脚本固化:
# auto/config
#!/bin/sh
set -e
lb config noauto \
--architecture amd64 \
--distribution bookworm \
--debian-installer live \
--debian-installer-gui true \
--iso-application "MyOS" \
--bootappend-live "boot=live components" \
--mirror-binary https://mirrors.163.com/debian \
"${@}"
# auto/build
#!/bin/sh
set -e
lb build noauto "${@}" 2>&1 | tee build.log
# auto/clean
#!/bin/sh
set -e
lb clean noauto "${@}"
rm -f build.log
之后只需 sudo lb config && sudo lb build。每次重新构建前先 sudo lb clean。
定制软件包
官方仓库中的包 — 在 config/package-lists/ 下创建 .list.chroot 文件:
# config/package-lists/desktop.list.chroot
gnome-core
firefox-esr
git
build-essential
外部 deb 包(如 VSCode、Chrome)— 直接放到 config/packages.chroot/ 目录即可。
定制系统文件 & GNOME 配置
添加/替换文件 — 放到 config/includes.chroot_after_packages/,对应该 Live 系统的根目录 /:
# 例如添加自定义配置
config/includes.chroot_after_packages/etc/NetworkManager/conf.d/dns.conf
GNOME 配置 — 通过 vendor override 文件覆盖 GSettings 默认值。放到 config/includes.chroot_after_packages/usr/share/glib-2.0/schemas/:
# 20_myos-theme.gschema.override
[org.gnome.desktop.interface]
gtk-theme='Adwaita-dark'
icon-theme='Papirus'
[org.gnome.desktop.background]
picture-uri='file:///usr/share/backgrounds/myos/wallpaper.png'
关键一步:添加 hook 脚本重新编译 schemas:
# config/hooks/live/0100-compile-schemas.hook.chroot
#!/bin/sh
set -e
glib-compile-schemas /usr/share/glib-2.0/schemas/
Live 系统运行时配置
通过 live-config 配置文件设置主机名、语言、Live 用户等:
# config/includes.chroot_after_packages/etc/live/config.conf.d/myos.conf
LIVE_HOSTNAME="MyOS"
LIVE_LOCALES="zh_CN.UTF-8"
LIVE_TIMEZONE="Asia/Shanghai"
LIVE_USERNAME="liveuser"
定制引导界面
在 config/bootloaders/ 下覆盖默认配置:
- BIOS (ISOLINUX): 覆盖
isolinux/splash.png(640×480)、isolinux/menu.cfg - UEFI (GRUB): 覆盖
grub-pc/splash.png、grub-pc/live-theme/theme.txt
调试技巧
# 缓存多阶段,避免重复构建
lb config --cache-stages "bootstrap,chroot"
# 启用调试输出
lb config --debug
Arch Linux:archiso
Arch 的构建工具为 archiso,核心是通过 mkarchiso 命令构建 ISO。配置文件在 profiledef.sh 中定义基础包和引导参数,在 packages.x86_64 列表中指定需要安装的包。
# 安装
sudo pacman -S archiso
# 复制官方 releng 配置作为基础
cp -r /usr/share/archiso/configs/releng ./myarch
# 编辑 packages.x86_64 添加自定义包,然后构建
sudo mkarchiso -v -w /tmp/archiso-tmp -o ./out ./myarch
与 live-build 类似,archiso 通过 airootfs/ 目录覆盖文件、通过 profiledef.sh 中的 customize_airootfs() 函数执行 hook 操作。
Fedora:livecd-tools
Fedora 使用 livecd-tools(基于 kickstart),通过 .ks 配置文件声明式地定义要安装的包和要执行的脚本。
sudo dnf install livecd-tools
# 编写 kickstart 文件 myos.ks,然后构建
sudo livecd-creator -c myos.ks -f MyOS --cache /var/cache/live
小结
| 特性 | live-build (Debian) | archiso (Arch) | livecd-tools (Fedora) |
|---|---|---|---|
| 配置方式 | auto 脚本 + config 目录 | profiledef.sh + 包列表 | kickstart .ks 文件 |
| 包管理 | APT + deb 文件 | pacman | DNF |
| 引导 | ISOLINUX + GRUB | systemd-boot + GRUB | GRUB |
| 学习曲线 | 中等,目录结构清晰 | 较简单,配置集中 | 简单,声明式 |
三者的共同思路:选择包列表 → 通过 hook 定制文件/配置 → 打包 ISO。选哪个取决于你熟悉的上游发行版——你用什么系统,就用它的工具链打包。