製作Fedora Live CD
第一步是擷取 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 image --fslabel : File system label (default: livecd-YYYYMMDD-HHMI) |
建立核心包的本機存放區庫
另外,您還需要能夠訪問定製 Live CD 上所需工具的 RPM。如果您擁有快速的 網際網路連線,則可在建立 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 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。建立 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.