第一步是获取 livecd-tools RPM,可从 Zeuthen 的 Fedora 主页 获得。直接获取并安装 livecd-tools-001-1.i386.rpm,如下所示:

 

 

$ su -
<Enter root password>
# wget -c http://people.redhat.com/davidz/livecd/i386/livecd-tools-001-1.i386.rpm
# rpm -ivh livecd-tools-001-1.i386.rpm

 

现在应该使用 livecd-creator 命令,不使用任何选项调用该命令可获取一个简单的命令列表。

清单 2. livecd-creator 命令提供的选项

$ livecd-creator
No packages specified.
usage: livecd-creator [--help]
                      [--repo=<name1>,<url1> ...] [--repo=<name2>,<url2>]
                      --package=<p1> [--package=<p2> ...]
                      [--exclude-package=<e1>] --exclude-package=<e2> ...]
                      [--base-on=<path-to-iso-file>]
                      [--fslabel=<label>]
 --help             : Print usage and exit
 --repo             : Path to yum repository
 --package          : Include this package
 --exclude-package  : Exclude this package
 --base-on          : Add packages to an existing live CD iso9660 p_w_picpath
 --fslabel          : File system label (default: livecd-YYYYMMDD-HHMI)

 

创建核心包的本地存储库

另外,您还需要能够访问定制 Live CD 上所需工具的 RPM。如果您拥有快速的 Internet 连接,则可在创建 Live CD 之前使用 livecd-creator 命令下载这些 RPM 及其依赖的包。另一个选择是从 Fedora Core 6 安装 CD 或 DVD 中复制所有包并创建本地的“核心”存储库。要创建本地存储库,需要 createrepo 工具

清单 3. 安装 createrepo 工具

# wget -c http://tqmcube.com/files/createrepo-0.4.3-5.1.noarch.rpm
# rpm -ivh createrepo-0.4.3-5.1.noarch.rpm

 

现在创建本地存储库,首先从 Core 6 的 5 张 CD 或 1 张 DVD 中复制所有的 RPM,然后使用 createrepo 工具。

清单 4. 创建本地存储库

# mkdir /var/www/html/repo/core/
# cp <PATH TO RPMs> /var/www/html/repo/core/
# createrepo /var/www/html/repo/core/

 

执行完最后一条命令要花费些时间,它将创建一个 repodata 目录。livecd-creator 命令使用此目录来访问包。

创建配置包的本地存储库

由于要使用 Zeuthen 的包作为 Live CD 的基础,因此也需要为它们创建本地存储库。

清单 5. 创建 LiveCD 包的存储库

# mkdir base_packages
# cd base_packages
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-6-1.i386.rpm
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-gnome-6-1.i386.rpm
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-desktop-6-1.i386.rpm
# createrepo /root/base_packages

 

跟以前一样,最后一条命令将生成 repodata 目录,帮助 livecd-creator 定位配置包。

制作 CD

设置好存储库后,就可轻松地创建定制 Live CD 了。livecd-creator 命令生成 ISO 映像,这些映像可被烧制成 CD-R。但是我建议使用虚拟化软件测试 ISO,而不要实际将它们烧制到物理介质上。有几种这类软件可免费获得,如 VMware Player、QEMU 和 VirtualBox。

最小的 Live CD

要熟悉 livecd-creator 命令的用法,可由创建最小的 Live CD 开始:

清单 6. 创建最小的 Live CD

# livecd-creator --repo=c6,file:///var/www/html/repo/core --package=bash
      --package=kernel --package=grub --fslabel=Fedora-minimal-LiveCD

 

此命令要求 livecd-creator 从本地存储库中获取三个包 —— bash、grub 和 kernel,并将它们包含到名为 Fedora-minimal-LiveCD 的 Live CD 中。livecd-creator 命令使用 Fedora 的 YUM 安装这些包,也因此要安装指定包依赖的其他应用程序。

执行完该命令要花费些时间,因为它将创建工作区,然后安装指定的包和它们的依赖项,重新标记 SELinux(Fedora 的安全机制)的工作区,压缩整个工作区,配置 Live CD bootloader、GRUB,并最终创建 ISO 映像。

恭喜您!您成功创建了您的第一个 Live CD。当然,您尚不能使用它来实现多少功能,因为缺乏配置文件。

带 GNOME 的 Live CD

既然您已经了解了 livecd-creator 命令的用法,现在就可以使用它创建包含 GNOME 的 Live CD 了。

清单 7. 创建带 GNOME 的 Live CD

# livecd-creator --repo=c6,file:///var/www/html/repo/core
      --repo=lcd6,file:///root/base_packages
      --package=fedora-livecd-gnome
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386
      --fslabel=My-Fedora-LiveCD-1

 

这里,使用本地存储库获取基础包并指定 CD 应该基于哪个配置包。还要指定 fedora-livecd-gnome 所需的包都应从本地核心存储库中获取。fedora-livecd-gnome 中有一些包不在核心存储库中,这些包将通过给定的 URL 从附加存储库中获取。最后,它将创建名为 My-Fedora-LiveCD-1.iso 的 ISO。

如果 livecd-creator 无法找到包 —— 例如,如果它不在指定的存储库中 —— 则命令会跳过该包并仍将继续创建 Live CD。除非缺少的包是关键包(如 kernel),否则,您均将得到一个可用的 Live CD。

除配置 RPM 中提到的包外,还可使用 --package 开关添加定制包。livecd-creator 命令也可使用多个存储库构建 CD。

清单 8. 使用多个存储库创建 Live CD

 # livecd-creator --repo=c6,file:///var/www/html/repo/core
      --package=openoffice
      --repo=lcd6,file:///root/base_packages
      --package=fedora-livecd-gnome
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386
      --repo=livna,http://rpm.livna.org/fedora/6/i386
      --package=vlc
      --fslabel=My-LiveCD-2

 

与前一个示例中一样,此命令使用所有来自 fedora-livecd-gnome 的包创建 Live CD。另外,它将包含 OpenOffice.org 办公套件,该套件可从核心存储库中获得。它也将添加来自 livna 存储库的 VLC Media Player。我们将其称作 My-LiveCD-2,因为它包含来自第三方存储库的包,不能被称作 Fedora Live CD。

如果创建 CD 后,想要将另一个应用程序(如 Evolution e-mail client)添加到定制 CD 中可以么?没问题。如果前一个 CD 的 ISO 可用,则只需让 livecd-creator 使用此 ISO 的包并追加新包即可。

清单 9. 向现有的 Live CD ISO 中添加新包

# livecd-creator --repo=c6,file:///var/www/html/repo/core
      --base-on=My-LiveCD-2.iso
      --package=evolution
      --fslabel=My-LiveCD-New

 

这将根据前一个 ISO 中的包和附加的 Evolution 包创建一个新的 Live CD。

创建定制配置包

我希望上述示例能让您了解创建 Live CD 实际上是一项很简单的工作。使用 Zeuthen 提供的包,您可继续创建 Live CD,向其中添加来自任何存储库的应用程序。

但是假设您需要创建可用于编写文档和代码的 Live CD。您希望为编写代码文档将 OpenOffice.org、Evolution e-mail client、Beagle desktop search、GAIM instant messenger、Xchat IRC client、GIMP p_w_picpath manipulator、GCC compiler、GDB debugger 和 Doxygen 包含进来。

可以在每次想要装配 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-* 和前缀更小的包。

文件的第一部分包含要安装的应用程序的列表,第二部分则包含该特殊环境中所需做出的配置。

清单 10. 20-fedora-livecd-gnome.conf 文件的内容

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
.
.
.
.

 

如您所见,大多数工作(如设置用户、设置网络)都由 fedora-gnome 包完成。

创建配置文件

创建配置文件的最佳方法是使用 20-fedora-livecd-gnome.conf 并删除 GNOME 特有的位。让我们调用 40-fedora-livecd-office-code.conf 文件。这应该能够奏效:

# cp 20-fedora-livecd-gnome.conf 40-fedora-livecd-office-code.conf

删除 GNOME 位后,可添加所需包的列表。新文件应显示如下内容(请注意:为节省空间起见,我删除了许可证位):

清单 11. 最新创建的 40-fedora-live-office.conf 文件

        #!/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

 

别忘了创建 ISO 之前将配置包的名称包含到要删除包的列表中。

创建 RPM

在您可以实际使用此配置文件之前,需要先利用它来创建 RPM。创建 RPM 需要 SPEC 文件。可以使用 Zeuthen 的 fedora-livecd.spec 并对它进行编辑,以便包含关于新配置文件的信息。

大致说来,SPEC 文件包含将被包含到 RPM 中的文件列表,以及安装 RPM 时存放这些文件的位置。我无意深入探讨创建 SPEC 文件的细节,但是您可以使用我为本文创建的 SPEC 文件。请从本文后面的 下载 部分下载该文件,并阅读注释以了解对 Zeuthen 的原始文件做出的更改。

请注意:SPEC 文件指向其他包(如 fedora-live-gnome-fedora-livecd-desktop)的配置文件。要确保这些配置文件也都可用。

Fedora 使用 rpmbuild 命令来利用 SPEC 文件创建 RPM。rpmbuild 命令要求所有的 .conf 配置文件都位于 /usr/src/redhat/SOURCES 目录下,并且 SPEC 文件中所有称作 SOURCE 的文件也应位于该目录下。另外还要确保 fedora-livecd.spec 文件位于 /usr/src/redhat/SPECS 目录下。

清单 12. 创建新的 RPM

# cd /usr/src/redhat/SPECS
# rpmbuild -bb fedora-livecd.spec
# ls /usr/src/redhat/RPMS/i386
fedora-livecd-6-2.i386.rpm
fedora-livecd-gnome-6-2.i386.rpm
fedora-livecd-desktop-6-2.i386.rpm
fedora-livecd-office-6-2.i386.rpm

 

为了区别定制 RPM 和原始 RPM,我已将其版本定为 6-2 而不是原始的 6-1。

使用定制 RPM 构建 Live CD

一旦您可以自由处理 RPM,创建 Live CD 的过程也就大同小异了。使用新的 RPM 重新创建包的本地存储库即可。

清单 13. 使用新的 RPM 创建配置包的本地存储库

# rm /root/base_packages/*
# cp /usr/src/redhat/RPMS/* /root/base_packages/
# createrepo /root/base_packages

 

现在通过 livecd-creator 来使用最新创建的包。

清单 14. 使用新的 Fedora-Office-Code-LiveCD RPM 创建 Live CD

# livecd-creator --repo=c6,file:///var/www/html/repo/core
      --repo=lcd6,file:///root/base_packages
      --package=fedora-livecd-office-code
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386
      --fslabel=My-Fedora-Office-Code-LiveCD

转眼之间!您就从完全由自己定制的配置获得了完全由自己定制的 Live CD.