ochalog

RubyとMediaWikiとIRCが好き。

2014-02-01 の Gentoo Linux 作業記録(その 2:x11-drivers/nvidia-drivers)

x11-drivers/nvidia-drivers

最初の再起動の後、nVidiaプロプライエタリドライバを入れた。ビデオカードGeForce GTX 460。この作業までは Xorg 関連のパッケージを emerge しない。

参考文献

インストール前の設定

カーネル設定
  • Device Drivers --->
    • Graphics support --->
      • < > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
      • <*> Support for frame buffer devices --->
        • 子項目をすべて無効化
      • Console display driver support --->
        • <*> Framebuffer Console Support
/etc/portage/make.conf

以下を追加。

INPUT_DEVICES="evdev"
VIDEO_CARDS="nvidia"
/etc/portage/package.use

以下を追加。

x11-base/xorg-server udev

インストール

以下を実行。X サーバーと共に nVidia ドライバがインストールされる。

emerge --quiet-build xorg-server

ドライバはカーネルに依存しているため、カーネルmake のたびに再インストールしなければならない。再インストール時は以下を実行する。

emerge --quiet-build nvidia-drivers

インストール後の設定

パーミッション

アクセラレーションを有効にするためには、ユーザーが video グループに属していなければならない。そうでなければ、video グループのユーザーを追加する。

# root で
gpasswd -a ochaochaocha3 video
カーネルモジュールの設定

OpenRC ならば /etc/conf.d/modulesmodulesnvidia を追加する(スペース区切り)。自分の環境では nvidia のみだったので以下のようになった。

modules="nvidia"

systemd ならば(ちょっと先取り)、/etc/modules-load.d/nvidia.conf を作成し、以下のように書く。

nvidia

ここで、新しいカーネルで起動しモジュールを読み込むため、再起動する。

reboot

再起動したら、モジュールが読み込まれていることを確認する。

lsmod | grep nvidia
# nvidia              10615409  0
/etc/portage/make.conf

USE フラグに以下を追加する。

  • nvidia
  • xvmc
    • XvMCNVIDIA サポート。高解像度の動画を見る際に有用とのこと。

USE フラグ追加後、それを反映させる。

emerge --quiet-build --update --newuse --deep @world
OpenGLOpenCL の有効化

以下を実行する。

eselect opengl set nvidia
eselect opencl set nvidia
/etc/X11/xorg.conf

Xorg の設定前だと、「NVidia/nvidia-drivers#The X Server - Gentoo Wiki」や「Xorg/Configuration#Configuring Xorg - Gentoo Wiki」に載っている設定だけを行っても X サーバーを起動できない(「no screens found(EE)」というエラーが出る)。

設定の雛形を作るには以下のコマンドが便利。/etc/X11/xorg.conf が生成される。

nvidia-xconfig

続いて、生成された /etc/X11/xorg.conf を修正する。自分の環境での概要は以下の通り。

  • ビデオカード用に nVidia ドライバを使う。
  • ディスプレイは 1 台の ProLite E2271HDS-B1。
  • キーボードは JP106 キーボード。
  • マウスは自動設定(マウス設定の部分を削除)。

ファイル内容の例を示す。

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 331.38  (buildmeister@swio-display-x64-rhel04-15)  Wed Jan  8 19:53:14 PST 2014
 
Section "ServerLayout"
    Identifier     "Layout0"
    Screen         0 "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
EndSection
 
Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "evdev"
    Option         "XkbLayout" "jp"
    Option         "XkbModel"  "jp106"
EndSection
 
Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "iiyama"
    ModelName      "PLE2271HDS-B1"
    HorizSync       30 - 80 # ディスプレイの仕様を見て設定する
    VertRefresh     55 - 75 # ディスプレイの仕様を見て設定する
    Option         "DPMS"
EndSection
 
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection
 
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
 
    SubSection     "Display"
        Depth       8
        Modes       "1920x1080" "1680x1050" "1440x900" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
 
    SubSection     "Display"
        Depth       15
        Modes       "1920x1080" "1680x1050" "1440x900" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
 
    SubSection     "Display"
        Depth       16
        Modes       "1920x1080" "1680x1050" "1440x900" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
 
    SubSection     "Display"
        Depth       24
        Modes       "1920x1080" "1680x1050" "1440x900" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

startx

X サーバーを起動し、設定が正しいことを確認する。

テスト用ウィンドウマネージャなどのインストール

twmxterm、そしてカードテスト用の mesa-progs をインストールする。

emerge --quiet-build twm xterm mesa-progs
startx と direct rendering の確認

以下で X サーバーを起動する。エラーが出ず複数の xterm が最大解像度で起動したら成功。

startx

複数の xterm が起動したら、その内のどれかひとつで direct rendering が有効か調べる。Yes が出れば、ここまでの設定はおそらくすべて正常。

glxinfo | grep direct
# direct rendering: Yes

No が出たら設定(特にカーネル)を見直す必要があるかも。あと SSH ポートフォワードの場合は Yes にならない(これで勘違いした(笑))。