Fedora Live CD を作成する

Fedora Linux をベースにしたカスタム Live CD を作成するための手順

Fedora Linux® は一般的で成熟した Linux ディストリビューションであり、多くの人が Fedora をベースとしたLive CD ディストリビューションを作成していますが、Fedora プロジェクト自体は 2006年の12月まで、最初の正式な Live CDをリリースしませんでした。Fedora Live CD 作成ツールである Pilgrim をリライトしたものを使って、使いやすい、独自のカスタムLive CD を作る方法を学びましょう。

Mayank Sharma (geeky_bodhi@yahoo.co.in), Freelance technical writer

Mayank Sharmaは過去5年間、主にフリー・ソフトやオープン・ソフトウェアに関する技術記事を書いてきています。またアジアでの先端的なF LOSS月刊誌、LINUX For Youの立ち上げに(副編集者として)貢献し、現在はローカライズに特化したWebベースの資料公開のとりまとめや教育、F LOSSへの移行などに多忙な日々を送っています。Mayankは執筆活動の他にハッキングにも熱心で、最近ではUtkarshローカライズ・プロジェクト用のインストーラーに寄与しました。現在もコンピューター・サイエンスの学位を取るべく苦闘しながら、フォーミュラ・ワンのカー・レースにも熱中しています。



2007年 2月 28日

2006年の12月、Fedora Linux ディストリビューションは、最初の正式な Live CD をリリースしました。この Live CDは、アプリケーションをインテリジェントに選択したことによって、Fedora の最も優れた特徴を見事に表現しています。この Live CD は、多くのアプリケーションの他にいくつかのゲームを含んでいたり、Compiz3D デスクトップを使用していたり、また非英語圏のユーザーにも利用できるようになっていたりします。しかし私が注目したのは、David Zeuthenによる livecd tools でした。このツールを利用すると、Fedora をベースとする Live CD の作成や管理がいとも簡単にできるのです。

Zeuthen は Pilgrim の開発者です。Pilgrim は、OLPC (One Laptop Per Child) プロジェクト (「参考文献」に詳細情報へのリンクがあります) のための、USB フラッシュ・ドライブから実行できるシステム・イメージを作成します。Fedora LiveCD の作成に使用される livecd tools は Pilgrim を Python でリライトしたものであり、Red Hat EnterpriseLinux や CentOS、その他下流の Fedora ディストリビューションから Live CDを作成するために使用することができます。

独自の Live CD の作成に取りかかる前に、Fedora リリースがどのように構成され、配布され、維持管理されているかを理解する必要があります。Fedoraプロジェクトはパッケージを、公開アクセス可能な 2 つのリポジトリーに分けて維持しています。正式な Fedora 開発者によって維持管理されるリポジトリーは「core」リポジトリーと呼ばれ、コントリビューターやコミュニティーによって維持管理されるリポジトリーは「extras」リポジトリーと呼ばれています。リポジトリーは単なるパッケージの集合です。coreリポジトリーと extras リポジトリーの他に、Livna や FreshRPM など、いくつかのサードパーティー製のリポジトリーがあります。

Fedora Core ディストリビューションは core リポジトリーの全パッケージを含んでおり、最新版は Fedora Core 6 です。最初の正式なFedora Live CD は、Fedora Core 6 のパッケージと extras リポジトリーをベースにしています。livecd toolsは Fedora のextras リポジトリーに含まれるように既にプロジェクトに提出されています。(extras リポジトリーは Fedora7 がリリースされるまでには core リポジトリーにマージされる予定です。)

なぜ livecd tools は特別なのか

Live CD を作成する上で livecd tools を使う最大の利点は、livecd tools の設計ではツールと Live CD とが分離されていることです。LiveCD を作成するために必要なものは、一連の構成ファイルのみです。これらの構成ファイルは、Live CD 上に必要なパッケージのリストを含み、またLive CD が起動した時に発生するシステム構成のタイプを記述します。

カスタムの Live CD を管理する人に便利なように、こうした構成ファイルは RPM としてパッケージされ、独自のリポジトリーに置かれます。Fedoraディストリビューションとそのリポジトリーのバージョンが上がるのに合わせて、これらの構成ファイルを更新し続けることで、関連するパッケージを引き出すことができます。

Zeuthen は、このような RPM パッケージを 3 つ用意しており、いずれもカスタムの Live CD のベースにすることができます。これらのRPM は、派生バージョンの作成を支援する継承構造をとっています。fedora-livecd packageはユーザー・インターフェースを持たない最小限の Live CD です。fedora-livecd-gnome パッケージは fedora-base パッケージをベースにし、GNOME デスクトップを加えたものです。fedora-livecd-desktop パッケージは fedora-gnome パッケージをベースに構築されたもので、GNOME デスクトップにアプリケーションやその他のものをたくさん追加しています。

図 1 は Zeuthen によるものですが、このことをもっとうまく説明しています。

図 1. livecd tools のパッケージ間の関係
図 1. livecd tools のパッケージ間の関係

また Zeuthen は、将来他の正式な Fedora SIG (Special Interest Group) が、こうした RPM から派生した独自のディストリビューションを作成する際にも、これが役立つかもしれないと述べています。

図 2. 考えられる派生パッケージの構成
図 2. 考えられる派生パッケージの構成

これは少し曖昧に思えるかもしれませんが、実際に皆さんが自分でいじってみると、この方法の利点を実感できるはずです。


ベースを設定する

最初のステップは、Zeuthen の Fedora ホームページから livecd-tools RPM を入手することです。単純に livecd-tools-001-1.i386.rpm をダウンロードし、次のようにインストールします。

リスト 1. Live CD tools をインストールする
$ 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)

core パッケージのローカル・リポジトリーを作成する

また、カスタム Live CD に入れたいと考えるツールの RPM にもアクセスできる必要があります。高速インターネットに接続されていれば、livecd-creator が、そうした RPM とそれらが依存するパッケージを、Live CD を作成する前にダウンロードしてくれます。別の方法としては、FedoraCore 6 のインストール CD あるいは DVD からすべてのパッケージをコピーし、ローカルの「core」リポジトリーを作成する方法があります。ローカル・リポジトリーを作成するためには、createrepo toolが必要です。

リスト 3. createrepo tool をインストールする
# 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 tool を使って、ローカル・リポジトリーを作成します。

リスト 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 コマンドは、このディレクトリーを使ってパッケージを利用します。

構成パッケージのローカル・リポジトリーを作成する

これから作成しようとする Live CD のベースとして Zeuthen のパッケージを使用しようとしているので、そのためのローカル・リポジトリーも作成する必要があります。

リスト 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

先ほどと同じく、この最後のコマンドは、livecd-creator が構成パッケージを探す際に役立つ repodata ディレクトリーを作成します。


CD を作成する

リポジトリーを設定できたので、容易にカスタムの Live CD を作成することができます。livecd-creator コマンドは、CD-R に書き込める ISO イメージを作成します。しかし私としては、実際に物理メディアには書き込まず、仮想化ソフトウェアを使って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 に対して、ローカル・リポジトリーから 3 つのパッケージ (bash と grub、kernel) を取得し、それらを Fedora-minimal-LiveCDという名前の Live CD に含めるように命令しています。livecd-creator コマンドは Fedora の YUM を使ってこれらのパッケージをインストールし、従って、指定されたパッケージが依存する他のアプリケーションもインストールします。

このコマンドは完了までに少し時間がかかりますが、その理由は、まず作業スペースを作成し、次に指定されたパッケージとそれらに依存するものをインストールし、Fedoraのセキュリティー機構である SELinux のための作業スペースのラベルを変更し、作業スペース全体を圧縮し、Live CD のブートローダーであるGRUB を構成し、そして最後に ISO イメージを作成するためです。

おめでとうございます。これで最初の Live CD ができました。もちろん、この 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で要求されるパッケージを、ローカルの core リポジトリーからフェッチすべきであることも指定しています。fedora-livecd-gnomeの中には、core リポジトリーに入っていないパッケージがいくつかあります。こうしたパッケージは、指定された URL の extras リポジトリーからフェッチされます。そして最後に、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 を作成します。さらにこのLive CD は、core リポジトリーにある OpenOffice.org のオフィス・スイートも含みます。また、livna リポジトリーにあるVLC Media Player も追加します。この Live CD はサードパーティー製のリポジトリーのパッケージを含み、Fedora LiveCD とは呼べないため、これを My-LiveCD-2 と呼ぶことにします。

CD を作成した後に、別のアプリケーション (例えば Evolution E メール・クライアントなど) をこのカスタム CD に追加したい場合にはどうするのでしょう。まったく問題ありません。その前のCD の ISO イメージを持っていれば、この ISO イメージのパッケージを使用して新しいパッケージを追加するように、単純に livecd-creator に命令すればよいのです。

リスト 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 のパッケージを使うことで、いくらでも LiveCD を作成でき、任意のリポジトリーからアプリケーションを追加できるのです。

しかし、例えば文書やコードを作成するために使用する Live CD を作成する必要があるとしたらどうでしょう。そしてこの Live CD の中に、OpenOffice.orgや、Evolution の E メール・クライアント、Beagle デスクトップ検索、GAIM インスタント・メッセンジャー、Xchat IRCクライアント、GIMP イメージ・マニピュレーター、GCC コンパイラー、GDB デバッガー、そしてコード文書化用の 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-* パッケージの後に来るもので、おそらく 10-* パッケージに依存しており、また 30-* パッケージは 20-*およびそれ以前のパッケージの後に来るものであり、おそらくそうしたパッケージに依存しています。

このファイルの最初の部分はインストールすべきアプリケーションのリストを含んでおり、また 2 番目の部分は、その特定の環境に対して設定する必要がある構成を含んでいます。

リスト 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 構成ファイルが、(SPEC ファイルの中で SOURCE として記述されている他のすべてのファイルと共に)/usr/src/redhat/SOURCES ディレクトリーの下にあることを想定しています。また、Zeuthen's 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 をオリジナルと区別するために、私はバージョン番号をオリジナルの 6-1 から 6-2 に変更しました。

カスタムの 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 を作成することができました。

構成 RPM の作成方法が理解できさえすれば、すぐに Live CD を作成できます。また任意の設定を変更し、パッケージを追加したり削除したりすることで、LiveCD をカスタマイズできます。さらに、私が SPEC ファイルで示したように、Live CD 環境の中に任意のデータ・ファイルを移動することもできます。

既にテスト段階にある Live CD インストーラーがリリースされるのも時間の問題です。構成ファイルの中に 1 つのエントリーを含めるだけで、あるいは--packageオプションを付けるだけで、それが Live CD の中にバンドルされ、そのままハードディスクにインストールできるものになります。なんと素晴らしいことでしょう。皆さん独自のカスタムLinux ディストリビューションが即座に作成できるのです。


ダウンロード

内容ファイル名サイズ
Sample SPEC filefedora-livecd-custom.zip2KB

参考文献

学ぶために

製品や技術を入手するために

  • LivnaFreshRPMの 2 つは、Fedora 用の非公式サードパーティー・パッケージを入手するためのリポジトリーとして非常に人気があります。
  • Fedora 6 の「core」 リポジトリーと 「extras」 リポジトリーに含まれるパッケージのリストを見ることができます。
  • Zeuthen の Fedora ホームページから livecd-tools RPM を入手してください。
  • createrepo toolを使ってローカル・リポジトリーを作成してください。
  • RPM を作成するためには SPEC ファイルが必要です。 Zeuthen の fedora-livecd.specを入手し、これを編集して新しい構成ファイルに関する情報を含めてください。
  • IBM trial softwareは developerWorks から直接ダウンロードすることができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, Open source
ArticleID=246052
ArticleTitle=Fedora Live CD を作成する
publish-date=02282007