bumblebeeでnVidiaのOptimusを活用する

提供: Akionux-wiki
Share/Save/Bookmark
移動先: 案内検索

概要

bumblebeeは、Sandy Bridge時代のノートパソコンに採用されていた、CPU内臓のビデオカードとGeForceのビデオカードを必要に応じて切り替えてバッテリーの持ちを良くしようというOptimus技術をLinux上で制御できるようにするサービスである。

インストール

nvidiaドライバのインストール

nvidia公式から該当するnvidiaドライバをダウンロードし、インストールしておく。

または、適当なnvidiaドライバをaptでインストールする。

$ sudo apt-get install nvidia-331-uvm

bumblebeeのインストール

bumblebee公式のディストリビューションごとのインストール方法を参考にインストールする。

Ubuntuの場合[1]は、

  1. UniverseとMultiverseリポジトリを有効にする。
  2. sudo add-apt-repository ppa:bumblebee/stable
  3. sudo apt-get update
  4. sudo apt-get install bumblebee bumblebee-nvidia virtualgl linux-headers-generic
  5. 再起動

の手順でインストールする。

インストール後の作業

bumblebeeの設定

/etc/bumblebee/bumblebee.confの52行目付近の[driver-nvidia]項目内のKernelDriverで指定されたカーネルモジュールが読み込まれる。インストールされているnvidiaドライバの名前を記入する。

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia-331-uvm
PMMethod=auto

設定を変更したら、サービスを再起動する:

$ sudo service bumblebeed restart

うまく起動しているか確認するには、

$ bumblebeed

と実行する。

libGL.so.1関連問題の修復

nvidiaドライバのインストーラーはlibGL.so.1に変更を加えてしまうので、その点を修復する必要がある[2]。というのも、bumblebeeを使うときは、Intel graphics用のlibGL.so.1とnvidia用のlibGL.so.1の両方が必要なわけだが、nvidiaドライバをインストールするとIntel graphics用のlibGL.so.1がnvidia用のものに置き換えられてしまうため、Intel graphics用のlibGL.so.1を再インストールしてやる必要があるのである。

  • xserver-xorg-coreとlibgl1-mesa-glxをreinstallする。
$ sudo apt-get install --reinstall xserver-xorg-core libgl1-mesa-glx
  • /usr/lib/libGL.so.1のリンクを/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1へ置き換える。
$ cd /usr/lib/
$ sudo unlink libGL.so.1
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 .
  • /usr/lib/xorg/modules/extensions/libglx.soをリネームしてリンクを貼る。
$ cd /usr/lib/xorg/modules/extensions/
$ sudo mv libglx.so libglx.so.xserver
$ sudo ln -s libglx.so.xserver libglx.so
$ sudo ln -s libglx.so libglx.so.1

実行

optirunというコマンドを実行したいコマンドの前につけて実行すれば、そのコマンドはnvidiaドライバーで動作する。

$ optirun コマンド

試しにIntel GraphicsとnVidia GeForceのglxgearsの性能比較をしてみるには、

$ glxgears
$ optirun glxgears

ChromeでWebGLが動かない場合

chrome://flags/ へアクセスして、「ソフトウェア レンダリング リストを上書き Mac, Windows, Linux, Chrome OS, Android」を有効にする[3]

References