Solaris で nVidia のグラフィックカードを使う
これまでのあらすじ
Solaris 向けのデバイスドライバを直接提供しており、しかも結構な頻度でアップデートしていることから、RADEON 系列から nVidia 系列に乗り換えることに。
GeForce 210 搭載のカードを使用して Solaris を起動したところ......GUI 画面に移行できない .... orz
しょうがないので、とりあえず VESA ドライバでインストールだけ済ませて、後でドライバをアップデートすることに。
nVidia のサイトからドライバをダウンロードし、手順書通りに pkgadd してみると....あれ?インストールできない?
ネットの海を彷徨うこと暫し .... あぁ、OpenSolaris の IPS パッケージとして導入されている旧版ドライバと、SVR4 パッケージで導入しようとしている新版ドライバが上手いこと折り合ってくれてないのね。
どうやら、以下の手順で導入する必要があるらしい:
- "beadm create" で新しいブート環境(以下 NEW-BE)を作成
- "beadm mount NEW-BE /mnt" で NEW-BE を /mnt に暫定マウント(マウント先は任意)
- "pkg -p /mnt uninstall" で NEW-BE から旧版ドライバを削除
- snv_133 未満の場合、対象パッケージ名は "NVDAgraphics"
- snv_133 以降の場合、対象パッケージ名は "driver/graphics/nvidia"
- ダウンロードしたドライバファイル(シェルスクリプト)を --extract-only 付きで実行
- 展開先に移動して、"pkgadd -p /mnt " で NEW-BE にダウンロードしたパッケージをインストール
- 展開先の gfx_private/SunOS-5.11/gfx_private モジュールを /mnt/kernel/misc 配下にコピー
- 展開先の gfx_private/SunOS-5.11/amd64/gfx_private モジュールを /kernel/misc/amd64/ 配下へコピー
- "bootadm update-archive -R /mnt" で起動アーカイブを更新
- NEW-BE で再起動
gfx_private モジュールに関する手順は、太田さんのブログにおける手順とのあわせ技。
なお、VESA ドライバでインストールすると、強制的に VESA ドライバを読み込む設定が /mnt/etc/X11/xorg.conf に記録されてしまうので、その場合には再起動前に /mnt/etc/X11/xorg.conf 中の記述を削除しておく必要がある。
で、以上の手順を経て再起動してみると .... またまた GUI 画面に移行できない... orz
明示的に nvidia モジュールを読み込むようにしてみたり、xorg.conf を削除して自動読み込みにしてみたりなど、色々手を尽くしては見たものの、どうにも動く気配が見られない。
再度ネットの海を漂うこと暫し .... は? GeForce 2xx 系列のチップだと上手く動かない?ドライバの対応チップ一覧にも掲載されているのに?
グガー!何てこった!
Solaris 側の実装の問題っぽいけど、Linux でも同現象が発生するらしいから、単純に Solaris の実装だけが悪いわけでもないのかな?
カーネルのアップデートが無くても、gfx_private モジュールにパッチが当たれば動かせるらしい、との情報だけど、つい先日更新版ドライバがリリースされたばかりだから、幾ら nVidia が Solaris/Linux 系のサポートに熱心でも、アップデートが早々にリリースされるというのは考え難い。
それまで VESA 環境で我慢する、という手もあるのだけれど、そもそもアップデートのリリースが確約されているわけではないことから、稼動実績情報を信じて GeForce 4xx チップ搭載のカードを購入。うー、またも無駄な買い物に .... > GeForce 210 カード
新しいカードを装着し、最新版のドライバを導入した環境で再起動してみると .... やった!最高解像度での表示が出来てる!
起動環境のドライバパッケージは既に SVR4 パッケージベースになっているので、以後の更新パッケージ導入はもうちょっと楽になるのかな?
ちなみに、余った GeForce 210 カードは、売り払うぐらいしか使い道が無いのだが、CUDA とかで使えるなら無駄にならないんじゃね?などという話も。
しかし、nVidia は Windows/Mac/Linux 向けには CUDA SDK を提供しているものの、Solaris 向けには提供していない模様.... orz