Messages in cipher reflected in the looking glass

http://blogs.sun.com/thaniwa/date/20070523 2007年 5月 23日 水曜日

(JA) Diskless Solaris (x86編) その4:パッケージのインストール NVIDIAドライバ編

第4回目は NVIDIA のドライバインストールです。
ディスクレスクライアントは基本的にPCそのものです。 ですので、PCの能力をほぼフル活用できるわけですので、利用しない手は無いです。 ただ、Solaris 10 11/06 では NVIDIA のドライバは OS に組み込まれていないので、 標準ではソフトウェアOpenGL となってしまいます。 NVIDIAグラフィックカードがもったいないので、この際なので追加してしまいます。

パッケージの追加方法の概要

と、まずパッケージの追加方法を簡単に解説します。
ディスクレスクライアントに対するパッケージの追加はサーバ側で行います。 追加方法は (JA) Diskless Solaris (x86編) その1:ディスクレスクライアント構築 にちょこっと書いてあるのですが、pkgadd -R を用いて行います。 この際、インストール管理用ファイル(adminファイル)を作成して利用しています。 下記のような感じです。

mail=
instance=unique
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=/usr_i386.all

上記の内容の全てが必要なわけではありません。/usr にインストールするアプリケーションで必要なのは basedir の項目です。 というのも、ディスクレスクライアント用の /usr は /export/Solaris_10/usr_i386.all/usr (/export/exec/Solaris_10_i386.all/ ) という通常とは異なるディレクトリに存在するためです。
/usr 以外の場合は basedir=default にしておきます。
このファイル(/tmp/adminとします) を用意しておき、下記のようにパッケージをインストールします。
/usr の場合は次の通りです。

# pkgadd -R /export/Solaris_10 -a /tmp/admin <pkg>

/ (root) にインストールする場合は、必要なクライアント全てにインストールします。 また、必要に応じて clone にもインストールします。

# pkgadd -R /export/root/w1100z -a /tmp/admin <pkg>
# pkgadd -R /export/root/clone/Solaris_10/i86pc/ -a /tmp/admin <pkg>


パッケージがどこにインストールされるかはパッケージディレクトリの pkginfo, pkgmap などを見て調べます。
パッケージ命名規則となっているかどうかはわかりませんが、 / (root) にインストールするパッケージは パッケージ名の最後の文字が r となっているものや -root と なっているものがほとんどです。

NVIDIA のドライバをインストールする

NVIDIAのサイトからドライバをダウンロードします。
http://www.nvidia.com/object/unix.html
今回は 1.0-9755 (NVIDIA-Solaris-x86-1.0-9755.run) を利用します。

ダウンロードが完了したら、解凍を行います。 通常の場合、ダウンロードしたファイルを実行すれば インストールが行われるのですが、 ディスクレスクライアントの場合、パッケージのインストール先が異なるため、 手動で行う必要があるためです。
--help オプションで確認できるように解凍用のオプションが用意されています。

# sh NVIDIA-Solaris-x86-1.0-9755.run --help
NVIDIA Software Installer for Solaris

This program is used to install and upgrade the
NVIDIA Accelerated Graphics Driver Set
for Solaris x64/x86

This program contains the driver version 1.0-9755

Available options:

    -h, --help: print this help message
    -x, --extract-only: extract the package in the current directory


# sh ./NVIDIA-Solaris-x86-1.0-9755.run -x

解凍すると、NVIDIA-Solaris-x86-1.0-9755 のようなディレクトリが作成されます。

# cd NVIDIA-Solaris-x86-1.0-9755
# ls
NVDAgraphics   NVDAgraphicsr  gfx_private    install

中身は下記の通りです。

  • NVDAgraphics : /usr にインストールされる NVIDIA 用ライブラリなど
  • NVDAgraphicsr : ドライバ(/kernelにインストール)
  • gfx_private : カーネル用モジュール(Solaris 10, Solaris 11用にわかれている)
  • install : インストール時に実行されるスクリプト

まず NVDAgraphics をインストールします。 インストール前にインストール管理用adminファイル (ここでは NVDA_admin_usr)を作成します。
ファイルは NVIDIA のドライバインストール事に自動的に作成されるものを ベースにし、basedir の変更を行ったものです。

mail=
instance=overwrite
partial=nocheck
runlevel=ask
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=/usr_i386.all/usr

続いて、インストールです。pkgadd 一発で終わりです。

# pkgadd -a /tmp/NVDA_admin_usr -R /export/Solaris_10 -d. NVDAgraphics

Processing package instance <NVDAgraphics> from </root/NVIDIA-Solaris-x86-1.0-9755>

NVIDIA Graphics System Software(i386) 1.0.9755,REV=2007.02.26.23.59
Copyright 2005 by NVIDIA Corporation.  All rights reserved.
Use is subject to license terms.
Using </export/Solaris_10/usr_i386.all/usr> as the package base directory.
## Processing package information.
## Processing system information.
   26 package pathnames are already properly installed.

Installing NVIDIA Graphics System Software as <NVDAgraphics>

インストール後、libGL等のシンボリックリンクの作成を行います。 (環境が NVIDIA に固定される場合は問題ないが、 mesaを利用しているなどの場合は注意が必要です。)

 # cd /export/Solaris_10/usr_i386.all/usr/lib
 # ln -sf ../X11/lib/NVIDIA/libGL.so.1 .
 # ln -sf ../X11/lib/NVIDIA/libGL.so .
 # ln -sf ../../X11/lib/NVIDIA/amd64/libGL.so.1 ./amd64
 # ln -sf ../../X11/lib/NVIDIA/amd64/libGL.so ./amd64

  下記は MESA OpenGL ライブラリへのシンボリックリンクを
  NVIDIA OpenGL ライブラリへのシンボリックリンクに入れ替えている部分です。

 # cd /export/Solaris_10/usr_i386.all/usr/X11/lib
 # ln -sf NVIDIA/libGL.so .
 # ln -sf NVIDIA/libGL.so.1 .
 # ln -sf ../NVIDIA/amd64/libGL.so ./amd64
 # ln -sf ../NVIDIA/amd64/libGL.so.1 ./amd64

 # mkdir -p /export/Solaris_10/usr_i386.all/usr/include/GL
 # cd /export/Solaris_10/usr_i386.all/usr/include/GL
 # ln -sf ../../X11/include/NVIDIA/GL/glxext.h .
 # ln -sf ../../X11/include/NVIDIA/GL/glx.h .
 # ln -sf ../../X11/include/NVIDIA/GL/glext.h .
 # ln -sf ../../X11/include/NVIDIA/GL/gl.h .

 # cd /export/Solaris_10/usr_i386.all/usr/X11/lib/modules/extensions
 # ln -sf NVIDIA/libglx.so.1 .
 # ln -sf NVIDIA/libglx.so .
 # ln -sf ../NVIDIA/amd64/libglx.so.1 ./amd64
 # ln -sf ../NVIDIA/amd64/libglx.so ./amd64

続いて、NVDAgraphicsr をインストールします。 このパッケージは必要なクライアント全てにインストールする必要があります。
このパッケージのインストールに利用した adminファイル(/tmp/NVDA_admin_root)は以下の通りです。

mail=
instance=overwrite
partial=nocheck
runlevel=ask
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=default

必要に応じて下記のように clone 領域にインストールしてください。

インストール ( clone領域 : ログは削ってます)
# pkgadd -a /tmp/NVDA_admin_root -R \
  /export/root/clone/Solaris_10/i86pc -d. NVDAgraphicsr

インストール(クライアントの場合: w1100z)
# pkgadd -a /tmp/NVDA_admin_root -R /export/root/w1100z -d. 

NVDAgraphicsr

Processing package instance <NVDAgraphicsr> from </root/NVIDIA-Solaris-x86-1.0-9755>

NVIDIA Graphics System Device Driver(i386) 1.0.9755,REV=2007.02.26.23.59
Copyright 2005 by NVIDIA Corporation.  All rights reserved.
Use is subject to license terms.
Using </export/root/w1100z> as the package base directory.
## Processing package information.
## Processing system information.
   3 package pathnames are already properly installed.

Installing NVIDIA Graphics System Device Driver as <NVDAgraphicsr>

gfx_private のコピーを行います。 gfx_private は Solaris 10 用と Solaris 11 用があります。 ここでは Solaris 10 用を使います。

clone領域が対象の場合

# cp -fp gfx_private/SunOS-5.10/gfx_private \
  /export/root/clone/Solaris_10/i86pc/kernel/misc
# cp -fp gfx_private/SunOS-5.10/amd64/gfx_private \
  /export/root/clone/Solaris_10/i86pc/kernel/misc/amd64

クライアント領域が対象の場合(ホスト名 : w1100z の場合)

# cp -fp gfx_private/SunOS-5.10/gfx_private \
  /export/root/w1100z/kernel/misc
# cp -fp gfx_private/SunOS-5.10/amd64/gfx_private \
  /export/root/w1100z/kernel/misc/amd64

これで、ドライバのインストールは完了です。 続いて、ディスクレスクライアントを再起動します。 通常の場合は、「reboot -- -r」を実行しますが、 ディスクレスクライアントの場合はこれは動作しません。
ディスクレスクライアントを再起動し、 grubが起動した際に kernel の部分に -r オプションを追加して起動するか、 下記のようにクライアントの grub の設定ファイル ( この場合 /export/root/w1100z/boot/grub/menu.lst ) を 一時的に変更してからネットワークブートを行う必要があります。

default=0
timeout=10
title Solaris Diskless Client
        root (nd)
# If console is on ttya|ttyb, replace kernel line with
# one of the commented lines

#        original
#        kernel /w1100z/multiboot 

#       boot with re-config
        kernel /w1100z/multiboot -r

#       kernel /w1100z/multiboot -B console=ttya
#       kernel /w1100z/multiboot -B console=ttyb
        module /w1100z/boot_archive

クライアント側で NVIDIA を利用するように xorg.conf を作成する。

  1. xorg.conf を作成します。
    kdmconfig実行前に GUI上で xorgconf ツールを起動し、 そのまま保存(/etc/X11/xorg.conf)する。
    保存した xorg.conf の driver "nv" を driver "NVIDIA" に変更します。
    この方法が一番簡単です。
  2. kdmconfig を起動し、xorg 利用に変更する

以上で終了です。
3D と言うと LG3D なのでとりあえず動かしてみました。 正式版は JDK, Java3D 等必要なものが全て入っているので、 解凍して、lg3d/bin/lg3d-dev (lg3d/bin/lg3d-app, lg3d/bin/lg3d-app-full でも可) で動くので簡単です。
ソフトウェア OpenGL 環境ではまともに動きませんので、 ちゃんと動いているか確認するにもうってつけです。^-^;




投稿されたコメント:

コメント
コメントは無効になっています。