2013年1月1日火曜日

Ubuntu12.04LTSマシンへのnvidia-96適用

正月休みで実家に帰省中なのですが、
実家で使用していた自PC(以下、実家PCと呼ぶ)を修復。
その際の作業内容の備忘録兼情報共有。

【背景】
実家PCは私が高校生の時(なんと10年以上前)に自作したマシンで、
基本的な構成は当時とほとんど変わっていません。
CPUには当時比較的ハイスペックだったPentium4 1.6GHzが載っています。

RAMやHDDは消耗品のため、数回は換装されています。
ただしマザーボード、CPU、グラフィックカード、サウンドカード、NIC、モニターは当時のままです。

さてこの旧型PCですが、実家にいる間は、私のメインPCとなります。要は現役です。
今時、こんな電力効率の悪い低スペックPCなんて買い換えればいいのに
と思われるかもですが、
年間で実家にいる日数が10日くらいなことを考えると、
そのために新たにPCを購入するのはバカらしいではないですか。
破棄するにも手間暇やリサイクル費用がかかりますし。
また、家族共用のPCを使用するのも気持ち悪いし、
故に文句を言いながらも、愛用しつづけています。

OSは当初Windows98、その後WindowsXPへ移行し、
今年2012年はじめまで使用していました。
しかし2012年初等からHDDエラーが原因と思われるOSのハングアップが頻発したことから、
HDD換装と合わせてOSをUbuntu12.04LTS(32bit)に移行しました。

これまでも何度もHDD換装はしてきましたが、OSを変えることはしませんでした。
今回はXPもそろそろサポート対象外になるだろうし、
かと言ってWindows7はスペック不足だろうし、金もなるべく出したくないし、
ということで、ちょうどLTSが出たばかりのUbuntuに乗り換えました。
(自宅のメインPCもUbuntuですがw)

ただしそこで問題が。
実家PCのグラフィックボード、nVidia製GeForce4 MX440向けのドライバが
Ubuntu12.04で使用できないのです。
Ubuntu12.04デフォではnVidia製品向けにnouveauというOSSのドライバが
用意されていて、自動的に作動したのですが、
画面にノイズが入り始め、しまいにはハングアップしてしまいます。
nouveauをアンインストールし、VESA(汎用ビデオドライバ)で我慢することにしました。
ただしVESAだと画面解像度に制限があったり、描画性能が悪かったため、
使用しうるに耐えない状態でした。特に動画サイトの動画再生がまともにできませんでした。

そこで、この年の瀬の実家での余暇に、ビデオドライバの改善を試みたわけです。
だいぶ前置きが長くなりましたが、ここからが本題です。


【本題】
まず試したのがGeForce4 MX440のLinux向け公式ドライバnvidia-96のインストール。
$ sudo apt-get install nvidia-96
ただし、これはUbuntu12.04が当ドライバに対応していない、
正確にはnvidia-96がXorgの最新版の仕様(xorg-video-abi-12)に対応していないため、
パッケージ依存関係エラーでインストール不可。

http://askubuntu.com/questions/112206/how-can-i-get-nvidia-96-installed

そこで上記URL記事内にあるxorg-abi-compat-hackを入手し、
パッケージの依存関係を破壊した上でnvidia-96を強引に入れてみました。
xorg-abi-compat-hackの導入手順は以下。
$ sudo add-apt-repository ppa:diehard67/xorg-abi-compat-hack
$ sudo apt-get update
$ sudo apt-get install xorg-abi-compat-hack
nvidia-96のインストールに成功したので、
$ sudo nvidia-xconfig
を実行してxorg.confを設定した後リブートしたが、
ログイン画面まで到達できませんでした。
正確には、
背景の色とマウスカーソルが一瞬画面に表示されたかと思うと、
別の解像度に変更され、再度同じ画面が一瞬表示される。
これが永遠と繰り替えされてしまうという現象でした。
/var/log/Xorg.0.logを見ると、Segmentation faultが発生していました。

どうやらxorg-abi-compat-hackでは対処できないらしいです。
(ただしこの時、xorg.confの設定が腐っていた可能性があるので、
xorg-abi-compat-hackがダメだったのか100%で断言できませんが)

そこで、
http://askubuntu.com/questions/112206/how-can-i-get-nvidia-96-installed

で提案されている、Xorgのダウングレードに挑戦しました。
手順は上記URLで示されているURL
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-173/+bug/922268
のpost7に書かれているのですが、若干分かり辛いので、

http://ubuntuforums.org/showthread.php?t=1986601
の#4を参考にしました。
ただし、設定例に誤りがあり私もハマったので、
訂正後の手順を以下に載せます。

(1)Ubuntu11.10(oneiric)のリポジトリを追加する。
$ sudo vi /etc/apt/sources.list.d/oneiric.list
deb http://archive.ubuntu.com/ubuntu oneiric main
deb-src http://archive.ubuntu.com/ubuntu oneiric main
(2)旧バージョン固定用のピン設定ファイルを作成する。
$ sudo vi /etc/apt/preferences.d/xorg-xerver-pin-1050
Package: xorg
Pin: release a=oneiric
Pin-Priority: 1050
Package: xserver-xorg*
Pin: release a=oneiric
Pin-Priority: 1050
(3)updateする。
$ sudo apt-get update
$ sudo apt-get upgrade
xorg、xserver-xorg-*のダウングレードをしてもよいか確認されるので、承認する。

(4)nvidia-96をインストールする。
$ sudo apt-get install nvidia-96
(5)xorg.confを初期化する。
$ sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bk
$ sudo nvidia-xconfig
(6)再起動

私はこの手順で無事、nvidiaドライバが使用できるようになりました。
(なぜかシステム設定の「追加のドライバー」では「このドライバーは有効ですが、現在使用していません。」と表示されますが、
OpenGLなどでハードウェアアクセラレーションが効いていることは確認できました)

ただ、動画サイトの動画再生は結局厳しかった・・・
そういえばWindowsXP入れてたときもカクカクしてたっけかな。残念。

あれ、これ書いているうちに年越してしまった。あけおめ!

0 件のコメント:

コメントを投稿