最近組んだ AT 互換機

社会人になり, 古くなったマシンは実家においてきました。そう, 湘南の寮の中にはマシンがないのです。なくても困らないけど, やっぱり玩具がないと暇な時楽しめません。 ということで, 新しいマシンの製作日記でもかいてみます。

初日

給料日に部品を集めに秋葉にいきます。とはいえ, 新人なのでお金はそんなにいっぱいありません。ということで, 安くてそれなりの性能が出て, Linux が動いて, 画面がきれいなのを目指して製作します。 事前に秋葉マップなどを見てだいたいの値段と, 最近の技術動向を確認しておきます。 で, 買ったのはこんな感じです。

組み立ててみる

慣れているとは言え, 久々だったのでかなり時間がかかりました。 で, 問題があったのはファンの取り付け。 最近は CPU に供給する電圧を安定させるために, CPU の周りにでっかいコンデンサがたくさんついてます。 このコンデンサがでっかくて, ファン (正確にはヒートシンク) と干渉するのです。 しかたないので無理矢理つけたのですが, これが失敗の元でした。

ディスプレイの納期が遅れるということだったので, とりあえず寮の友達の部屋に持っていって動作を確認します。 定格で起動, Linux のブートディスクでブートもできることを見てめでたしめでたし。

安定動作しない (その1)

一週間後, ディスプレイが来たのでさっそく OS その他を入れます。 レスキューディスクで立ち上げて, 家のマシンで使っていた HDD から linux パーティションのディスクイメージを 新しいディスクにコピー。あっという間に昔と同じ環境が出来上がりです。

で, デバイスドライバ回りをかえます。windows でいうところの, 「セーフモードで立ち上げてドライバ入れ換え」という状況ですね。

が, ドライバを入れ換える最中に, 頻繁にフリーズが起きます。 とりあえずドライバを最新のものにかえよう, ということで, linux のカーネルを最新版にしたりするのですが, それでも落ちます。

みたところ, カーネルのコンパイルなどの「重い」 作業をしている時に不安定になっているようです。ということは, もっとも疑うべきは熱暴走です。 マザーボードについているCPU 温度監視機構が働いて, ビープ音による警告が出てから落ちることも多く, 熱暴走の線が高そうです。が, ビープ音の警告もなく, 突然落ちたりすることもあります。66x4.5の定格動作でも, 100x4.5 のオーバークロックでも同様です。 定格で動かして, ファンもちゃんとつけているのに, なんで暴走するなんて, どうもおかしいです。

が, 熱暴走以外に原因が思い浮かばないので, ヒートシンク・ファンの付け方などを確認します。 で, いろいろいじっているうちに, ファンがあってもなくても CPU 温度がおなじぐらいになっていることが判明しました。

とりあえず, それまではヒートシンクをシリコングリスなども使わずに直接 CPU の上においていたので, ここを改良です。密着性を高めるために, 近くのパソコンショップでシリコングリスを購入して, CPU表面に薄く塗ってからシンクを載せてみます。

が, 何も変わりません。

で, おかしいなと思い見てみると, CPU表面に塗ったシリコングリスがシンクの裏側に全然ついていません。 そう, なんと「全然ヒートシンクとCPU表面が接していない」のです。

前述したように, 無理矢理ヒートシンクをCPUの上に載せていたのですが, その際にどうもヒートシンクがCPU に対して斜め向きになってしまい, 全然CPU表面と接していなかったようです。密着性とかいう以前の問題です。 これを何とかしないといけませんが, コンデンサが邪魔で何ともなりません。 マザーボードに付けられているのコンデンサを取り外すわけにもいかないので, ファン, あるいはマザーボードを買い替えるか……と思ったのですが, それはとってもシャクです。

ということで, いろいろ考えた末, マザーボード固定用にファンについているツメを折って, 「ねじりっこ」で固定します (けっこうむちゃ……)。

この結果, マシンはかなり安定しました。450MHz で負荷をかけても (カーネル再構築など) しても問題ありません。 めでたし, めでたし……?

安定動作しない (その2)

と, だいぶ良くなったように感じたのも, 束の間。 相変わらず, CPU温度上昇警告もでずに, いきなりフリーズする現象が起きます。

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 を入れたのですが, 非常に不安定で全然使い物にならず, 速攻で消しました。


結論:安物を使うには, いろいろと技術がいる (あたりまえか)。
冨永丈博の Home Page に戻る