Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103683602
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-03-27 08:53:54

作者:Mayank Sharma  出处:IBM DW中国   

 


尽管 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 对此做出了更好的解释。



图 1. livecd 工具包之间的关系

Zeuthen 还指出将来该模式也可能会有助于其他正式的 Fedora Special Interest Groups (SIGs) 从这些 RPM 发展其自己的发行版。



图 2. 派生包的可能组织

这听起来可能有点难于理解,但是一旦您实际动手操作,就会对此方法赞赏有加。

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



        
$ su -

# wget -c 
# rpm -ivh livecd-tools-001-1.i386.rpm

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



        
$ livecd-creator
No packages specified.

usage: livecd-creator [--help] 
                      [--repo=, ...] [--repo=,]
                      --package= [--package= ...]
                      [--exclude-package=] --exclude-package= ...]
                      [--base-on=]
                      [--fslabel=

另外,您还需要能够访问定制 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  /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 
# wget -c 
# wget -c 
# 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, \
      --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, \
      --repo=livna, \
      --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-* 和前缀更小的包。

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



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



         
        #!/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 文件。可以使用 并对它进行编辑,以便包含关于新配置文件的信息。

大致说来,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 来使用最新创建的包。



         
# livecd-creator --repo=c6,file:///var/www/html/repo/core \
      --repo=lcd6,file:///root/base_packages \
      --package=fedora-livecd-office-code \
      --repo=e6, \
      --fslabel=My-Fedora-Office-Code-LiveCD

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

一旦熟悉了创建配置 RPM 的过程,您就能立刻创建 Live CD。您可通过调整设置和添加或删除包来定制 Live CD。另外,您还能将任意数据文件移到 Live CD 环境中,正如我在 SPEC 文件中所展示的那样。

Live CD 安装程序已经处于测试阶段,何时发布只是个时间问题。通过配置文件中的一个条目或 --package 选项就可将其绑定到 Live CD,使其完全可以在硬盘上安装。定制 Linux 发行版转瞬即得,够酷吧?

描述 名字 大小 下载方法
样例 SPEC 文件 fedora-livecd-custom.zip 2KB HTTP

原文链接:http://www.ibm.com/developerworks/cn/linux/l-fedora-livecd/index.html

阅读(281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~