ディスプレイの納期が遅れるということだったので, とりあえず寮の友達の部屋に持っていって動作を確認します。 定格で起動, Linux のブートディスクでブートもできることを見てめでたしめでたし。
で, デバイスドライバ回りをかえます。windows でいうところの, 「セーフモードで立ち上げてドライバ入れ換え」という状況ですね。
が, ドライバを入れ換える最中に, 頻繁にフリーズが起きます。 とりあえずドライバを最新のものにかえよう, ということで, linux のカーネルを最新版にしたりするのですが, それでも落ちます。
みたところ, カーネルのコンパイルなどの「重い」 作業をしている時に不安定になっているようです。ということは, もっとも疑うべきは熱暴走です。 マザーボードについているCPU 温度監視機構が働いて, ビープ音による警告が出てから落ちることも多く, 熱暴走の線が高そうです。が, ビープ音の警告もなく, 突然落ちたりすることもあります。66x4.5の定格動作でも, 100x4.5 のオーバークロックでも同様です。 定格で動かして, ファンもちゃんとつけているのに, なんで暴走するなんて, どうもおかしいです。
が, 熱暴走以外に原因が思い浮かばないので, ヒートシンク・ファンの付け方などを確認します。 で, いろいろいじっているうちに, ファンがあってもなくても CPU 温度がおなじぐらいになっていることが判明しました。
とりあえず, それまではヒートシンクをシリコングリスなども使わずに直接 CPU の上においていたので, ここを改良です。密着性を高めるために, 近くのパソコンショップでシリコングリスを購入して, CPU表面に薄く塗ってからシンクを載せてみます。
が, 何も変わりません。
で, おかしいなと思い見てみると, CPU表面に塗ったシリコングリスがシンクの裏側に全然ついていません。 そう, なんと「全然ヒートシンクとCPU表面が接していない」のです。
前述したように, 無理矢理ヒートシンクをCPUの上に載せていたのですが, その際にどうもヒートシンクがCPU に対して斜め向きになってしまい, 全然CPU表面と接していなかったようです。密着性とかいう以前の問題です。 これを何とかしないといけませんが, コンデンサが邪魔で何ともなりません。 マザーボードに付けられているのコンデンサを取り外すわけにもいかないので, ファン, あるいはマザーボードを買い替えるか……と思ったのですが, それはとってもシャクです。
ということで, いろいろ考えた末, マザーボード固定用にファンについているツメを折って, 「ねじりっこ」で固定します (けっこうむちゃ……)。
この結果, マシンはかなり安定しました。450MHz で負荷をかけても (カーネル再構築など) しても問題ありません。 めでたし, めでたし……?
X を立ち上げた瞬間とか, 画面の大きな書き換えと同時に音がなる時とか, どうもIOが頻発するときに落ちることが多いようです。 このフリーズするときの特徴をつかむまでに何度マシンをフリーズさせ, fsck をどきどきしながら待ったことでしょうか……
web をあさったところ, あちこちに「VIA のチップセットは不安定だ」 「IOを派手に触ると落ちる」といった記述がみつかります;_; やっぱり, このマザーボード, 値段だけで選んだのは失敗だったのか……
しかし, linux 使いには福音が! カーネルのドキュメントの中に, 怪しい記述 ($kernel-src/Documentation/sound/VIA-CHIPSET, 2.4 kernel での該当部分の日本語訳) を発見。
で, 当時のそのファイルには, alan cox の 「[M]VP* シリーズなどの VIA のチップセットにはへぼいバグがあり, DMA を使うとタイミングによってマシンが固まる。 あるルーチンを起動時に呼べばその対処をするようにしてある。 Apollo Pro はもってないからどうかわからない」という記述があった。
ということで, 書いてあるルーチンを起動時に常に呼び出すようにカーネルを書き換え, コンパイルして再起動する。
再起動後, mp3 をガンガンならしながら xengine 動かして disk copy を実行, みたいな負荷テストをしてみるが, 非常に安定している。
すばらしい;_;
で, 後日ネットニュースを見ていると, 同じことではまってる人がいた模様なので, この問題は私のマザーボードだけではないと判明。
ということで, チップセットを自動認識して, 該当ルーチンを呼び出すかどうかを正しく判断するようにして, パッチを作り, linux-kernel ML に送る。
このあと, このパッチは無事正式採用され, 2.2.13(pre 5) 以降のカーネルに含まれるようになりました。
めでたしめでたし。 なお, このあと windows を入れたのですが, 非常に不安定で全然使い物にならず, 速攻で消しました。