それではいってみましょう
実はGentoo Linux 2.6完全移行ガイドという便利なページがあります。このページの翻訳が完了したために踏み切ることと至ったわけで。ということで逝って行ってみましょう。
手順を確認
- 基本システムを最新にしておく
# emerge sync;emerge -ua world
- PCM音源を有効にしたい場合はalsa関連をインストールしておく
# emerge -a alsa-lib alsa-utils alsa-tools alsa-headers alsa-oss
- udevをインストールしておく
# emerge udev # mkdir /mnt/tmp # mount -o bind / /mnt/tmp # ls /mnt/tmp/dev/null /mnt/tmp/dev/console ここでどちらかが無い!と言われたら mkdevしましょう # mknod -m 660 console c 5 1 # mknod -m 660 null c 1 3 確認できたら/をアンマウント # umount /mnt/tmp
- Linux2.6ソースをインストール
# emerge gentoo-dev-sources
- Linux2.6ソースをコンパイルする
# cd /usr/src; ln -sfn linux-2.6.X-XXXXX linux
udevを有効にするように
# cd linux
File systems ---> Pseudo filesystems ---> [*] /proc file system support [*] /dev file system support (OBSOLETE) [ ] Automatically mount at boot [*] Virtual memory file system support (former shm fs)
と、オプションをONにしてやるです。/dev file system supportはON/OFFどっちでもいいけど、Automatically mount at bootはONにしたらいけません。
- 出来上がったらブート可能なようにgrubを設定してやって再起動
- さて、あがりましたかね??
カーネルだけ実験君
一応ノートPCの方ではカーネルだけはうまく行っているので、次はサーバー君の方。実はこのサーバー君。過去にカーネルだけ2.6化しようと思って、やってみたらブート後フリーズしやがるので、2.6化をあきらめていたのですが、もう一度だけ実験してみようと思って、最新stableの2.6.9をインストールしてみたら…うまく動くじゃん。なんだよもぅ。と、確認が済んだので、元の2.4に戻して、ノートPCで実験しようと思ったら。思ったら。。。2.4のEthernetモジュールがinsmodできなくなった。ということはネットワークにつながらない。最悪…強制的に2.6にあげさせることになってしまいましたとさ。
音源をALSAドライバに変更
ALSAドライバにするためには、カーネルのSoundDriverのAdvanced Linux Sound Architectureを有効にして、全てモジュールコンパイルしてやります。
このあと、/etc/module.d/alsaを編集してやります。
このときに以下のコマンドを実行
# lspci | grep audio 0000:00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0)
これはうちのマシンですね。で、ALSAドライバ適合調査ページにいって、適合性を調査してやります。トップページのプルダウンメニューから、うちの場合だとSiSを選んでやります。するてーと、うちのマシンの場合はSiS740て石をつかってるので、intel8x0ドライバだと分かりました。
そこで、先の/etc/modules.d/alsaを開いて
## ## IMPORTANT: ## You need to customise this section for your specific sound card(s) ## and then run `update-modules' command. ## Read alsa-driver's INSTALL file in /usr/share/doc for more info. ## ## ALSA portion alias snd-card-0 snd-intel8x0 ## alias snd-card-1 snd-ens1371 ## OSS/Free portion alias sound-slot-0 snd-card-0 ## alias sound-slot-1 snd-card-1 ##
こんな風にコメントアウトされている部分を埋めてやります。さらに
# cd /etc # touch asound.state
とやっときます。これが無いとMixer情報を保存できんと後々怒られてしまいます。準備ができましたら
# /etc/init.d/alsasound start
うまく行けば、ドライバがロードされます。あとはalsamixerというコマンドでミュート解除、ボリューム設定を行ってやります。
# amixer /usr/share/soundのどれか
を実行してみて、音が鳴りましたか?鳴れば問題なし。うまく動いてます。うまく行かなければ、/etc/module.d/alsaの設定が間違ってますな。さらに
# rc-update add alsasound default
をやって、自動機動するようにしてやります。おっけ♪
全システム2.6化にチャレンジ
はて?全システムとはなんじゃらほい?といいますのは、カーネルだけでは本当の機能が発揮されておりません。それってば
- Linux2.4カーネルヘッダでアプリケーションがコンパイルされている
- Native Posix Threadを使用していない
なぜいけないかというと、2.4用バイナリよりも2.6バイナリの方が高速そうだから(笑)あとは、音源を使用するアプリケーションがALSA対応では無く、OSS対応でコンパイルされているから音が鳴らんとです。それと、ただのlibc threadだと、スレッドをプロセスに擬似って動かしているので、コンテキストスイッチ(実行タスクを切り替える操作)が重い。NativeThreadにするとこの操作が軽くなるので、スレッドを使用しているプロセスの有効実行速度が上がるという寸法ですね。
ではその手順を
- まずはコンパイル用linuxヘッダを入れ替えます
# emerge unmerge linux-headers; emerge linux26-headers
- /etc/make.confを編集して、USEフラグを追加します。nptlとalsa。あとは-ossを追加して、ossを禁止してやります
- glibcを再コンパイルします
#emerge -a glibc
- 全てのアプリケーションを再コンパイルしてやります
#emerge -e world
全部コンパイルし尽くしたら完全移行終了。これが長い!うちの例だと490パッケージあったのだ。
さて、効果の程は?
一番分かること。psコマンドで実行プロセスの一覧を見てみてください。プロセス数が減っていませんか?特にapacheとか。複数タスクの起動にスレッドを使っているやつは、Native Threadに変えるとpsで見えなくなります。お陰でps表示がすっきりします。この効果と、2.6カーネルのパワーのお陰で、応答性が良くなります。ディスクI/Oやタスク切り替え時のコンテキストスイッチのオーバーヘッド改善など。これによって、I/O待ちの時間とOSが消費するCPUパワーが減ると言うわけですね。特に高速なCPUであれば、このI/O待ちによって実行速度ががっくんと低下しますので、早いCPUであればあるほど速度改善が確認できるでしょう。うちですと、サーバー君はCeleron2.6GHz,ノート君はPentiumⅢM800MHz。圧倒的にサーバーのほうが早くなりました。ノート君はちょっと早くなった、ような気がする…
で、コンパイルスピードも上がったか!!と思いましたが、コンパイル時間は大して早くならんかった。コンパイルは一時的にCPUパワーを占有するから、それ以上早くならんのでしょうね。CPUが持ってるパワー以上は早くならんと。当たり前か。
ぺージ情報 | |
---|---|
ぺージ名 : | Linux2.6で悩む |
ページ別名 : | 未設定 |
ページ作成 : | maruo |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | なし |
ユーザー : | なし |