Gentoo の大きな特徴は「ユーザに選択肢を与える」「自分好みにカスタマイズできる」という点です。その究極のものとしては、インストーラを自分用にカスタマイズすることでしょう。Gentoo が作成している Catalyst というツールでは、まさにその究極のことができます。このガイドでは、Catalyst を使ってインストール用 LiveCD を簡単に作成する方法を解説します。
Catalyst はもともとインストール用の LiveCD を作成するツールとして開発が始まりました。しかしながら、その過程において、インストール用 LiveCD 作成に必要な機能をはじめ、さまざまな機能が追加されていった結果、現在のところ
ができるツールになりました。本稿では LiveCD の作成まで解説しますが、興味のある人は末尾のリファレンスマニュアルを参考にしてパッケージ CD も作成するとカスタマイズインストールが楽になります。
Catalyst はすでに Portage ツリーに入っているのでインストールは簡単です。
# emerge dev-util/catalyst
ただし、インストールに当たっては簡単な設定例が入っていたほうがなにかと便利なので、doc USE フラグをオンにしてからインストールすることをお薦めします。また、現在 stable となっている catalyst に同梱されている設定例は古いので、1.0.9 以上を使ったほうがいいでしょう。
# mkdir /etc/portage
# echo "dev-util/catalyst" >> /etc/portage/package.keywords
(~x86 など unstable 環境で使っている人は不要です)
# echo "dev-util/catalyst doc" >> /etc/portage/package.use
(doc USE フラグがすでに有効になっていれば不要です)
# emerge catalyst
Catalyst の設定は /etc/catalyst/catalyst.conf で行ないます。ほとんどの場合変更する必要はありませんが、distcc を使ってコンパイルを速くしたい場合は options に distcc を追加しますし、ファイヤウォールの中にいてプロキシを設定しなければならないときは、プロキシの設定を envscript を使って行ないます。
Catalyst はコマンドラインから実行するツールで、オプションを引数として渡すこともできますが、オプションはファイルに全部書いてそれを Catalyst に渡して実行するのがもっとも楽でしょう。サンプルファイルは /usr/share/doc/catalyst-[バージョン]/examples ディレクトリにあります。
LiveCD や stage3 など、Catalyst を用いて作成する ISO イメージや tarball のことを、ターゲットと呼びます。あるターゲットを作成するために必要なターゲットがあり、Catalyst を使うためにはそのターゲットのファイルを事前に用意する必要があります。LiveCD 作成に最低限必要なターゲットを下に掲げます(これに加えて Portage ツリーのスナップショットも必要です)。
| 作成するターゲット | 必要なターゲット |
|---|---|
| livecd-stage2 | livecd-stage1 |
| livecd-stage1 | stage3 |
LiveCD の作成には livecd-stage1 が必要で、livecd-stage1 の作成には stage3 が必要だということが分かります。stage3 は Catalyst で作成するのであれば stage2 を用意しなければなりませんが、幸い stage3 の tarball はインストールに使うファイルの一つとして Gentoo のミラーサイトで配布されているので、新たに用意しなくてもかまいません。Gentoo のミラーサイトなど適当なところからダウンロードしてくればよいのです。
さて、x86 に関しては Gentoo のミラーサイトから stage3 を持ってくればよいだけなので、ここでは Gentoo/ppc を例にとって話を進めましょう。Gentoo/ppc は開発者不足のため 2004.2 をリリースすることができず、Gentoo/ppc 開発者チームの中の一人である pvdabeel が 2004.2 相当のファイルを http://metadistribution.org/gentoo/2004.2/ に置いています。今後 Gentoo/ppc のサポート体制に不安がありますが、stage3-ppc-20040714.tar.bz2 というファイルを取得して、/var/tmp/catalyst/builds というディレクトリに置いてください。
# mkdir /var/tmp/catalyst/builds # wget http://metadistribution.org/gentoo/2004.2/stage3-ppc-20040714.tar.bz2 # mv stage3-ppc-20040714.tar.bz2 /var/tmp/catalyst/builds
次に Portage ツリーのスナップショットを作成します。Catalyst で Portage ツリーのスナップショットを作るには、snapshot というターゲットを使用します。ホームディレクトリに catalyst という名前のディレクトリを作って、そこにこれから作成するターゲットごとの設定ファイル(spec ファイルと呼びます)を置きましょう。
% mkdir ~/catalyst
% cd ~/catalyst
% cp /usr/share/doc/catalyst-1.0.9/examples/snapshot_template.spec snapshot-20040905.spec
(ファイル名はなんでもいいのですが、分かりやすいので
スナップショットを作成した日付にしましょう)
あとはこのファイルを開いて version_stamp: の右に、たとえば 20040905 といった日付を入れます。本当はこれだけでよいのですが、1.0.9 についてくるサンプルは target: の部分が snapshot ではなく snaphost になっている(誤字)ので、snapshot に直してください。次のバージョンでは直っていることでしょう。target: にせよ version_stamp: にせよ、コロン(:)の直後にはスペースが必要です。スペースを忘れるとエラーになりますので、十分注意してください。
上記2箇所に手を入れたらあとは実行するだけです。(root 権限が必要です)
# catalyst -f snapshot-20040905.spec
これで Portage ツリーのスナップショットが /var/tmp/catalyst/snapshots/portage-20040905.tar.bz2 に作成されます。 面倒な人はこれも Gentoo ミラーサイトの snapshots というディレクトリ にあるので、最新だと思われる tarball を取得して上記のディレクトリに入れてください。
次に必要なのは livecd-stage1 です。livecd-stage1 も設定例が用意されているので、コピーして編集しましょう。
% cp /usr/share/doc/catalyst-1.0.9/examples/livecd-stage1_template.spec.txt livecd-stage1-20040905.spec
あとは必要な項目をコメントを見ながら追加します。x86 でも ppc でも必要な項目は同じですが、ppc の場合いくつかコンパイルに失敗するパッケージがあるので、それも発見したら(必要ないパッケージであれば)とりあえずはコメントアウトするとよいでしょう。
## livecd-stage1 template for Gentoo Linux release bootable LiveCDs ## John Davissubarch: ppc (x86 の場合は x86 です。この例では ppc にします。) version_stamp: 20040905 (livecd-stage1 を作成する日付を入れましょう。) target: livecd-stage1 (ターゲット名は livecd-stage1 です。) rel_type: default (default から変更の必要はありません。) profile: default-ppc-2004.2 (使うプロファイル名を入れます。stackable プロファイルは まだうまく動かないようです。) snapshot: 20040905 (Portage ツリーのスナップショットと同じ日付を入れます。 Gentoo ミラーから取得した場合も、それに対応した日付にします。) source_subpath: default/stage3-ppc-20040714 (使う stage3 のバージョンを入れます。x86 を使う場合で、 2004.2 の stage3 であれば、default/stage3-x86-2004.2 となります。) livecd/use: -X -gtk -svga ipv6 socks5 livecd fbcon ssl livecd/packages: baselayout livecd-tools genkernel ucl kudzu-knoppix module-init-tools hotplug irssi aumix metalog pciutils parted mt-st links star strace raidtools nfs-utils jfsutils usbutils speedtouch xfsprogs xfsdump e2fsprogs reiserfsprogs hdparm nano less openssh dhcpcd mingetty pwgen popt dialog rp-pppoe gpm screen mirrorselect penggy iputils hwdata-knoppix hwsetup bootsplash device-mapper lvm2 evms vim gpart pwgen pptpclient mdadm tcptraceroute netcat ethtool wireless-tools
上記のようなファイルを用意して、
# catalyst -f livecd-stage1-20040905.spec
として実行すると livecd-stage1 が作成されます。現在のところ ppc ではいくつかのパッケージ(module-init-tools, speedtouch, penggy, bootsplash, gpart)でエラーが出て stage1 の作成が終了しません。解決策はあるのですが、根本的には stage3 を用意し直さないとだめなようです。
(上の部分新しい stage3 が用意されるまでに暇があったら加筆します)
これで livecd-stage2 を作成するための準備が整ったわけですが、現在の Catalyst 1.0.8.1 と 1.0.9 には、livecd-stage2 をビルドする最中に正しく make.profile のリンクを作成しないというバグがあり、livecd-stage2 を実行することができません。すでにバグ報告はしているので、次のバージョンまでに修正されることでしょう。
(以下まともに動くようになったら追記します)
livecd-stage2 も同様にコピーして編集し、
# catalyst -f livecd-stage2-20040905.spec
とすれば、livecd/iso: で指定した場所に ISO イメージファイルが作成されます。
日本語で書かれた情報はほとんどありません。英語のリソースを参照してください。Catalyst HOWTO とリファレンスマニュアルについては途中まで訳したものがありますが、公開していません。引き続き訳してくださる方いらしたら連絡ください。
