にゃごにゃ小学校

本家(HP)作製のネタ、あるいは記事にするには寸足らずな話を日記兼用でアップします。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 初めにお断りしておきます。この記事は、日本に数人いるかどうかも定かでない東芝リブレット(Libretto) L5のLinuxerのための技術情報なので、99.9999...%の人には関係のない話です。

 年末年始休暇を利用して、LibrettoのOSをバージョンアップした話はこちらに記事を書きました。
 実はその後、けっこうはまってしまっている問題がありました。xorgのX-Windowを起動すると、50%以上の確率で起動に失敗してしまうのです。しかもこの場合、マシンリセットしなければならなくなります。他のマシンからリモートログインしてサーバをkillしても、Xを再起動しようとした時点でOSが固まってしまいます。
 以前は何のトラブルもなくX-Windowを使っていましたので、比較的最近の、Xorgのati(radeon)ドライバにある種の問題があると考えられます。実のところ、バージョンアップ前に利用していたFedore Core 5でも、この問題はすでに起きていて、だましだまし使っていたというところが実状でした。

 いちおう、Deviceセクションで、noAccelのOptionを設定すれば起動してくれますが、アクセラレータなしでは非常に辛い。具体的には例えば、エディタやブラウザで、スクロールすると非常に時間がかかるのです。

 ログである/var/log/XOrg.0.logで、起動に成功したときと失敗したときを比較してみると、直接の原因はわりと簡単に特定できました。要は、失敗したときはOSとディスプレイカードが利用できるリソースのアドレスを、誤って検出してしまっているのです。これだと、再起動しても固まるはずです。
 この点については実は大失敗をしました。二度もファイルシステムを飛ばしてしまったのです。
 それまでは、Ext3fsのジャーナルを信じて、X起動に失敗したら電源プチッ、と切って、再起動していました。何度かfsckかけても、別にエラーは出てないので、これでもいいか、とも思いましたが、そのうちに、さすがにこれはまずいかも、という気がしてきて、「きちんと」リモートログインしてシャットダウンするように心がけたのです。
 ところが、この「お行儀の良さ」が裏目に出たのです。
 Xサーバが不正なリソースにアクセスした状態では、そのまま余計なことをせず、サーバが内部リトライしている間にプチッと切るのが実は正解だったのです。シャットダウンプロセスを行うことで、カーネルが正しくないリソースに対してあれこれアクセスするので、その結果、ファイルシステムの論理テーブルを見事に破壊してしまうのです。
 最初、飛んだときは、HDDの障害か、あるいは接続端子の接触不良だと思いました。ピンに細工して無理矢理接続しているので、ときどき緩み、ハードエラーが出たことが過去にも何度かあったからです。
 しばらくしてまた飛んだときは、パソコンそのものを疑いました。特にリブレットのようなサブノートは、回路を詰め込んであって、部品の劣化が進みやすいのは常識です。
 実際に、次のモバイル機と、自宅で使うノートパソコンの購入を真剣に検討しましたが、最後のチャンスのつもりでもう一度Vine4をインストールし、様子を見ているうちに、どうも上記のXドライバが原因のような気がしてきました。そもそも、そうしたトラブルは、熱のこもる夏場に起こるものです。また、ハードよりソフト的な問題であることを裏付けるように、Linuxのファイルシステムは見事にファイルシステムの先頭領域が壊れているのに、マルチブート環境のWin XPの領域には何の障害もなく、ちゃんと動くのです。
 率直に言って、本体故障説は完全には払拭していませんが、その後十分長時間稼働できている現状を見ると、やはりXのドライバではないかと思われます。

 で、それからが苦労の連続。Libretto L5のディスプレイチップは、ATIのRadeon Mobility M6 LYというタイプですが、それ自体もうかなり古い。そして、それを1280x600なんてイレギュラーな解像度でドライブしていること自体が、非常にマイナーです。
 ネットでもなかなか有用な情報が得られません。

 それでも、なんとか解決にこぎつけました。そこで、もし同様の問題に悩んでいる人がいたら、参考にしてもらえるようにと紹介します。
 ただし、ドライバをだまして動かしているので、なんらかの問題や障害が出ない保証はありません。もしあれば、また報告しますが、その場合は自己責任であることをくれぐれもよろしくお願いします。

 で、解決策ですが、ATIが提供している、fglrxというX-Window用のドライバを使用します。
 といっても、最新版ではダメ。というか、少なくとも私の使った手段では、利用可能なバージョンはごく限られます。まず、以下のドライバをダウンロードします。

http://www2.ati.com/drivers/linux/ati-driver-installer-8.29.6.run

 そして、sh ./ati-driver-installer-8.29.6.runを実行し、指示にしたがってドライバをインストールします。
 このインストールは、テキスト環境でもX環境でも可能で、X環境でしたいときは、とりあえず上記のようにアクセラレータをオフにして起動してからやればよいでしょう。

 そして、/etc/X11/xorg.confの設定。このまま使って問題ないと思いますが、この中のDeviceセクションで、
  Driver "fglrx"
  ChipId 0x7835
という2行が特に重要です。
 Driverの方はドライバの指定ですが、後者は、実はMobility M6 LYという実装されているチップを、強制的にこのチップに見做すようにさせる、という指定です。
 fglrxドライバは、Xorgのサポートが間に合わない新しいチップや、Xorgのドライバでは十分機能を発揮できていないものを使えるようにする、というもので、すでにXorgドライバでも完成の域にあると考えられているLibretto L5のチップに対するサポートは含まれていないのです。
 ですが、これで問題なく起動するのは事実です。また、アクセラレータも使えます。少なくとも、noAccelで起動したり、VESAドライバを使ったりするよりずっと快適です。

 ということで、参考までに。くれぐれも自己責任、よろしく。
スポンサーサイト

コメント

Libretto L5にVineLinuxを入れていますが、
表示周りの狭さ(800x600)から解放され助かりました。

記事化のねうち

通りすがりさん、書き込みありがとうございました。

その後、9ヶ月使っていますが全く問題ありません。

少なくとも一人、この記事が参考になった方があるということで、記事にした値打ちがありました。
快適なLinuxライフを祈っています。

コメントの投稿

Name
Title
E-mail
URL
Comment
Password
※入力しないと編集・削除ができません
 管理者にだけ表示を許可する

トラックバック

この記事へのトラックバックURL

http://questkpax.blog51.fc2.com/tb.php/678-258d7c7c

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。