尽管 Fedora Linux® 是一个很流行且很成熟的 Linux 发行版,并且很多人已经创建了基于 Fedora 的 Live CD 发行版,但 Fedora 项目本身直到 2006 年 12 月才正式发布它的第一个 Live CD 版本。通过本文,了解如何使用 Pilgrim(Fedora Live CD 创建工具)的重写(rewrite)构建易于使用的定制 Live CD。
2006 年 12 月,Fedora Linux 发行版发布了它的第一个正式的 Live CD 版本,由于选用了一些优秀的应用程序,该版本很好地宣传了 Fedora 的最佳特性。除了提供很多应用程序之外,Live CD 还带几个游戏,使用了 Compiz 3D 桌面,并可供不会说英语的用户使用。但对我来说,最抢风头的是 David Zeuthen 的 livecd 工具,这些工具使创建和维护基于 Fedora 的定制 Live CD 异常轻松。
Zeuthen 是 Pilgrim 的开发者,Pilgrim 为 One Laptop Per Child(OLPC)项目创建可在 USB 闪存驱动上运行的系统映像(要了解更多信息,请参阅 参考资料 中的链接)。用于创建 Fedora Live CD 的 livecd 工具是 Python 中 Pilgrim 的重写。它可用于从 Red Hat Enterprise Linux、CentOS 和其他下游 Fedora 发行版创建 live CD。
在开始动手打造自己的 Live CD 之前,需要理解 Fedora 版本是如何装配、发行和维护的。Fedora 项目在两个可公开访问的存储库中保存包。由官方的 Fedora 开发者维护的存储库被称作“核心”存储库,由贡献者和社区维护的存储库被称作“附加”存储库。存储库不过是包的集合。除核心存储库和附加存储库外,还有几个第三方存储库,如 Livna 和 FreshRPM。
Fedora Core 发行版包含核心存储库中的所有包,其最新版本为 Fedora Core 6。第一个正式的 Fedora Live CD 基于 Fedora Core 6 和附加存储库中的包。livecd 工具已被提交以便将其包括到 Fedora 的附加存储库中,到 Fedora 7 发布之时该库将被合并进核心存储库。
用 livecd 工具创建 Live CD 的最大优势是工具和 Live CD 是分开的。要打造 Live CD,您的全部所需就是一组配置文件。这些配置文件包含 Live CD 上所需的包的列表,并且描述了系统配置类型,Live CD 一旦引导就会做出这些配置。
为了方便定制 Live CD 维护人员,这些配置文件被作为 RPM 打包,并保存在它们自己的存储库中。因为 Fedora 发行版和其存储库在版本之间迁移,您可以保持更新这些配置文件以获得相关的包。
Zeuthen 中有三个这样的 RPM,定制 Live CD 可以它们为基础。这些 RPM 遵循有助于创建派生版本的继承模式。fedora-livecd 包 是一个不带用户界面的最小的 Live CD 包。fedora-livecd-gnome 包基于 fedora-base 包并包含 GNOME 桌面。fedora-livecd-desktop 包构建于 fedora-gnome 包之上并且为 GNOME 桌面提供了大量的应用程序和其他工具。
图 1,Zeuthen 对此做出了更好的解释。
Zeuthen 还指出将来该模式也可能会有助于其他正式的 Fedora Special Interest Groups (SIGs) 从这些 RPM 发展其自己的发行版。
另外,您还需要能够访问定制 Live CD 上所需工具的 RPM。如果您拥有快速的 Internet 连接,则可在创建 Live CD 之前使用 livecd-creator 命令下载这些 RPM 及其依赖的包。另一个选择是从 Fedora Core 6 安装 CD 或 DVD 中复制所有包并创建本地的“核心”存储库。要创建本地存储库,需要 createrepo 工具。
设置好存储库后,就可轻松地创建定制 Live CD 了。livecd-creator 命令生成 ISO 映像,这些映像可被烧制成 CD-R。但是我建议使用虚拟化软件测试 ISO,而不要实际将它们烧制到物理介质上。有几种这类软件可免费获得,如 VMware Player、QEMU 和 VirtualBox。
可以在每次想要装配 CD 时使用 --package 开关指定它们,也可以编写自己的配置文件。使用配置文件的附加优点是还可以指定定制配置。
创建自己的配置文件之前,请先查看一下用来创建 Live CD 的配置文件:fedora-gnome。可从 RPM 提取该配置文件,方法是在 fedora-livecd-gnome-6-1.i386.rpm 上右击并选择 Extract Here 选项。这应该会在 etc/livecd/ 目录下生成一个名为 20-fedora-livecd-gnome.conf 的文件。前缀数字用于帮助识别包树中的特定的包。因此,20-* 包在 10-* 包之后并可能会依赖于后者,而 30-* 包则在 20-* 之后并可能会依赖于 20-* 和前缀更小的包。
文件的第一部分包含要安装的应用程序的列表,第二部分则包含该特殊环境中所需做出的配置。
case $1 in
# inquire what packages to install; must print packages to install
pkgadd)
echo "
chkconfig
gdm
gnome-panel
nautilus
metacity
gnome-themes
redhat-artwork
gnome-power-manager
gnome-volume-manager
desktop-printing
gnome-terminal
gedit
.
.
.
.
# run configuration scripts when all packages are installed
post)
# mount livecd
mkdir -p /mnt/livecd
mount -o ro -t iso9660 /dev/livecd /mnt/livecd
# add fedora user with no passwd
useradd -c "Fedora live CD" fedora
passwd -d fedora > /dev/null
.
.
.
.
#!/bin/bash
# livecd configuration for Base Fedora system
# PLEASE ADD LICENSE RELATED NOTE
case $1 in
# inquire what packages to install; prints package list on stdout
pkgadd)
echo "
evolution
evolution-connector
evolution-webcal
gaim
xchat
beagle
gimp
openoffice.org-core
openoffice.org-draw
openoffice.org-calc
openoffice.org-graphicfilter
openoffice.org-math
openoffice.org-writer
openoffice.org-xsltfilter
openoffice.org-impress
gcc
gdb
doxygen
"
;;
# run configuration scripts when all packages are installed
post)
;;
# run when an livecd install is complete to clean up
install-post)
;;
# run when an livecd install is complete; must prints packages to remove
install-pkgrem)
echo "
fedora-livecd-office-code
"
;;
esac