web-dev-qa-db-ja.com

Nouveauドライバーを搭載したNvidiaOptimus

optirunコマンドを、埋め込みグラフィックスユニットとディスクリートグラフィックス処理ユニットを備えたコンピューター上のFOSSNouveauドライバーで動作させようとしています。 lspci | egrep -i 'vga|3d'コマンドによって提供されるセットアップは次のとおりです。

00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
01:00.0 3D controller: NVIDIA Corporation GK208BM [GeForce 920M] (rev a1)

Nouveau CodeNamesのWebサイトページ によると、私のGPUはNV108(GK208)Nouveauドライバーでサポートされています。だから、optirunコマンドで動作させることができない理由はありませんよね?ただし、従来のインストール手順に従った後

  1. プロプライエタリドライバーをアンインストールする
  2. bumblebeemesa-utilsパッケージをインストールします
  3. インストール VirtualGL

optirunコマンドを機能させることができません。例として、optirun glxgearsはエラーを出します

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[ERROR]Aborting because fallback start is disabled

問題は、カーネルのNouveauモジュールにあるようです。

$ optirun -vv glxgears
----------------------
[DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[DEBUG]optirun version 3.2.1 starting...
[DEBUG]Active configuration:
[DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[DEBUG] X display: :8
[DEBUG] LD_LIBRARY_PATH: 
[DEBUG] Socket path: /var/run/bumblebee.socket
[DEBUG] Accel/display bridge: auto
[DEBUG] VGL Compression: proxy
[DEBUG] VGLrun extra options: 
[DEBUG] Primus LD Path: /usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus
[DEBUG]Using auto-detected bridge virtualgl
[INFO]Response: No - error: [XORG] (EE) 
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[DEBUG]Socket closed.
[ERROR]Aborting because fallback start is disabled.
[DEBUG]Killing all remaining processes.

私が試したこと

/etc/bumblebee/bumblebee.confを設定して、OptimusにDriver=nouveauのNouveauドライバーを強制的に使用させようとしました。違いはありません。


修正したもの

最初に、コマンドの実行中に別のエラーが発生しました。

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[ERROR]Failed to load module "mouse" (module does not exist, 0)

不足しているパッケージxserver-xorg-input-mouseをインストールして修正しました。

1
user382051

研究を続けることで、ようやく問題の解決策を見つけました。

解決策:GPUを切り替えるためにOptimusを使用しないでください

PrimusおよびOptimusプログラムは、Nvidia独自のドライバーで使用するように作られています。したがって、Nouveauドライバーと一緒に使用することはお勧めしません。 Linuxカーネルには、追加のプログラムをインストールせずにGPUを切り替えることができるツールがあります。問題のツールは VGA Switcheroo です。このツールはオープンソースドライバーでのみ機能することに注意してください。

システムでツールがデフォルトでアクティブになっていない可能性があるため、いくつかの操作が必要になります。ツールが有効になっているかどうかを確認するには、次のスイッチファイルを探します。

# cat /sys/kernel/debug/vgaswitcheroo/switch

私の場合、ツールはアクティブ化されていませんでした。問題を解決するには、Bumblebeeをアンインストールする必要がありました。 Bumblebeeをアンインストールしても問題が解決しない場合は、次の手順に従ってください 記事

vga_switcherooが有効になっている場合、アクティブなGPUをオフに切り替えることができます

# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

専用カードを有効にします

# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

または統合カードをアクティブ化する

# echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

参考文献

1
user382051