2006年5月31日
Kernel upgrade 2.6.16
しばらく、自宅のLinux を触ってなかったので、急に思い立ってカーネルアップグレード。なにか、新しい事をやろうと思った訳ではなく、しばらく上げてなかったから上げておこう程度のアップグレードなので、既存のコンフィグそのままに make oldconfig でアップグレード。
何やら気になる新機能がいくつか。
- CPUSETS
choose I/O scheduler
SECCOMP
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用のブックマークが作成されます。
後は、出来たファイルを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をリコンパイルする事。
これにたどりつくまでに、大分苦労しました。。いやー、解決してヨカッタ、ヨカッタ。
Posted by shogo at 13:22 | Comments (3) | TrackBack
Unexpected EOF エラー@unmerge
今週は、自宅サーバで同時多発的にトラブルが起こったので、トラブルシュートに追われていました。とりあえず解決したので、まず一つ目。
今回、いくつかのパッケージをアップグレードしたのですが、logwatchをアップグレードした際に、昔のlogwatchがunmerge出来ず、unexpected EOFというエラーが。。
これの解決方法は、まず、以下のコマンドを打つ事だそう。
今回それでもダメだったのでUnexpected EOFというエラーを出しているファイル、すなわち/var/db/pkg/
いまいちこのコマンドの動作は分からないのですが、pythonスクリプトの様なので、読める人は読めば分かると思います。
Posted by shogo at 13:05 | Comments (0) | TrackBack
2005年1月26日
fix_libtool_files.sh
昨日から休み無しでコンパイルしまくっているうちのサーバちゃんですが、チェックしてみると、xine-libのコンパイルで
/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
なんてエラーをはいて終了してました。
おかしいのが、下の行で、
今、我が家のサーバのgccのバージョンは3.3.5ですが、なぜか、3.3.4のlibstdc++.laを探しにいっています。
うーむ。。。ということでGentooForumsで探してると、fix_libtool_files.shというコマンドを発見。
fix_libtool_files.sh に続けてgccの旧バージョンのバージョン番号を入れて使うらしいです。
これで、解決しました。
どうやら、このコマンドは、gccに入ってるコマンドのようです。
gcc-3.3.5
にしても、まだ、全然コンパイル終わる気配がないな。ロードアベレージもヤバいことになってます。
![]()
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メール環境を作っている友人とこの話をしていると、どうやら、その友人のサーバではそうでもないということでした。
ということは、メールの数が多くなりすぎたことが原因だとは考えにくいので、ちょっと本気で調べてみることに。
ログをみて、友人のものと比較すると
友人のものはhedersが1/4くらい、timeも友人のものは1とか2で、確かに家のサーバでは遅い。
異常にheaderが大きいメールがあるのかと、.maildirにあるメールを調べてみたんですが、とくに見つからず。courier-IMAPが原因かと思って、手打ちでIMAPのコマンドを打ってみたりしたんですが、原因不明。特に、遅さを感じる所はなくIMAPデーモンは正常に動いているよう。
最後の手段としてsquirrelmailのconf.plを実行して同じ状態にしようとして、squirrelmailの設定を確認して色々変えてみることで解決しました。
解決方法は、squirrelmailのconf.plを実行して、
を選択し
のfalseとなっているところをtrueとすることで解決しました。コレは、squirrelmailの表示のソートについてサーバ側でやらせるというオプション。こんなことが原因だったとは。。。
Posted by shogo at 14:31 | Comments (0) | TrackBack
2004年12月20日
GentooLinux ImageMagick がつかえない
数日前から、何故かMovableTypeで写真をアップロードした時にサムネイルが作れなくなってしまいました。
おかしいと思って、mt-check.cgiで見てみると。
![]()
モジュールとして認識されてないじゃないですか。。。あれー?
ということで、トラブルとの格闘が始まりました。
興味のある人は続きをどうぞ
先日、perlのバージョンをあげた時に、モジュールのパスが変ってしまって、モジュールを再インストールすることで解決したという事があったので、とりあえず、ImageMagickとperlmgickを再インストールすることにしました。
が、結果は同じ。ImageMagickは使えないままです。
ビルドの時に特にエラーを吐くという事も無かったので、原因が分からず、ここ2日は暇な時間はこのトラブルについて調べていました。
たまたま、手元にあった今月号のSoftwareDesignを読んでいたら、GentooLinuxのパッケージ操作研究という特集で、revdep-rebuildというコマンドが紹介されていました。それによると、
お!これはうってつけのコマンドということで、早速実行。
これを実行すると、確かに、ImageMagickが依存関係のエラーを吐いています。でこのまま修復してくれるかと思いきや、依存関係が壊れたパッケージのリビルドを開始したあと途中で終了してしまいました。
だけど、エラーからimlib2というパッケージに関連したエラーであるという事が分かったのでimlib2を再インストールしてみるとこれもまたインストール出来ずに途中で終了。
GentooForumで色々調べてみると、ありました!ここに。バグも報告されているようです。
どうやらこれら全て、libtdl.so.3というライブラリにエラーのようで、解決方法はlibtoolというパッケージをリビルドするということ。
でもって、
で全て解決しました。
Posted by shogo at 05:18 | Comments (0) | TrackBack
2004年11月25日
IPマスカレード出来ない
先日Gentoo2004.3が出たので、早速自宅のサーバーをアップグレードしてみたところ、nvidiaドライバがどうもうまく動かないようで、Xを再起動したら画面が真っ暗になってキーボードの反応があるのか無いのかも分からなくなってしまいました。
仕方無く約50日振りにリブートすることに。。
それで、XについてはXF86Configを書き換えてnvidiaのドライバを使わないようにしてとりあえず解決したのですが、新たに問題発生。
自宅のサーバーはルータも兼ねているのですが、再起動後、なぜかIPマスカレード出来なくなってしまいました。
でdmesgすると
はじめは、久しぶりのリブートだし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によるキャッシュ
カーネルソース
パッケージのソース
最近、/(root)パーティションのディスク消費があまりに激しいので、色々原因を調べたら、ccacheという再コンパイルの際にコンパイル速度が速くなるプログラムのせいである事が分かりました。
ccacheは一度コンパイルしたものを再びコンパイルする時に、時間がかからないというもので、同じものを何度もコンパイルする時には非常に役に立ちます。
ただし、はじめてコンパイルするものについて速度が向上するというわけではないので注意。
そんなccacheですが、gentoo linuxにおいてccacheはデフォルトで、(HomeDir)/.ccache以下にキャッシュするようです。
それが原因で、/root/.ccacheに1.5Gものキャッシュが溜っていたために、/(root)パーティションのディスク容量が不足していたというわけでした。
解決法としては、環境変数CCACHE_DIRを別のディレクトリへパスを通してあげる事、もしくはccacheを使わないようにする事です。
環境変数を変更するには、以下のコマンドを打ちます(bash)
言うまでもないですが、ここで/other/dir/は別のディレクトリへのパスです。
/etc/make.confにも以下の一文を書いておくといいでしょう。
また、今までのキャッシュを変更後のディレクトリに移してあげましょう。
これらの作業をする前とした後のdfの結果です。
する前
/dev/hda3 2.0G 1.7G 325M 84% /
:
した後
/dev/hda3 2.0G 165M 1.9G 9% /
:
cactiによるディスク容量のグラフも載せておきます。
![]()
/dev/hda3が/(root)パーティションです。
カーネルソースは思っている以上にディスク容量を消費する(大体250M位)ので、古いカーネルソースや、使用していないカーネルソースは削除してしまいましょう。
今、ちょっと溜ってるカーネルソースを見たら
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
こんなに溜ってました。
で、容量はというと、
5.8G /usr/src/
カーネルソースにこれだけ消費されたら、ディスクスペースも無くなるわ!ということで必要無いものは消しましょう。
パッケージのソースは、/usr/portage/distfiles/以下に存在します。
ここにあるものは全てemerge コマンドでインストールした際にダウンロードしたものなので、消してしまっても再びインストールする時にダウンロードします。
なので、ネットワークが極端に遅いとかいう人でなければ、消しても問題ないはずです。(gentoo的にはサーバへのトラフィックが増える原因になるので推奨されないでしょうけど。。)
これで、ディスク容量が大分空いたはずです。
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には
とりあえず、今回はLiveCDを作るという事を目的にします。
まず、
・Gentoo Linuxのインストールされた環境
・LiveCDのイメージが置けるように容量に余裕のあるディスク
・圧縮ファイルシステムを使うのであれば大きめのswap領域
・CDイメージが作れる環境(mkisofs,etc...)
・genkernelが使える環境
を用意しましょう。swapについてはかつてKNOPPIXをカスタマイズしたときcloopファイルシステムの圧縮に、大体1GB程度あればいいという事をどこかで見たので、ま、それくらいあればいいかと。。
また、catalyst ではカーネル構築の際にgenkernelを用いています。なので、genkernelが使える環境にないと、stage2でうまくコンパイル出来ないでしょう。
どうやら、カーネルにloopback deviceがモジュールとして組み込まれていないと、genkernelが使えないようなので、チェックしてみるといいかも知れません。
# USE="doc" emerge catalystUSEフラグにdocを付けておくと、/usr/doc/catalyst/examples以下に設定のサンプルファイルを置いてくれるので、設定サンプルが欲しい人はUSEフラグにdocを付けてインストールしましょう。これからの説明を理解するためには設定のサンプルファイルが手元にあったほうがいいと思います。
基本的に何も編集しなくても動作すると思いますが、デフォルトだとcatalystの作業ディレクトリが/var/tmp/以下になってしまいます。
このまま作業を続けると、作業ディレクトリ以下にディスクイメージも作成されるので、/varのパーティションに多くの空き容量が必要になります。
これは嫌だと言う人は、/etc/catalyst/catalyst.confに次の一行を追加して下さい。
ここで、/catalystは作業ディレクトリです。各自/catalystを自分の設定したい作業ディレクトリのパスに変更して下さい。
大まかにいえば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とした場合
#mv portage-2004mmdd.tar.bz2 /caatlyst/snapshots/
USEフラグでdocを指定してcatalystをインストールした人は/usr/doc/catalyst-[version]/examples/livecd/以下に様々なアーキテクチャ用のサンプル設定ファイルがあるのでとりあえずそれをコピーして来ましょう。
stage1用specファイルの書式は以下の様になります。
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のビルド作業を行います。
パッケージのコンパイルなどを行うので、しばらく時間がかかります。
ここで、何らかのエラーメッセージを吐いた人は、そのエラーメッセージにしたがってstage1用specファイルを直して下さい。
stage1のビルド作業が終った時点で、システムの中身はほとんどできています。
stage1のビルド後にできたディレクトリにchrootする事でLiveCDで起動した時点で立ち上がるデーモンなどを指定する事ができます。(もう一つ別の方法としてstage2のspecファイルにrcadd:の後ろに指定するという方法もあります。)
(例)xinetdを起動時に立ち上げる場合
#rc-update add xinetd default
#exit
stage1のビルドが終了したら次にstage2用specファイルを用意します。
stage2ではカーネルのコンパイル、圧縮ファイルシステムによるイメージの圧縮を行うので、それに関連した変数に値を指定します。
stage1の時と同じく、USEフラグにdocを立てた人はサンプル設定ファイルをコピーして来ると良いです。
(例)stage2用specファイルの例
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/sources: genntoo-sources-x.x.x #カーネルソースのパッケージ名
boot/kernel/gentoo/config: /path/to/gentoo.config #カーネルのコンフィグファイルへのパス
また、圧縮ファイルシステムを別のモノにしたい場合はlivecd/cdfstypeを変更しましょう。
もしくは
もしくは
もしくは
これらが選べます。(gcloopを使う場合は、gcloopパッケージをインストールする必要があるかもしれません)
ここで作成したファイルをstage1と同じように、仮にx86-livecd-stage2.specとして保存します。
stage2用のspecファイルは他にもいろいろな指定ができます。詳細はCatalyst Reference Manualを見てください。
以下のコマンドを打つ事で、stage2のビルドを行います。
これで、CDの中身は出来上がりました。
catalystにはisoイメージを作るためのスクリプトが用意されているのでそれを利用します。
stage2のビルド作業の後にできた、catalystの作業ディレクトリ以下のisolinuxというファイルが入っているディレクトリに移動し、次のコマンドを打ちます。
これで、一つ上のディレクトリにgentoo.isoというISOイメージができているはずです。
それをCD-Rに焼けば、LiveCDの完成です。
Gentoo Linux Projects -- Catalyst
Catalyst Reference Manual
Catalyst HOWTO
Posted by shogo at 02:13 | Comments (0) | TrackBack