web-dev-qa-db-ja.com

NVIDIA-PRIME:インテルへの切り替え

GPU(GTX 1060)からIGPU(Intel 530)に切り替えるたびに、起動できません。ロード画面に次のメッセージが表示されたままになります。

[失敗] NVIDIA Persistence Daemonの起動に失敗しました。詳細については、「systemctl status nvidia-persistenced.service」を参照してください。

ただし、Nvidia GPUに切り替えて、IGPUに切り替えると、一時的に再起動せずに起動できます。 Kubuntu 16.10を使用していますが、内部のラップトップディスプレイのみを使用しています。これは、igpuに切り替えたときの出力です。

Sudo prime-select intel
Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: selecting nvidia-378-prime for the intel profile
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Sudo prime-select nvidia
Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: selecting nvidia-378 for the nvidia profile
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Lspci -kの結果| grep -EA2 'VGA | 3D'

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: CLEVO/KAPOK Computer HD Graphics 530
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1)
        Subsystem: CLEVO/KAPOK Computer Device 6a03
        Kernel driver in use: nvidia

私はこの問題を1週間以上自分で解決しようとしましたが、何をすべきか手がかりがありません。私が試みたすべてが失敗しました。

手伝っていただけませんか?

PDATE 5.2.2017:

今日、もう一度テストしましたが、375と378でIntel GPUへの切り替えがまったく機能しないことがわかりました。ログアウトすると画面がフリーズします。それで、なぜそれは一度働いたのですか?古いドライバーを削除した後ですべてのドライバーを再度インストールし、その後で再起動せずにprime-selectインテルを使用すると、prime-selectはプライムプロファイルを更新しません->古い非nvidiaプロファイル(mesaプロファイル)の1つを選択しますnvidiaの代わりに)動作します。しかし、nvidiaプロファイルに切り替えるか再起動するとすぐに、プライムプロファイルが更新され、機能しなくなります。インテルGPUのEGlの代替には何か問題があると思いますか?ご不便をかけて申し訳ありません。

更新12.2.2017:

昨日、nvidia-primeソフトウェアを修正し、バグを修正しました。私はすぐに(おそらく来週)変更したバージョンを公開し、ここにリンクを貼り付けますが、まだ問題が発生します:Sudo prime-select intelを実行した後にPCをシャットダウンすると:

ksmserverがクラッシュします(私はKubuntuを使用していますが、おそらくUbuntuの問題ではありません)

-> PCを完全にシャットダウンできず、Intel GPUの古い(間違った)アップデート代替が復元されます

->起動できません。

ただし、リカバリモードでシャットダウンした後にSudo prime-select intelを実行すると、すべて正常に機能し、Intel GPUを使用できます。

更新17.2.2017:

回避策を投稿しましたが、公式リポジトリでバグを修正しようとしています。ただし、これはおそらくupdate-alternativesのバグであるため、次にバグレポートを投稿する必要があります。

それまでの間、私の回避策をお楽しみください!私もそれがあなたのために働くことを願っています。質問がある場合は、コメントを残してください。

更新26.2.2017

@whizzzkidが指摘したように、nvidiaグラフィックカードは、私のパッチを適用した後もアクティブのままです。しかし、今日、私はこの問題を解決することができました。来週、2番目のパッチを含めるように回答を更新するでしょう。私が実行したいくつかのテストは次のとおりです。

NVIDIA:43-45W

Intel(nvidia on):29-31W

Intel(nvidia off):15-17W

10
C11235

バグの修正/回避策は次のとおりです。

Nvidia-primeの代わりにbumblebeeを使用する場合は、以下の @ whizzzkid で提供される回答をご覧ください。

KDE Plasmaバージョン.7.5およびKDEフレームワークバージョン5.26.0を使用して、Kubuntu 16.10 64ビットでテスト済み。次の手順が役立ちます。彼らもあなたのために働くことを願っていますが、もし彼らがそうしなければ、私はそれを保証できず、責任を負いません。しかし、あなたがコメントを残すならば、私はあなたを助けてうれしいです。

私の場合、問題はupdate-alternative/usr/lib/nvidia-XYZ-prime /がまったく機能しなかったことです。呼び出しをintel-mesaドライバーにリダイレクトすることになっていますが、何らかの理由でリダイレクトされませんでした。それはおそらく更新後の代替案のバグでしょうか? update-alternativesのバグを報告する場所がまだ見つかりません。あなたが私を助けることができるかどうかコメントしてください。

基本的にnvidia-primeを少し変更して、update-alternativesを/ usr/lib/nvidia-XYZ-prime /ではなくintel-mesaドライバーに直接変更しました。

重要:

これらの手順のいずれかを適用する前に、PCの回復モードにアクセスする方法を確認してください。このガイドのために起動できなくなった場合でも、このガイドの最後のセクションのコマンドを使用して、リカバリモードでの変更を元に戻すことができます。詳細については、こちらをご覧ください 復旧モードへのアクセス方法に関するウェブサイト .

32ビットオペレーティングシステムを使用する場合、x86_64を含むすべてのコマンドを除外する必要がありますステップ4およびセクションこれらの変更をすべて元に戻す方法


ステップ1:

以下の回答で@whizzzkidが提供する簡単な方法を使用して、私のパッチをインストールします。

cd /usr/bin
Sudo mv prime-select prime-select.bkup
Sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
Sudo chmod 755 prime-select

ステップ2:

2番目のパッチを適用して、Intelモードでの消費電力を削減します。

使用しているnvidia-driverバージョンを確認してください。たとえば、次のコマンドを使用します。

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

この場合、nvidia-XYZはnvidia-378です。こちらをご覧ください Stackoverflow thread

たとえばpoweroff.shという名前の次のコンテンツを含むbashファイルを作成します

#!/bin/bash
line=$(</etc/prime-discrete)
if [ "$line" == "off" ] 
   then
   rmmod nvidia-drm
   rmmod nvidia-modeset
   rmmod nvidia
   bash -c 'echo OFF > /proc/acpi/bbswitch'
fi 

たとえばpoweron.shという名前の次のコンテンツを含む2番目のbashファイルを作成し、XYZをnvidiaドライバーのバージョン番号に置き換えます。

#!/bin/bash
modprobe nvidia-XYZ
modprobe nvidia-XYZ-modeset
modprobe nvidia-XYZ-drm
modprobe nvidia-XYZ-uvm
echo ON > /proc/acpi/bbswitch

Intelモードでは、Sudoでログインした後に最初のスクリプトを実行し、Sudoで2番目のスクリプトbeforeをログアウトする必要があります(そうしないと、ラップトップはおそらくクラッシュします。私の場合)。 Sudo bash FILENAMEで実行します。

これまでのところ、ログイン時およびログアウト前に、これらのスクリプトをルートとして自動的に自動起動することはできませんでした。ただし、 @ Fiximan が指摘したように、upstartでは可能かもしれません。私がそうすることができたならば、私は将来いつかこの答えを再び更新するかもしれません。


(おそらく)KDE Plasma固有のエラー:

KDE Plasmaで修正できなかったバグがまだあります。nvidia-modeでPCを起動した後、NvidiaからIntelに切り替えるたびに、ksmserverクラッシュしてPCが使用できなくなった場合、電源ボタンを約5〜10秒間押して電源を切る必要があります。これにより、update-alternativesがintel-mesaではなくnvidia-primeに変更され、起動時にブラックスクリーンが表示されることがあります

Ksmserverのバグの影響を受けた場合は、 bugs.kde.orgの公式バグレポート に貢献してください。

ただし、PCがシャットダウンしないという問題は、シャットダウン前に常にIntelモードを選択することで回避できます、nvidia-modeを使用する場合でも。これを行うと、すべてがそもそも正常に機能し、nvidiaモードでこのガイドを適用した後を除き、電源ボタンを長押ししてPCの電源をオフにする必要はありません。

black-screen-upon-startup-bugの簡単な回避策は、動作していないupdate-alternativesを完全に削除することです:

ステップ1:

回復モードに入ってからルートコマンドシェルを選択し、次の2つのコマンドを実行すると、PCに再度アクセスできます。

mount -o remount,rw /
prime-select nvidia

ステップ2:

次のコマンドを実行します。

Sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
Sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
Sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf
Sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf

これらすべての変更を元に戻す方法

次のコマンドを実行するだけです:

Sudo rm /usr/bin/prime-select
Sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select
Sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
3
C11235

Intelビデオカードに切り替えた後に起動しない場合の解決策:
カーネルブートパラメータを追加します。

acpi_osi=! acpi_osi="Windows 2009"

この問題の理由: bug#156341 カーネル
ソリューションソース: link

2

@ C11235によるパッチは機能し、nvidiaとIntelを切り替えることができるようになりましたが、これは消費電力を削減しません。 :-/これは、両方がまだ実行されていることを意味します。

ところで、これはこれを行う簡単な方法です。

cd /usr/bin
Sudo mv prime-select prime-select.bkup
Sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
Sudo chmod 755 prime-select
2
whizzzkid

2番目の修正で考えられる問題:「poweroff」スクリプトプロンプトの最後のコマンド

    bash: /proc/acpi/bbswitch: No such file or directory

どうやら、Intelモードで再起動すると(モードを変更してもrebbootまでは有効にならず、これが正常かどうかわからない)、bbswitch-Moduleがロードされません。そのため、bbswitch-fileはなく、nvidia GPUをオフにする方法もありません。

私は使用しています:

  • MSI-ラップトップ(GL72 7RDX)
  • 統合GPU:インテル®HDグラフィックス630(Kaby Lake GT2)
  • 別のGPU:Geforce GTX 1050
  • OS:Ubuntu 16.04 lts

この問題の解決策:

ファイル/ etc/modulesを編集し(ルート権限を使用)、次の行を追加します

    bbswitch

これで、インテルモードで起動してもbbswitchが動作するようになり、C11235の2番目の修正は問題なく機能します。

1
Hugo