Bumblebee
Bumblebee の FAQ より:
"Bumblebee は GNU/Linux システムで NVIDIA Optimus が搭載されたノートパソコンを動作させようという試みです。この機能では2枚のグラフィックカードを必要とし、異なる電源消費のプロファイルがレイヤーによって接続され1つのフレームバッファを共有することになります。"
目次
- 1 Bumblebee: Linux 用の Optimus
- 2 インストール
- 3 Bumblebee の起動
- 4 使用方法
- 5 設定
- 6 Windows のように単体 GPU と内蔵 GPU を切り替える
- 7 Bumblebee を使わないで CUDA
- 8 トラブルシューティング
- 8.1 [VGL] ERROR: Could not open display :8
- 8.2 [ERROR]Cannot access secondary GPU: No devices detected
- 8.2.1 NVIDIA(0): Failed to assign any connected display devices to X screen 0
- 8.2.2 systemd-logind: failed to get session: PID XXX does not belong to any known session
- 8.2.3 Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
- 8.2.4 Could not load GPU driver
- 8.2.5 NOUVEAU(0): [drm] failed to set drm interface version
- 8.3 /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
- 8.4 ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored
- 8.5 Fatal IO error 11 (Resource temporarily unavailable) on X server
- 8.6 ティアリング
- 8.7 Bumblebee がソケットに接続できない
- 8.8 ログイン後にコンソールから X.org を実行 (ルートレス X.org)
- 9 参照
Bumblebee: Linux 用の Optimus
Optimus Technology はハードウェアマルチプレクサを使用しない ハイブリッドグラフィック の実装です。内蔵 GPU はディスプレイを管理する一方、ディスクリート GPU は計算量が多いレンダリングを担当して内蔵 GPU に計算結果を転送して表示させます。ノートパソコンがバッテリーで動作しているときは、ディスクリート GPU の電源はオフにされ電力を節約してバッテリーをもたせます。Intel 内蔵グラフィックと nVidia の外付けグラフィックカードが搭載されたデスクトップマシンでも動作させることが可能です。
Bumblebee のソフトウェア実装は2つの部分から構成されています:
- 画面外においてディスクリート GPU 上でプログラムをレンダリングして、内蔵ビデオカードを使ってディスプレイに表示する。このブリッジは VirtualGL または primus (下を参照) によるもので、外付けビデオカードで起動した X サーバーに接続されます。
- 外付けビデオカードが使用されていないときに無効化する (電源管理セクションを見て下さい)。
Bumblebee は Optimus テクノロジの挙動を模倣して、必要なときにレンダリングのためにディスクリート GPU を使用し、使われていないときは電源を落とします。現在のリリースではオンデマンドのレンダリングしかサポートされておらず、負担に応じて外付けビデオカードでプログラムを自動的に起動するのは実装されていません。
インストール
Bumblebee をインストールする前に BIOS を確認して Optimus を有効にしてください (古いノートパソコンでは "switchable graphics" と呼ばれます)。BIOS によっては Optimus を有効にするオプションが存在しないこともあります。また、内蔵ビデオカード用に Intel ドライバーをインストールしてください。
完全なセットアップを行うために複数のパッケージが存在します:
- bumblebee - デーモンとクライアントのプログラムが入っているメインのパッケージ。
- (任意) bbswitch (または bbswitch-dkmsAUR) - NVIDIA カードを無効化して電力を抑えたいときに推奨。
- (任意) 電力の節約以上のことがしたい場合、単体の NVIDIA カードでレンダリングするには以下も必要になります:
- NVIDIA カードのドライバー。オープンソースの nouveau ドライバーまたはクローズドソースの NVIDIA ドライバー。サブセクションを参照してください。
- レンダー/ディスプレイブリッジ。現在 primus (もしくは primus-gitAUR) と virtualgl の2つのパッケージが利用可能です。必要なのはどちらか片方だけですが、両方インストールしても問題ありません。
- (任意) テストプログラムの glxgears を実行したいときは、mesa-demos パッケージをインストールしてください。
- (任意) テストプログラムの glxspheres や glxspheres64 を実行したいときは、virtualgl パッケージをインストールしてください。
Intel/NVIDIA で Bumblebee をインストール
mesa-dri, xf86-video-intel, bumblebee, nvidia をインストールしてください。既に mesa-dri と xf86-video-intel をインストールしている場合でも、mesa-dri と nvidia の依存関係の衝突を避けるために全て一緒に再インストールする必要があります。
64ビット環境で32ビットのアプリケーションを実行 (wine でゲームを動かすなど) したいときは lib32-nvidia-utils も必要です (primusrun
を使用する場合は lib32-mesa-dri も)。
Intel/Nouveau で Bumblebee をインストール
以下をインストール:
- xf86-video-nouveau - 実験的な 3D アクセラレーションドライバー。
- nouveau-dri - Mesa classic DRI + Gallium3D ドライバー。
- mesa - Mesa 3D グラフィックライブラリ。
Bumblebee の起動
Bumblebee を使うにはユーザーを bumblebee グループに追加する必要があります:
# gpasswd -a $USER bumblebee
$USER
は追加するユーザーのログイン名に置き換えて下さい。一度ログオフしてからログインしなおすことでグループの変更が適用されます。
これで完了です。システムを再起動したらシェルプログラム optirun
を使って Optimus NVIDIA レンダリングが行えます。
NVIDIA カードを無効化したいだけなら、後は bbswitch
をインストールするだけで必要なことは終わりです。デフォルトで、bumblebeed デーモンは起動した時にカードの電源を切るように bbswitch に命令します。下の電源管理セクションを参照してください。
使用方法
Optimus NVIDIA カードでアプリケーションを動かしたいときは Bumblebee に入っているコマンドラインプログラム optirun
が良き相棒となってくれるでしょう。
Optimus システムで Bumblebee が動作するかテストしてみてください:
$ optirun glxgears -info
成功だったらターミナルに NVIDIA について何か Optimus with Bumblebee is working! のような表示がされます。
失敗する場合、次のコマンドを試して下さい (64ビット環境):
$ optirun glxspheres64 -info
もしくは、32ビット環境ならば:
$ optirun glxspheres -info
基本的な使用方法:
$ optirun [options] application [application-parameters]
使用例:
Windows アプリケーションを Optimus で起動:
$ optirun wine windows application.exe
NVIDIA Settings を Optimus で使う:
$ optirun -b none nvidia-settings -c :8
optirun
で使えるオプションのリストはマニュアルページを見て下さい。
パフォーマンスで優れる新しいプログラム primus がすぐにデフォルトの選択になるでしょう。今のところは別個にプログラムを実行する必要がありますが (optirun
とは違ってオプションを指定できません)、将来的には optirun によって実行されるようになる予定です。使用方法:
$ primusrun glxgears
設定
必要に応じて Bumblebee の挙動は設定をすることが可能です。速度の最適化や電源管理などの調整は /etc/bumblebee/bumblebee.conf
で設定することができます。
VirtualGL をブリッジとして使って速度を最適化
Bumblebee は VirtualGL によって裏の X サーバーで Optimus NVIDIA カードを使ってフレームをレンダリングし、表の X サーバーに転送を行います。
フレームは転送される前に圧縮が施され、それによって帯域を節約して bumblebee の高速化・最適化とすることができます:
単一のアプリケーションで別の圧縮方式を使うには:
$ optirun -c compress-method application
圧縮方式は CPU と GPU の使用におけるパフォーマンスに影響を与えます。(jpeg
などの) 圧縮方式を使うと CPU の負担は多くなりますが GPU の負担は最小限に抑えられます。逆に非圧縮の方式を使うと GPU の負担が高まり CPU の負担は減ります。
圧縮方式: jpeg
, rgb
, yuv
。
非圧縮方式: proxy
, xv
。
全てのアプリケーションで共通の圧縮方式を使いたい場合は /etc/bumblebee/bumblebee.conf
で VGLTransport
を compress-method
に設定してください:
/etc/bumblebee/bumblebee.conf
[...] [optirun] VGLTransport=proxy [...]
また、VirtualGL がグラフィックカードからピクセルをリードバックするときの方法を変更することもできます。VGL_READBACK
環境変数を pbo
に設定するとパフォーマンスが上がるかもしれません。以下の2つを比較してみてください:
# PBO should be faster. VGL_READBACK=pbo optirun glxspheres64 # The default value is sync. VGL_READBACK=sync optirun glxspheres64
もしくは、32ビット環境の場合:
# PBO should be faster. VGL_READBACK=pbo optirun glxspheres # The default value is sync. VGL_READBACK=sync optirun glxspheres
電源管理
電源管理機能の目的は NVIDIA のカードが bumblebee によって使われていないときに電源を切ることです。bbswitch がインストールされていれば、Bumblebee デーモンが起動した時に自動で検知されます。追加の設定は必要ありません。
bbswitch を使って NVIDIA カードのデフォルトの電源状態を設定
bbswitch のデフォルトの挙動はカードの電源状態を変更しません。bumblebeed
が起動時にカードを無効化します。したがって以下は bumblebeed を使わずに bbswitch を使用する場合にのみ必要になります。
必要に応じてモジュールオプションの load_state
と unload_state
を設定してください (bbswitch のドキュメントを参照)。
/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1
シャットダウン中に NVIDIA カードを有効にする
システムのシャットダウン時にカードの電源がオフになっていた場合、次の起動時に NVIDIA のカードは正しく初期化されないことがあります。一つの手として /etc/bumblebee/bumblebee.conf
に TurnCardOffAtExit=false
を設定することができますが、これでは Bumblebee デーモンが停止されるたびにカードが有効になってしまいます (たとえ手動で停止されたとしても)。シャットダウン中に NVIDIA カードの電源が入っているようにするには、以下の systemd サービスを追加してください (bbswitch を使用している場合):
/etc/systemd/system/nvidia-enable.service
[Unit] Description=Enable NVIDIA card DefaultDependencies=no [Service] Type=oneshot ExecStart=/bin/sh -c 'echo ON > /proc/acpi/bbswitch' [Install] WantedBy=shutdown.target
そして root で systemctl enable nvidia-enable.service
を実行してサービスを有効にしてください。
マルチモニター
Intel のチップに出力が接続されている場合
端子 (DisplayPort/HDMI/VGA) が Intel のチップに接続されている場合、xorg.conf
でマルチモニターをセットアップすることができます。モニターが Intel カードを使うように設定しても、Bumblebee は NVIDIA カードを使用することが可能です。以下は解像度が 1080p の同等な2つのモニターで HDMI 出力を使う設定です。
/etc/X11/xorg.conf
Section "Screen" Identifier "Screen0" Device "intelgpu0" Monitor "Monitor0" DefaultDepth 24 Option "TwinView" "0" SubSection "Display" Depth 24 Modes "1980x1080_60.00" EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "intelgpu1" Monitor "Monitor1" DefaultDepth 24 Option "TwinView" "0" SubSection "Display" Depth 24 Modes "1980x1080_60.00" EndSubSection EndSection Section "Monitor" Identifier "Monitor0" Option "Enable" "true" EndSection Section "Monitor" Identifier "Monitor1" Option "Enable" "true" EndSection Section "Device" Identifier "intelgpu0" Driver "intel" Option "XvMC" "true" Option "UseEvents" "true" Option "AccelMethod" "UXA" BusID "PCI:0:2:0" EndSection Section "Device" Identifier "intelgpu1" Driver "intel" Option "XvMC" "true" Option "UseEvents" "true" Option "AccelMethod" "UXA" BusID "PCI:0:2:0" EndSection Section "Device" Identifier "nvidiagpu1" Driver "nvidia" BusID "PCI:0:1:0" EndSection
おそらく BusID は変更する必要があります (Intel と NVIDIA カード両方)。
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
BusID は 0:2:0 です。
NVIDIA のチップに出力が接続されている場合
On some notebooks, the digital Video Output (HDMI or DisplayPort) is hardwired to the NVIDIA chip. If you want to use all the displays on such a system simultaniously, you have to run 2 X Servers. The first will be using the Intel driver for the notebooks panel and a display connected on VGA. The second will be started through optirun on the NVIDIA card, and drives the digital display.
There are currently several instructions on the web how such a setup can be made to work. One can be found on the bumblebee wiki page. Another approach is described below.
xf86-video-intel-virtual-crtc と hybrid-screenclone
This method uses a patched Intel driver, which is extended to have a VIRTUAL Display, and the program hybrid-screenclone which is used to copy the display over from the virtual display to a second X Server which is running on the NVIDIA card using Optirun. Credit goes to Triple-head monitors on a Thinkpad T520 [リンク切れ 2014-10-03] which has a detailed explanation on how this is done on a Ubuntu system.
For simplicity, DP is used below to refer to the Digital Output (DisplayPort). The instructions should be the same if the notebook has a HDMI port instead.
- Set system to use NVIDIA card exclusively, test DP/Monitor combination and generate xorg.nvidia.conf. This step is not required, but recommended if your system Bios has an option to switch the graphics into NVIDIA-only mode. To do this, first uninstall the bumblebee package and install just the NVIDIA driver. Then reboot, enter the Bios and switch the Graphics to NVIDIA-only. When back in Arch, connect you Monitor on DP and use startx to test if it is working in principle. Use Xorg -configure to generate an xorg.conf file for your NVIDIA card. This will come in handy further down below.
- Reinstall bumlbebee and bbswitch, reboot and set the system Gfx back to Hybrid in the BIOS.
- Install xf86-video-intel-virtual-crtcAUR, and replace your xf86-video-intel package with it.
- Install screenclone-gitAUR
- Change these bumblebee.conf settings:
/etc/bumblebee/bumblebee.conf
KeepUnusedXServer=true Driver=nvidia
- Copy the xorg.conf generated in Step 1 to
/etc/X11
(e.g./etc/X11/xorg.nvidia.conf
). In the [driver-nvidia] section ofbumblebee.conf
, changeXorgConfFile
to point to it. - Test if your
/etc/X11/xorg.nvidia.conf
is working withstartx -- -config /etc/X11/xorg.nvidia.conf
- In order for your DP Monitor to show up with the correct resolution in your VIRTUAL Display you might have to edit the Monitor section in your
/etc/X11/xorg.nvidia.conf
. Since this is extra work, you could try to continue with your auto-generated file. Come back to this step in the instructions if you find that the resolution of the VIRTUAL Display as shown by xrandr is not correct.- First you have to generate a Modeline. You can use the tool amlc, which will genearte a Modeline if you input a few basic parameters.
- Example: 24" 1920x1080 Monitor
- start the tool with
amlc -c
Monitor Identifier: Samsung 2494 Aspect Ratio: 2 physical size[cm]: 60 Ideal refresh rate, in Hz: 60 min HSync, kHz: 40 max HSync, kHz: 90 min VSync, Hz: 50 max VSync, Hz: 70 max pixel Clock, MHz: 400
This is the Monitor section which amlc
generated for this input:
Section "Monitor" Identifier "Samsung 2494" ModelName "Generated by Another Modeline Calculator" HorizSync 40-90 VertRefresh 50-70 DisplaySize 532 299 # Aspect ratio 1.778:1 # Custom modes Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149 # 174.83 MHz, 68.94 kHz, 60.00 Hz EndSection # Samsung 2494
Change your xorg.nvidia.conf
to include this Monitor section. You can also trim down your file so that it only contains ServerLayout, Monitor, Device and Screen sections. For reference, here is mine:
/etc/X11/xorg.nvidia.conf
Section "ServerLayout" Identifier "X.org Nvidia DP" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "Monitor" Identifier "Samsung 2494" ModelName "Generated by Another Modeline Calculator" HorizSync 40-90 VertRefresh 50-70 DisplaySize 532 299 # Aspect ratio 1.778:1 # Custom modes Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149 # 174.83 MHz, 68.94 kHz, 60.00 Hz EndSection # Samsung 2494 Section "Device" Identifier "DiscreteNvidia" Driver "nvidia" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen0" Device "DiscreteNvidia" Monitor "Samsung 2494" SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection
- Plug in both external monitors and startx. Look at your
/var/log/Xorg.0.log
. Check that your VGA Monitor is detected with the correct Modes there. You should also see a VIRTUAL output with modes show up. - Run
xrandr
and three displays should be listed there, along with the supported modes. - If the listed Modelines for your VIRTUAL display doesn't have your Monitors native resolution, make note of the exact output name. For me that is
VIRTUAL1
. Then have a look again in the Xorg.0.log file. You should see a message: "Output VIRTUAL1 has no monitor section" there. We will change this by putting a file with the needed Monitor section into/etc/X11/xorg.conf.d
. Exit and Restart X afterward.
/etc/X11/xorg.conf.d/20-monitor_samsung.conf
Section "Monitor" Identifier "VIRTUAL1" ModelName "Generated by Another Modeline Calculator" HorizSync 40-90 VertRefresh 50-70 DisplaySize 532 299 # Aspect ratio 1.778:1 # Custom modes Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149 # 174.83 MHz, 68.94 kHz, 60.00 Hz EndSection # Samsung 2494
- Turn the NVIDIA card on by running:
sudo tee /proc/acpi/bbswitch <<< ON
- Start another X server for the DisplayPort monitor:
sudo optirun true
- Check the log of the second X server in
/var/log/Xorg.8.log
- Run xrandr to set up the VIRTUAL display to be the right size and placement, eg.:
xrandr --output VGA1 --auto --rotate normal --pos 0x0 --output VIRTUAL1 --mode 1920x1080 --right-of VGA1 --output LVDS1 --auto --rotate normal --right-of VIRTUAL1
- Take note of the position of the VIRTUAL display in the list of Outputs as shown by xrandr. The counting starts from zero, i.e. if it is the third display shown, you would specify
-x 2
as parameter toscreenclone
(Note: This might not always be correct. If you see your internal laptop display cloned on the monitor, try-x 2
anyway.) - Clone the contents of the VIRTUAL display onto the X server created by bumblebee, which is connected to the DisplayPort monitor via the NVIDIA chip:
screenclone -d :8 -x 2
Thats it, all three displays should be up and running now.
Windows のように単体 GPU と内蔵 GPU を切り替える
Windows では、Optimus を必要とするアプリケーションのホワイトリストを NVIDIA が保持しており、必要に応じてホワイトリストにアプリケーションを追加することもできます。アプリケーションが起動した時に、どちらかのカードを使用するか自動的に決定します。
この挙動を Linux でも真似したい場合は、libgl-switcheroo-gitAUR を使うことができます。インストールした後、以下を .xprofile に追加してください。
~/.xprofile
mkdir -p /tmp/libgl-switcheroo-$USER/fs gtkglswitch & libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &
To enable this, you must add the below to the shell that you intend to launch applications from (I simply added it to the .xprofile file)
export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH
Once this has all been done, every application you launch from this shell will pop up a GTK+ window asking which card you want to run it with (you can also add an application to the whitelist in the configuration). The configuration is located in $XDG_CONFIG_HOME/libgl-switcheroo.conf
, usually ~/.config/libgl-switcheroo.conf
Bumblebee を使わないで CUDA
bumblebee を使わずに CUDA を使用することができます。必要なことは nvidia カードがオンになっているようにするだけです:
# tee /proc/acpi/bbswitch <<< ON
これで CUDA アプリケーションを起動した時に自動で必要なモジュールが全てロードされます。
CUDA を使った後に nvidia カードをオフにするには以下を実行:
# rmmod nvidia_uvm # rmmod nvidia # tee /proc/acpi/bbswitch <<< OFF
トラブルシューティング
[VGL] ERROR: Could not open display :8
There is a known problem with some wine applications that fork and kill the parent process without keeping track of it (for example the free to play online game "Runes of Magic")
This is a known problem with VirtualGL. As of bumblebee 3.1, so long as you have it installed, you can use Primus as your render bridge:
$ optirun -b primus wine windows program.exe
If this does not work, an alternative walkaround for this problem is:
$ optirun bash $ optirun wine windows program.exe
If using NVIDIA drivers a fix for this problem is to edit /etc/bumblebee/xorg.conf.nvidia
and change Option ConnectedMonitor
to CRT-0
.
[ERROR]Cannot access secondary GPU: No devices detected
ときどき、optirun
を実行すると以下のように返ってきてしまうことがあります:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected. [ERROR]Aborting because fallback start is disabled.
この場合、/etc/X11/xorg.conf.d/20-intel.conf
ファイルをどこか別のところへ移動して、bumblebeed デーモンを再起動する必要があります。それで直ります。Intel モジュールの何らかの機能を変更しなくてはならない場合は、/etc/X11/xorg.conf.d/20-intel.conf
を /etc/X11/xorg.conf
にマージしてください。
また、/etc/X11/xorg.conf.d/10-monitor.conf
の driver 行をコメントアウトする必要があるかもしれません。
nouveau
ドライバーを使っている場合は nvidia
ドライバーに切り替えてみて下さい。
lspci
の出力を見て、適切な BusID
を使って、どこかで (例えば /etc/X11/xorg.conf.d
のファイル) NVIDIA カードを定義する必要があります:
Section "Device" Identifier "nvidiagpu1" Driver "nvidia" BusID "PCI:0:1:0" EndSection
NVIDIA(0): Failed to assign any connected display devices to X screen 0
以下のようにコンソール出力される場合:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0 [ERROR]Aborting because fallback start is disabled.
/etc/bumblebee/xorg.conf.nvidia
の次の行を:
Option "ConnectedMonitor" "DFP"
以下のように変更してください:
Option "ConnectedMonitor" "CRT"
systemd-logind: failed to get session: PID XXX does not belong to any known session
以下のようにコンソール出力される場合 (PID は変わります):
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) systemd-logind: failed to get session: PID 753 does not belong to any known session [ERROR]Aborting because fallback start is disabled.
/etc/mkinitcpio.conf
の MODULES を以下のように変更してください:
MODULES="i915 bbswitch"
もしくは:
MODULES="i915 nouveau bbswitch"
変更したら次を実行してください:
# mkinitcpio -p linux
このコマンドはカーネルをアップデートするたびに実行する必要があります。
さらに、下で解説されているようにカーネルパラメータをブートローダーの設定に加える必要があるかもしれません。
Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
rcutree.rcu_idle_gp_delay=1
をブートローダーの設定のカーネルパラメータに追加してください (元の BBS の投稿に設定例が載っています)。
Could not load GPU driver
以下のようにコンソール出力される場合:
[ERROR]Cannot access secondary GPU - error: Could not load GPU driver
そして nvidia モジュールをロードしようとすると以下のように表示される場合:
modprobe nvidia modprobe: ERROR: could not insert 'nvidia': Exec format error
nvidia-dkmsAUR を使ったり ABS で nvidia をコンパイルして、最新のカーネルにあわせて nvidia パッケージを手動でコンパイルする必要があります。
NOUVEAU(0): [drm] failed to set drm interface version
公式の nvidia ドライバーに切り替えて下さい。ここにあるコメントの通り、nouveau ドライバーにはカードによって bumblebee で問題が発生します。
/dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
This could be worked around by appending following lines in /etc/bumblebee/xorg.conf.nvidia
(see here):
Section "Screen" Identifier "Default Screen" Device "DiscreteNvidia" EndSection
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored
おそらく64ビット環境で bumblebee を使って32ビットアプリケーションを起動するのに必要なパッケージがインストールされていません。インストールの "Note" ボックスを見て下さい。
/etc/bumblebee/bumblebee.conf
の KeepUnusedXServer
を false
から true
に変更してください。プログラムはバックグラウンドにフォークされ bumblebee はプログラムについて関知しません。
ティアリング
ティアリングは Bumblebee でよくある問題です。修正するには、垂直同期を有効にする必要があります。Intel のカードではデフォルトで有効になっているはずですが、Xorg のログで確認してみてください。NVIDIA で垂直同期が有効になっているか確認するには、次を実行:
$ optirun nvidia-settings -c :8
X Server XVideo Settings -> Sync to VBlank
and OpenGL Settings -> Sync to VBlank
should both be enabled. The Intel card has in general less tearing, so use it for video playback. Especially use VA-API for video decoding (e.g. mplayer-vaapi
and with -vsync
parameter).
Intel カードでティアリングを修正する方法は Intel の記事を見て下さい。
それでもティアリングが修正されない場合は、デスクトップ環境のコンポジットを無効にしてみてください。また、トリプルバッファも無効にしてみてください。
Bumblebee がソケットに接続できない
以下のような表示がされる場合:
$ optirun glxspheres64
または (32ビットの場合):
$ optirun glxspheres
[ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group [ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running?
bumblebee
グループに既に入っているならば ($ groups | grep bumblebee
)、ソケット /var/run/bumblebeed.socket
を削除してみてください。
ログイン後にコンソールから X.org を実行 (ルートレス X.org)
Xorg#Rootless Xorg (v1.16) を見て下さい。
参照
freenode.net の #bumblebee に参加しましょう。