第一步是获取 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
命令,不使用任何选项调用该命令可获取一个简单的命令列表。
$ 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 image --fslabel : File system label (default: livecd-YYYYMMDD-HHMI) |
另外,您还需要能够访问定制 Live CD 上所需工具的 RPM。如果您拥有快速的 Internet 连接,则可在创建 Live CD 之前使用 livecd-creator
命令下载这些 RPM 及其依赖的包。另一个选择是从 Fedora Core 6 安装 CD 或 DVD 中复制所有包并创建本地的“核心”存储库。要创建本地存储库,需要 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 工具。
# 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 的基础,因此也需要为它们创建本地存储库。
# 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
定位配置包。
设置好存储库后,就可轻松地创建定制 Live CD 了。livecd-creator
命令生成 ISO 映像,这些映像可被烧制成 CD-R。但是我建议使用虚拟化软件测试 ISO,而不要实际将它们烧制到物理介质上。有几种这类软件可免费获得,如 VMware Player、QEMU 和 VirtualBox。
要熟悉 livecd-creator
命令的用法,可由创建最小的 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。当然,您尚不能使用它来实现多少功能,因为缺乏配置文件。
既然您已经了解了 livecd-creator
命令的用法,现在就可以使用它创建包含 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。
# 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 的包并追加新包即可。
# 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 image 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 需要 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 目录下。
# 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 重新创建包的本地存储库即可。
# 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.