↑ 「FreeBSDで遊ぼう」のページへ

↑ トップページへ

★ [SilverSackの自画自賛] FreeBSDで遊ぼう

★

 デスクトップ環境の構築 - 3 (1). NVIDIAドライバーのインストール


グラフィックボードの双璧の一角をなすNVIDIAですが、FreeBSDで使う場合標準のドライバーは、劇遅そなのが問題です。ですが、NVIDIAがFreeBSD用にもドライバーを用意してくれているので、これをインストールしないでNVIDIAのボードを使うというのはあり得ないでしょう(といいつつ、私も、今までよく知らずに、NVIDIAのボードを差しながら、ドライバーのインストール方法がわからずにオンボードのグラフィック機能を使っていたのですが)。やってみたら結構簡単だったので、ここにまとめておきます。

作業の際は、rootでログインするか、一般ユーザーでログインした後、suでrootユーザーになってください。

  1. ボードに適合するドライバーの調査
  2. まずは、手持ちのNVIDIAボードのドライバーのバージョンをNVIDIAのウェブサイト(http://www.nvidia.co.jp/Download/index.aspx?lang=jp)で調べます。ウェブサイトのデザインなどちょくちょく変わるんでしょうが、現時点だと

    製品のタイプ GeForce (私の場合)
    製品シリーズ GeForce 10 Series (私の場合)
    製品ファミリー GeForce GTX 1050 (私の場合)
    オペレーティングシステム FreeBSD x64 (またはFreeBSD x86)
    言語 Japanese

    と入力して、その後「検索」ボタンを押します。

    FreeBSDでは、nvidia-driver、nvidia-driver-470、nvidia-driver-390、nvidia-driver-340、nvidia-driver-304の5種類のドライバーが用意されています。nvidiaの製品サポートリストから自分のグラボに対応したものを選びます。

  3. NVIDIAドライバーと関連するパッケージのインストール
  4. NVIDIAのドライバーと関連するパッケージをインストールします。コマンドプロンプトで

      # pkg install nvidia-driver nvidia-settings nvidia-xconfig[ENTER]

    と打ちます(nvidia-driverは、状況によって。nvidia-driver-470、nvidia-driver-390、nvidia-driver-340、nvidia-driver-304)

  5. rc.confの編集
  6. 起動時にNVIDIAのドライバーを読み込むように、/etc/rc.confに以下の記載を追加します。nvidia-driver/nvidia-driver-470/nvidia-driver-390の場合は、

      kld_list="nvidia-modeset"

    nvidia-driver-340/nvidia-driver-304の場合は、

      kld_lsit="nvidia"

    と記載してください。

  7. confファイルの編集
  8. /usr/local/etc/X11/xorg.conf.dフォルダーにdriver-nvidia.confというファイルを作成して、以下の内容を記述します。

      Section "Device"
        Identifier "Card0"
        Driver "nvidia"
      EndSection

    Card0かどうかというのは、環境によるので、はっきりしない場合は、

      # Xorg -configure[ENTER]

    を実行して、作成された/root/xorg.conf.newを見て、判断してください。/root/xorg.conf.newは、用が終わったら削除してください。あってはいけないというわけではないですが、現在はxorgに自動設定させるのを推奨して、xorg.confを使うのを推奨していないようです(ハンドブック 2017/8/29版 5.4.4 コンフィグレーションファイル)。

これで再起動すると、NVIDIAのドライバーが有効になっています。

補足情報

[その他の情報]

なお、このページを書くに当たって、以下の記事を参考にしました。

portsのメッセージに結構有用な情報がありますので、訳しておきます。

(nvidia driver portsからのメッセージ)

NVIDIAのドライバーを利用する際は、必ずNVidiaカーネルモジュールをロードしてください。方法は、コマンドプロンプトで

  kldload nvidia (または、nvidia-modeset、下記参照)
と打つか、/boot/loader.confファイルに
  nvidia_load="YES" (または、nvidia-modeset_load="YES"、下記参照)
を追記するか、/etc/rc.confファイルの「kld_list」変数に「nvidia(または、nvidia-modeset、下記参照)」を書くかのいずれかです。

このportをFreeBSD AGP GARTドライバーと一緒にビルドした場合は、agp.koカーネルモジュールをインストール/ロードするか、「device agp」を指定してカーネルをコンパイルしてください。nvidia.koは、これに依存するからです。そうしなければ、nvidia.koはロードされないでしょう。同時にX11コンフィギュレーションファイルの「Device」セクションの「Option NvAGP」に正しい値を設定してください。

  nvidia_load="YES" (または、nvidia-modeset_load="YES"、下記参照)

リナックス互換サポート付でビルドする場合は、linux.koも利用可能(またはカーネルにコンパイルされている)にしてください。それは、/boot/loader.confでロードすることもできますし、/etc/rc.confに

  linux_enable="YES"
を追記してブートプロセス中にロードすることもできます。

カーネルで「options SYSVSHM」を有効にしていて、Xが起動せず、/var/log/Xorg.0ファイルに

  (EE) NVIDIA(0): Failed to obtain a shared memory identifier.
の表示がある場合は、sysctlの「kern.ipc.shmall」を増やす必要があります。

バージョン358.09からドライバーのいくつかの重要な機能がnvidia-modeset.koという別のカーネルモジュールに分離されました。X11サーバーが立ち上がらない、または、/var/log/Xorg.0ファイルに

  (II) NVIDIA(0): Validated MetaModes:
  (II) NVIDIA(0): "NULL"
が表示されてている場合は、NVidiaドライバーカーネルモジュールのロード方法に応じて、/boot/loader.confファイルまたは/etc/rc.confファイルの記載を「nvidia」から「nvidia-modeset」に書き換えてください。

さらなる情報は、/usr/local/share/doc/NVIDIA_GLX-1.0/READMEを参照してください。


今回のセットアップでの主なモジュールのバージョン
nvidia-driver 550.54.14
nvidia-driver-470 470.161.03_1
nvidia-driver-390 390.154_1
nvidia-driver-340 340.108_4
nvidia-driver-304 304.137_10
nvidia-settings 535.146.02_1
nvidia-xconfig 525.116.04

(2016年 9月10日 記
2024年 7月20日 更新)