自宅のメインデスクトップ機、Intel NUCキットNUC7i5BNHでFreeBSDを使っています。先日の記事では、本マシンでXorgが使えるように設定を行ないました。その記事の最後に「11.2-RELEASEではKaby Lake世代のCPUでもアクセラレーテッド・グラフィックスが使えるようになりそう」と書きました。(正確には「Broadwell世代以降のCPUでも」でしたね。)

さて、6月2日に、11.2-RELEASEのリリース候補版である11.2-RC1が利用可能になりました。リリース版まで待ちきれなかったので、11.2-RC1でグラフィックス・アクセラレーションを実現するドライバdrm-next-kmodを試しました。本記事ではその手順を記録していきます。以下の記事も参考にしながら進めます。

注: グラフィックス・アクセラレーションを実現するドライバ(カーネルモジュール)には、drm-next-kmodおよびdrm-stable-kmodの二つがあります。前者はより開発の先端に近いバージョン、後者はより安定指向のバージョンだと考えればOKです。

ビルドおよびインストール

いまのところ、FreeBSD 11向けにはビルド済みのパッケージが提供されていません。(11.2-RELEASEのリリース後に提供されると思います。) したがって、現時点ではportを用いて自前でビルドする必要があります。

まず、ビルドを行なうマシンを11.2-RC1(以降)に更新しましょう。本記事では、ベースシステムの更新については扱いませんので、下記11.2-RC1のアナウンスメール=== Upgrading ===の部分を参照するなどして更新を行なってください。

ベースシステムの更新が終わったら、drm-next-kmod(あるいはdrm-stable-kmod)のビルドに進みましょう。

本portをビルドするためには、FreeBSDベースシステムのソースコードが必要になります。すでに、ソースが/usr/srcに展開されていない場合、以下のコマンドを実行してソースを取得します。

sudo svnlite checkout https://svn.freebsd.org/base/releng/11.2 /usr/src

次は、portsのファイル一式を取得します。以下のコマンドを実行してください。もし、portsファイルを取得するのが今回初めてという場合は、後者のコマンドは(sudo portsnap updateの代わりに)sudo portsnap extractを実行してください。

sudo portsnap fetch
sudo portsnap update

さあ、カーネルモジュールをビルド、インストールしましょう。

cd /usr/ports/graphics/drm-next-kmod
sudo make install clean

以上で、drm-next-kmodのビルドとインストールは終了です。

設定

カーネルモジュールのインストール時に表示されるメッセージにしたがって設定を行ないます。本メッセージを再度表示するには、以下のコマンドを実行してください。

pkg info -D drm-next-kmod

ベースシステムに含まれるモジュール(/boot/kernel/i915kms.ko)ではなく、いまインストールしたモジュール(/boot/modules/i915kms.ko)が起動時にロードされるよう、/etc/rc.confに設定を追加します。以下のコマンドを実行してください。

sudo sysrc kld_list+="/boot/modules/i915kms.ko"

また、グラフィックス環境を使用するユーザはvideoグループのメンバーでなければいけませんので、以下のコマンドを実行して該当するユーザをすべて追加してください。(以下の例ではexampleユーザを追加しています。本ユーザはご使用の環境に合わせて読み替えをお願いします。)

sudo pw groupmod video -M example

次節で述べるドライバのアンインストールを行なえば、Xorgのビデオドライバに関する設定は特に不要だと思います。何らかの理由で不要になったビデオドライバを残しておきたい場合は、以下のようなファイルを用意して、modesettingドライバの使用を明示的に指定します。

以上でXorgを使用する準備が完了しました。

不要ドライバのアンインストール

本節の手順は必須ではありませんが、意図しないドライバがロードされることがないよう、不要なものは削除しておくと安心です。以下のコマンドを実行すると、インストールされているビデオドライバが全て削除されます。

sudo pkg delete 'xf86-video-*'

前節で設定したmodesettingドライバはxorg-serverパッケージに含まれていますので、上記コマンドで削除されることはありません。心配ご無用です。

最後にFreeBSDを再起動してください。

あとは、ちょっとドキドキしながら、ディスプレイマネージャーが起動してくるのを待つかxinit(or startx)してみてください!

参考文献

  1. インテル® NUC キット NUC7i5BNH, https://www.intel.co.jp/content/www/jp/ja/products/boards-kits/nuc/kits/nuc7i5bnh.html
  2. FreeBSD and Intel Video Cards, http://srobb.net/freebsdintel.html
  3. FreeBSD 11.2-RC1 Now Available, https://lists.freebsd.org/pipermail/freebsd-stable/2018-June/089053.html