Main

2006年5月31日

Kernel upgrade 2.6.16

しばらく、自宅のLinux を触ってなかったので、急に思い立ってカーネルアップグレード。なにか、新しい事をやろうと思った訳ではなく、しばらく上げてなかったから上げておこう程度のアップグレードなので、既存のコンフィグそのままに make oldconfig でアップグレード。

何やら気になる新機能がいくつか。

CPUSET はマルチプロセッサ環境で、ユーザー毎のリソース割り振りなどが出来るよう。

I/O scheduler は CFQ/deadline/noop/as の4種類がある。
- CFQ は Completely Fair queuing
- deadline はプロセスの実行にdeadlineを設けて、それを越えたものはプライオリティを落すとか、時間によるプライオリティの変化をさせるようです。
- noop はいわゆるFIFO
- as は anticipatory のことで、あらかじめ予測してスケジューリングを行う方式みたい

どうやら、LUN: Logical Unit Number が1個とか2個の小さなシステムではasが高いパフォーマンスを出すようなので、しょぼいうちのPCはとりあえずasにしておいた。下のURLによるとLUN: Logical Unit Numberが多いサーバには向かないみたい。

なんか、多くの機能がvartualizationを意識してるようです。ヤッパ流行りなんですね、ヴァーチャリゼーション、仮想化。

参考URL
Gentoo Linuxカーネルアップグレードガイド
CPUSETS for Linux
Choosing an I/O Scheduler for Red Hat® Enterprise Linux® 4 and the 2.6 Kernel
Kernel Korner - I/O Schedulers

Posted by shogo at 03:37 | Comments (0) | TrackBack

2005年5月29日

epiphanyのブックマークをエクスポート

家のLinuxでWebを見る時のデフォルトのブラウザはgnome標準のepiphanyで、特にこれといって問題もないのだけど、たまにFirefoxのextensionが使いたくなる時がある。

そんな時はもちろんブラウザを立ち上げなおせば良いのだけど、いつも使っていないFirefoxのブックマークには見たいサイトが入ってなかったりして非常に面倒。

とりあえず、epiphanyのブックマークをexportして...としたいところだが、epiphanyのGUIでmozilla用にブックマークをexport出来ない。

どうすれば良いかというと、このephy2moz.xslというファイルをダウンロードして、以下のコマンドでmozilla用のブックマークが作成されます。

xsltproc -o bookmarks.html ephy2moz.xsl ~/.gnome2/epiphany/bookmarks.rdf

後は、出来たファイルをFirefoxでimportすればOK。

Posted by shogo at 11:23 | Comments (0) | TrackBack

2005年5月 4日

apacheが起動しない、phpが動かない

2つ目のエラーはちょっと深刻。
4月末、久しぶりにcactiでロードアベレージをチェックしようとすると、グラフが4/21あたりから表示されなくなっていました。

どうもおかしいということでapacheを再起動すると、apacheが起動しなくなってしまいまた。特に、設定がおかしい訳でもなくapache2ctl -t を実行しても特に異常無し。

色々調べていると、どうやら/etc/conf.d/apache2でPHPを有効にすると、動作がおかしい様子。PHPの調子が悪いのでリコンパイルしてみると、途中でエラーを吐いて止まってしまいました。困った事に、普通のphpのプログラムも実行出来ません。rootで実行してもsegmentation faultを吐くし、非常に困っていました。

しばらく原因が分からず何日も困っていたのですが、どうやらnet-snmpをバージョンアップした事が原因だったようです。

とりあえず、解決法はUSEフラグからsnmpを外してphpとmod_phpをリコンパイルする事。

#USE="-snmp" emerge php mod_php

これにたどりつくまでに、大分苦労しました。。いやー、解決してヨカッタ、ヨカッタ。

Posted by shogo at 13:22 | Comments (3) | TrackBack

Unexpected EOF エラー@unmerge

今週は、自宅サーバで同時多発的にトラブルが起こったので、トラブルシュートに追われていました。とりあえず解決したので、まず一つ目。

今回、いくつかのパッケージをアップグレードしたのですが、logwatchをアップグレードした際に、昔のlogwatchがunmerge出来ず、unexpected EOFというエラーが。。

unexpected EOF while looking for matching `"'

これの解決方法は、まず、以下のコマンドを打つ事だそう。

/usr/lib/portage/bin/fixvardbentries

今回それでもダメだったのでUnexpected EOFというエラーを出しているファイル、すなわち/var/db/pkg///.ebuildというファイルを削除して、以下のコマンドを打つ事で解決しました。
/usr/lib/portage/bin/fixvardbentries

いまいちこのコマンドの動作は分からないのですが、pythonスクリプトの様なので、読める人は読めば分かると思います。

Posted by shogo at 13:05 | Comments (0) | TrackBack

2005年1月26日

fix_libtool_files.sh

昨日から休み無しでコンパイルしまくっているうちのサーバちゃんですが、チェックしてみると、xine-libのコンパイルで

grep: /usr/lib/gcc/i686-pc-linux-gnu/3.3.4/libstdc++.la: No such file or directory
/bin/sed: can't read /usr/lib/gcc/i686-pc-linux-gnu/3.3.4/libstdc++.la: No such file or directory
libtool-nofpic: link: `/usr/lib/gcc/i686-pc-linux-gnu/3.3.4/libstdc++.la' is not a valid libtool archive
make[4]: *** [xineplug_vo_out_sdl.la] Error 1
make[4]: Leaving directory `/var/tmp/portage/xine-lib-1_rc6/work/xine-lib-1-rc6a/src/video_out'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/var/tmp/portage/xine-lib-1_rc6/work/xine-lib-1-rc6a/src/video_out'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/xine-lib-1_rc6/work/xine-lib-1-rc6a/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/xine-lib-1_rc6/work/xine-lib-1-rc6a'
make: *** [all] Error 2

なんてエラーをはいて終了してました。

おかしいのが、下の行で、

grep: /usr/lib/gcc/i686-pc-linux-gnu/3.3.4/libstdc++.la: No such file or directory

今、我が家のサーバのgccのバージョンは3.3.5ですが、なぜか、3.3.4のlibstdc++.laを探しにいっています。
うーむ。。。ということでGentooForumsで探してると、fix_libtool_files.shというコマンドを発見。
fix_libtool_files.sh に続けてgccの旧バージョンのバージョン番号を入れて使うらしいです。
# fix_libtool_files.sh 3.3.4

これで、解決しました。

どうやら、このコマンドは、gccに入ってるコマンドのようです。

$ epm -qf `which fix_libtool_files.sh`
gcc-3.3.5

にしても、まだ、全然コンパイル終わる気配がないな。ロードアベレージもヤバいことになってます。
graph_image.png

Posted by shogo at 15:17 | Comments (0) | TrackBack

2005年1月25日

kernel2.6.10にしました

サーバのカーネルを2.6.10にしました。

カーネルをアップグレードしたついでに、NPTLも有効にしてみました。
USEフラグにnptlを追加してglibcのコンパイルしなおすのですが、glibcだけでかれこれ2時間、その後、今までたまっていたアップデート84パッケージを只今コンパイル中です。

kernel2.6になってalsaドライバがカーネルにマージされたのですが、GentooLinuxのパッケージであるalsa-driverとの住み分けをどうするかという事について、
1 カーネルのalsaを使う(カーネルのコンパイル時にモジュールとして組み込む)
2 パッケージalsa-driverを使う(カーネルのコンパイル時にはモジュールで組み込まない)
の選択肢があります。

最新版のalsaが使いたい場合は2の方がいいんでしょうが、カーネルコンパイル時に組み込んだので結局alsa-driverパッケージの方をunmergeすることで対応しました。

とりあえず、しばらくはコンパイル待ちです。

Posted by shogo at 20:45 | Comments (0) | TrackBack

2005年1月12日

squirrelmailが遅い原因を解決

ちょっと前から、自宅サーバで使っているsquirrelmailの動作が遅い(メールを読みにいくときや削除したとき等のレスポンスが異常に遅い)ことが鼻につくようになりました。

たまっているメールが多くなってきたせいで仕方ないのかと思ったのですが、今日、同じように自宅にsquirrelmailでwebメール環境を作っている友人とこの話をしていると、どうやら、その友人のサーバではそうでもないということでした。
ということは、メールの数が多くなりすぎたことが原因だとは考えにくいので、ちょっと本気で調べてみることに。
ログをみて、友人のものと比較すると

imapd: LOGOUT, user=shogo, ip=[127.0.0.1], headers=812712, body=0, time=11

友人のものはhedersが1/4くらい、timeも友人のものは1とか2で、確かに家のサーバでは遅い。

異常にheaderが大きいメールがあるのかと、.maildirにあるメールを調べてみたんですが、とくに見つからず。courier-IMAPが原因かと思って、手打ちでIMAPのコマンドを打ってみたりしたんですが、原因不明。特に、遅さを感じる所はなくIMAPデーモンは正常に動いているよう。
最後の手段としてsquirrelmailのconf.plを実行して同じ状態にしようとして、squirrelmailの設定を確認して色々変えてみることで解決しました。

解決方法は、squirrelmailのconf.plを実行して、

General Options

を選択し
Allow server-side sorting  false

のfalseとなっているところをtrueとすることで解決しました。コレは、squirrelmailの表示のソートについてサーバ側でやらせるというオプション。こんなことが原因だったとは。。。

imapd: LOGOUT, user=shogo, ip=[127.0.0.1], headers=26470, body=0, time=2
速くなりました。

Posted by shogo at 14:31 | Comments (0) | TrackBack

2004年12月20日

GentooLinux ImageMagick がつかえない

数日前から、何故かMovableTypeで写真をアップロードした時にサムネイルが作れなくなってしまいました。
おかしいと思って、mt-check.cgiで見てみると。
revdep.jpg
モジュールとして認識されてないじゃないですか。。。あれー?
ということで、トラブルとの格闘が始まりました。

興味のある人は続きをどうぞ

先日、perlのバージョンをあげた時に、モジュールのパスが変ってしまって、モジュールを再インストールすることで解決したという事があったので、とりあえず、ImageMagickとperlmgickを再インストールすることにしました。

#emerge ImageMagick perlmagick

が、結果は同じ。ImageMagickは使えないままです。
ビルドの時に特にエラーを吐くという事も無かったので、原因が分からず、ここ2日は暇な時間はこのトラブルについて調べていました。

たまたま、手元にあった今月号のSoftwareDesignを読んでいたら、GentooLinuxのパッケージ操作研究という特集で、revdep-rebuildというコマンドが紹介されていました。それによると、

revdep-rebuildはパッケージで壊れた依存関係を修復し、システムを正常な状態に戻してくれるコマンドです。

お!これはうってつけのコマンドということで、早速実行。
#revdep-rebuild

これを実行すると、確かに、ImageMagickが依存関係のエラーを吐いています。でこのまま修復してくれるかと思いきや、依存関係が壊れたパッケージのリビルドを開始したあと途中で終了してしまいました。
だけど、エラーからimlib2というパッケージに関連したエラーであるという事が分かったのでimlib2を再インストールしてみるとこれもまたインストール出来ずに途中で終了。
GentooForumで色々調べてみると、ありました!ここに。バグも報告されているようです。
どうやらこれら全て、libtdl.so.3というライブラリにエラーのようで、解決方法はlibtoolというパッケージをリビルドするということ。
#emerge libtool

でもって、
#emerge imlib2

で全て解決しました。

Posted by shogo at 05:18 | Comments (0) | TrackBack

2004年11月25日

IPマスカレード出来ない

先日Gentoo2004.3が出たので、早速自宅のサーバーをアップグレードしてみたところ、nvidiaドライバがどうもうまく動かないようで、Xを再起動したら画面が真っ暗になってキーボードの反応があるのか無いのかも分からなくなってしまいました。
仕方無く約50日振りにリブートすることに。。
それで、XについてはXF86Configを書き換えてnvidiaのドライバを使わないようにしてとりあえず解決したのですが、新たに問題発生。

自宅のサーバーはルータも兼ねているのですが、再起動後、なぜかIPマスカレード出来なくなってしまいました。
でdmesgすると

MASQUERADE: No route: Rusty's brain broke!
というエラーメッセージが。。

はじめは、久しぶりのリブートだしiptablesの中身を保存し忘れてたのかな?と思い、チェックしてみたがiptablesは問題無し。/proc/sys/net/ipv4/ip_forwardにもちゃんとビットが立ってるし。うーむ。。。
しばらく色々と原因を考えたのですが、全然理由が分からず。

さんざん悩んだ挙げ句、カーネルのバージョンを2.4.23から2.4.28にアップグレードしたら、解決。カーネルのバグだったのか?
カーネルかえたらローカルから外へのアクセスが速くなった気もするし、ま、とりあえず解決してヨカッタ、ヨカッタ。

Posted by shogo at 13:52 | Comments (0) | TrackBack

2004年10月21日

Gentoo Linux ディスク容量不足 対策

このサイトのサーバのディストリビューションはGentoo Linuxを採用しているのですが、Gentoo Linuxは普通のディストリビューションに比べ消費するディスクの容量が多くなります。

実はノートPCにもGentoo Linuxを入れていて、ディスク容量不足と格闘してきたのでメモ程度に格闘記録を残しておきます。

興味のある人は続きをどうぞ。

ディスク容量消費の原因として、気づいたのは大体次の3つ。


  • ccacheによるキャッシュ
  • カーネルソース
  • パッケージのソース

ccacheによるキャッシュ

最近、/(root)パーティションのディスク消費があまりに激しいので、色々原因を調べたら、ccacheという再コンパイルの際にコンパイル速度が速くなるプログラムのせいである事が分かりました。

ccacheは一度コンパイルしたものを再びコンパイルする時に、時間がかからないというもので、同じものを何度もコンパイルする時には非常に役に立ちます。
ただし、はじめてコンパイルするものについて速度が向上するというわけではないので注意。

そんなccacheですが、gentoo linuxにおいてccacheはデフォルトで、(HomeDir)/.ccache以下にキャッシュするようです。
それが原因で、/root/.ccacheに1.5Gものキャッシュが溜っていたために、/(root)パーティションのディスク容量が不足していたというわけでした。

解決法としては、環境変数CCACHE_DIRを別のディレクトリへパスを通してあげる事、もしくはccacheを使わないようにする事です。

環境変数を変更するには、以下のコマンドを打ちます(bash)

#export CCACHE_DIR="/other/dir/"

言うまでもないですが、ここで/other/dir/は別のディレクトリへのパスです。

/etc/make.confにも以下の一文を書いておくといいでしょう。

CCACHE_DIR="/other/dir/"

また、今までのキャッシュを変更後のディレクトリに移してあげましょう。
#mv /root/.ccache/* /other/dir/

これらの作業をする前とした後のdfの結果です。

する前

Filesystem Size Used Avail Use% Mounted on
/dev/hda3 2.0G 1.7G 325M 84% /

した後

Filesystem Size Used Avail Use% Mounted on
/dev/hda3 2.0G 165M 1.9G 9% /

cactiによるディスク容量のグラフも載せておきます。
Screenshot.jpg
/dev/hda3が/(root)パーティションです。

カーネルソース
Gentoo Linuxでは、新しいバージョンのカーネルがあると、emerge worldする度にカーネルソースが/usr/src/以下に溜ってきます。

カーネルソースは思っている以上にディスク容量を消費する(大体250M位)ので、古いカーネルソースや、使用していないカーネルソースは削除してしまいましょう。

今、ちょっと溜ってるカーネルソースを見たら

# ls /usr/src
linux linux-2.4.22-gentoo-r3 linux-2.4.25-gentoo linux-2.4.26-gentoo-r3 linux-2.6.3-gentoo-r1 linux-2.6.8-gentoo
linux-2.4.20-gentoo-r8 linux-2.4.22-gentoo-r4 linux-2.4.25-gentoo-r2 linux-2.4.26-gentoo-r6 linux-2.6.5-gentoo linux-2.6.8-gentoo-r1
linux-2.4.20-gentoo-r9 linux-2.4.22-gentoo-r7 linux-2.4.25-gentoo-r3 linux-2.4.26-gentoo-r9 linux-2.6.5-gentoo-r1 linux-2.6.8-gentoo-r2
linux-2.4.22 linux-2.4.23 linux-2.4.25-gentoo-r4 linux-2.4.27 linux-2.6.7-gentoo-r11 linux-2.6.8-gentoo-r3
linux-2.4.22-gentoo-r2 linux-2.4.25 linux-2.4.26 linux-2.6.3-gentoo linux-2.6.7-gentoo-r6 linux-2.6.8-gentoo-r7

こんなに溜ってました。

で、容量はというと、

# du -sh /usr/src/
5.8G /usr/src/

カーネルソースにこれだけ消費されたら、ディスクスペースも無くなるわ!ということで必要無いものは消しましょう。

パッケージソース
最後に、Gentoo Linuxは全てソースからインストールするのが基本のディストリビューションということで、ディスク容量にシビアな場合は、いらないパッケージのソースを削除したいと思う人もいるでしょう。

パッケージのソースは、/usr/portage/distfiles/以下に存在します。
ここにあるものは全てemerge コマンドでインストールした際にダウンロードしたものなので、消してしまっても再びインストールする時にダウンロードします。
なので、ネットワークが極端に遅いとかいう人でなければ、消しても問題ないはずです。(gentoo的にはサーバへのトラフィックが増える原因になるので推奨されないでしょうけど。。)

#rm /usr/portage/distfiles/*

これで、ディスク容量が大分空いたはずです。

Posted by shogo at 23:15 | Comments (4) | TrackBack

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 02:13 | Comments (0) | TrackBack