« 弟、中国で行方不明になる | Main | 髪を切りました »

2004年9月 6日

livecd 作成ツール catalyst

俺の使っているGentooLinuxには、KNOPPIXのような1CDLinuxを作成するためのツールでcatalystという物があります。
#Catalystと言ってもCiscoのスイッチの話じゃないです。
これは、GentooLinuxで、1CD Linuxを作るのに凄く便利なツールので、ちょっと使ってみました。使い方を簡単にまとめておこうと思います。

興味のある人は続きをどうぞ。
間違い等、指摘して頂けるとありがたいです。

catalyst自身は本来livecdを作るためだけのものでは無いようです。2004/3/1のGentoo Weekly Newsletterには

Catalystを使えば、開発者やユーザーは、Gentoo Linuxシステムの全てをカスタマイズしたり、作成したりすることができます。すなわち、インストール用のstageから、ブータブルなLiveCD、Gentoo Reference Platform(GRP)としてのカスタマイズされたバイナリパッケージを作成可能です。
とあるので、ま、他にも色々出来るようです。
とりあえず、今回はLiveCDを作るという事を目的にします。

まず、
・Gentoo Linuxのインストールされた環境
・LiveCDのイメージが置けるように容量に余裕のあるディスク
・圧縮ファイルシステムを使うのであれば大きめのswap領域
・CDイメージが作れる環境(mkisofs,etc...)
・genkernelが使える環境
を用意しましょう。swapについてはかつてKNOPPIXをカスタマイズしたときcloopファイルシステムの圧縮に、大体1GB程度あればいいという事をどこかで見たので、ま、それくらいあればいいかと。。
また、catalyst ではカーネル構築の際にgenkernelを用いています。なので、genkernelが使える環境にないと、stage2でうまくコンパイル出来ないでしょう。
どうやら、カーネルにloopback deviceがモジュールとして組み込まれていないと、genkernelが使えないようなので、チェックしてみるといいかも知れません。

catalystのインストール

# USE="doc" emerge catalyst
USEフラグにdocを付けておくと、/usr/doc/catalyst/examples以下に設定のサンプルファイルを置いてくれるので、設定サンプルが欲しい人はUSEフラグにdocを付けてインストールしましょう。これからの説明を理解するためには設定のサンプルファイルが手元にあったほうがいいと思います。
/etc/catalyst/catalyst.confの編集

基本的に何も編集しなくても動作すると思いますが、デフォルトだとcatalystの作業ディレクトリが/var/tmp/以下になってしまいます。
このまま作業を続けると、作業ディレクトリ以下にディスクイメージも作成されるので、/varのパーティションに多くの空き容量が必要になります。
これは嫌だと言う人は、/etc/catalyst/catalyst.confに次の一行を追加して下さい。

storedir=/catalyst

ここで、/catalystは作業ディレクトリです。各自/catalystを自分の設定したい作業ディレクトリのパスに変更して下さい。

LiveCD作成手順

大まかにいえば3つのステップを経て作業は完了です
・stage1で、LiveCDに含むパッケージのコンパイル
・stage2で、LiveCDのカーネルのmake、圧縮ファイルシステムを使う場合は圧縮
・ISOイメージ作成

大まかな手順はこれだけで、非常に簡単です。これからの作業の一番の肝はstage1、stage2用のspecファイルの作成になります。specファイルが出来れば、作業はほとんど終りです。

これからの作業に、Gentooのsnapshotファイルとstageファイル(stage3)が必要になるので、ミラーサイトからダウンロードしてください。
snapshotファイルはミラーサイトの/snapshots以下に、stageファイルは/releases/x86/2004.2/stages/x86以下にあります(x86の場合)
ダウンロードしてきたsnapshotファイルは、作業ディレクトリ(デフォルトでは/var/tmp/catalyst/)以下にsnapshotsディレクトリを作成し、snapshots以下に置いて下さい。
stageファイルの置き場所についてはどこに置いても大丈夫です。
(例)作業ディレクトリを/catalystとした場合

#mkdir /catalyst/snapshots
#mv portage-2004mmdd.tar.bz2 /caatlyst/snapshots/

stage1用specファイルの用意

USEフラグでdocを指定してcatalystをインストールした人は/usr/doc/catalyst-[version]/examples/livecd/以下に様々なアーキテクチャ用のサンプル設定ファイルがあるのでとりあえずそれをコピーして来ましょう。

stage1用specファイルの書式は以下の様になります。

#LiveCDで動かすマシンのアーキテクチャ
subarch: x86
#LiveCDのバージョン(自分の好きなバージョンでいい)
version_stamp: 20040807
#LiveCDを作成するので、livecd-stage1を指定
target: livecd-stage1
rel_type: default
#LiveCDのでのGentooのバージョン
profile: default-x86-2004.2
#ダウンロードして来たsnapshotの日付
snapshot: 20040804
#ダウンロードして来たstage3ファイルのパス
source_subpath: default/stage3-x86-2004.2
#LiveCDに入れるパッケージ用のUSEフラグのリスト
livecd/use:
-X
-gtk
-svga
livecd
fbcon
#LiveCDに入れるパッケージリスト
livecd/packages:
baselayout
livecd-tools
genkernel
ucl

x86用のLiveCDを作るなら、snapshot、source_subpathの部分を自分たちの環境に合わせて、version_stamp、livecd/use、livecd/packegesの部分を好きなように変更すればいいです。
LiveCDとして動かすには最低限どのパッケージが必要かという事については、ちょっと分からないです。実際に作成した際は、サンプルを参考にいらなそうなものだけ削除しました。

こうして作ったファイルの名前を仮に、x86-livecd-stage1.specとして保存します。

catalystを用いてstage1のビルド

次にcatalystを用いて、stage1のビルド作業を行います。

#catalyst -f x86-livecd-stage1.spec

パッケージのコンパイルなどを行うので、しばらく時間がかかります。

ここで、何らかのエラーメッセージを吐いた人は、そのエラーメッセージにしたがってstage1用specファイルを直して下さい。

ブート時の起動スクリプトなど、LiveCDの細かい設定

stage1のビルド作業が終った時点で、システムの中身はほとんどできています。
stage1のビルド後にできたディレクトリにchrootする事でLiveCDで起動した時点で立ち上がるデーモンなどを指定する事ができます。(もう一つ別の方法としてstage2のspecファイルにrcadd:の後ろに指定するという方法もあります。)
(例)xinetdを起動時に立ち上げる場合

#chroot /catalyst/tmp/default/livecd-stage1-x86-yyyymmdd/
#rc-update add xinetd default
#exit

stabe2用specファイルの用意

stage1のビルドが終了したら次にstage2用specファイルを用意します。
stage2ではカーネルのコンパイル、圧縮ファイルシステムによるイメージの圧縮を行うので、それに関連した変数に値を指定します。

stage1の時と同じく、USEフラグにdocを立てた人はサンプル設定ファイルをコピーして来ると良いです。
(例)stage2用specファイルの例

subarch: x86
version_stamp: 20040805
target: livecd-stage2
rel_type: default
profile: default-x86-2004.2
snapshot: 20040728
source_subpath: default/livecd-stage1-x86-20040805
livecd/cdfstype: zisofs
livecd/archscript: /usr/lib/catalyst/livecd/runscript/x86-archscript.sh
livecd/runscript: /usr/lib/catalyst/livecd/runscript/default-runscript.sh
livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-2.08-cdtar.tar.bz2
boot/kernel: gentoo
boot/kernel/gentoo/sources: =sys-kernel/gentoo-sources-2.4.26-r7
boot/kernel/gentoo/config: /usr/lib/catalyst/livecd/kconfig/config-2.4.24-x86
#this next line sets any USE settings you want exported to the environment for
#your kernel build *and* during the build of any kernel-dependent packages
boot/kernel/gentoo/use: pcmcia
#use this next option to add an extension to the name of your kernel. This
#allows you to have 2 identical kernels on the livecd built with different
#options, and each with their own modules dir in /lib/modules (otherwise
#the second kernel would overwrite the first modules directory.
boot/kernel/gentoo/extraversion: livecd
#this next line is for merging kernel-dependent packages after your kernel
#is built. This is where you merge third-party ebuilds that contain kernel
#modules.
boot/kernel/gentoo/packages: =sys-apps/pcmcia-cs-3.2.5-r1
livecd/unmerge:
autoconf automake bin86 binutils libtool m4 bison ld.so make perl patch linux-headers man-pages
sash bison flex gettext texinfo ccache addpatches man groff lib-compat gcc python miscfiles ucl
livecd/empty:
/var/tmp
/var/cache
:

一見ごちゃごちゃしてますが、サンプルファイルから各自変更する所はsource_subpathにstage1で作成したディレクトリのパスを書くという点とカーネル設定と圧縮ファイルシステムのための以下を指定する事です。
カーネルに関しては、以下の変数を自分の環境に変更してください。

boot/kernel: gentoo #カーネルのタイプ
boot/kernel/gentoo/sources: genntoo-sources-x.x.x #カーネルソースのパッケージ名
boot/kernel/gentoo/config: /path/to/gentoo.config #カーネルのコンフィグファイルへのパス

また、圧縮ファイルシステムを別のモノにしたい場合はlivecd/cdfstypeを変更しましょう。
livecd/cdfstype: zisofs

もしくは
livecd/cdfstype: gcloop

もしくは
livecd/cdfstype: squashls

もしくは
livecd/cdfstype: noloop

これらが選べます。(gcloopを使う場合は、gcloopパッケージをインストールする必要があるかもしれません)

ここで作成したファイルをstage1と同じように、仮にx86-livecd-stage2.specとして保存します。

stage2用のspecファイルは他にもいろいろな指定ができます。詳細はCatalyst Reference Manualを見てください。

catalsytを用いてstage2のビルド

以下のコマンドを打つ事で、stage2のビルドを行います。

#catalsyt -f x86-livecd-stage2.spec

これで、CDの中身は出来上がりました。

isoイメージの作成

catalystにはisoイメージを作るためのスクリプトが用意されているのでそれを利用します。
stage2のビルド作業の後にできた、catalystの作業ディレクトリ以下のisolinuxというファイルが入っているディレクトリに移動し、次のコマンドを打ちます。

#/usr/lib/catalyst/livecd/isogen/isogen.sh

これで、一つ上のディレクトリにgentoo.isoというISOイメージができているはずです。
それをCD-Rに焼けば、LiveCDの完成です。

参考URL

Gentoo Linux Projects -- Catalyst
Catalyst Reference Manual
Catalyst HOWTO

Posted by shogo at 2004年9月 6日 02:13

Trackback Pings

TrackBack URL for this entry:
http://shogokatsurada.dyndns.org/~shogo/cgi-bin/mt/mt-tb.cgi/131

Comments

Post a comment




Remember Me?