NVIDIA-PRIME:インテルへの切り替えができない


10

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週間以上自分でこの問題を解決しようとしましたが、何をすべきか手掛かりがありませんでした。私が試みたすべてが失敗しました。

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

更新5.2.2017:

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

アップデート12.2.2017:

昨日、nvidia-primeソフトウェアを変更してバグを修正しました。私はすぐに(たぶん来週)私の修正版を公開し、ここにリンクを貼り付け、私はまだ問題が発生します:ときに私シャットダウン私のPC、私が実行した後sudo prime-select intel

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

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

->起動できません。

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

アップデート17.2.2017:

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

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

アップデート26.2.2017

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

NVIDIA:43〜45 W

Intel(nvidia on):29-31W

Intel(nvidia off):15-17W


質問を編集して、lspci -k | grep -EA2 'VGA|3D' ターミナルコマンドの出力を追加してください。
Pilot6、2017

ああ、10xx mはモバイルであっても最後にはないようです。
Pilot6、2017

おそらくnvidia-primeこれらはまだサポートされていません。
Pilot6 2017

興味深いのは、再起動しない限り機能することです。ログアウトして再度ログインすると、igpuを使用できます。しかし、再起動するとすぐに機能しなくなります。そして、Nvidia gpuは動作し、ドライバーによってサポートされています。
C11235 2017

1
powertopを使用して電力使用量を監視しました。バッテリーを電源として使用している場合のみ、消費電力が表示されます。詳細については、この質問またはそのmanページ参照してください。
C11235 2018年

回答:


3

これがバグの修正/回避策です。

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でリカバリモードにアクセスする方法を確認してください。このガイドのために起動できなくなった場合でも、このガイドの最後のセクションのコマンドを使用して、リカバリモードでの変更を元に戻すことができます。詳細については、回復モードへのアクセス方法について、このWebサイトを参照してください。

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


ステップ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スレッドを参照してください。

たとえば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番目のスクリプトを実行する必要があり ます(そうしないと、私の場合のようにラップトップがおそらくクラッシュします)。で実行するだけsudo bash FILENAMEです。

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


(おそらく)KDEプラズマ固有のエラー:

KDEプラズマで修正できなかったバグがまだあります。nvidiaモードでPCを起動した後、NvidiaからIntelに切り替えるたびに、ksmserverがクラッシュし、PCが使用できなくなるため、を押してオフにする必要があります電源ボタンを約5〜10秒間押します。これにより、アップデート代案がintel-mesaではなくnvidia-primeに変更され、起動時に黒い画面が表示されることがあります

ksmserverバグの影響を受ける場合は、bugs.kde.orgの公式バグレポートにご協力ください。

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

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

ステップ1:

リカバリモードに入った後、PCに再度アクセスし、ルートコマンドシェルを選択して、次の2つのコマンドを実行できます。

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

1
以下の私の答えを確認してください。
whizzzkid

やあ男、これを本当にありがとう!poweroffスクリプトを実行すると、(ログアウトの前に)COMがハングします。別の修正はありますか?
Wboy

残念ながら、私は他の修正を知りません。これは私の場合に機能します。私が書いたように、あなたの問題は私の場合にも発生しますが、初めてです。私が書いたように、ログアウトする前にIntelに切り替える必要があります。その後、このエラーは発生しません。(少なくとも私の場合)。
C11235

こんにちは@ C11235修正ありがとうございます。何かお聞きしたいことがあります。デフォルトでnvidiaドライバーを初めてインストールするときは、nvidiaに設定されています。次に、スクリプトをいつ実行する必要がありますか?そして、あなたはrootとしてログインするとはどういう意味ですか?
Glats 2017年

残念ながら、私の回答のこの部分は少しあいまいでした。つまり、ログインしてからスクリプトをrootとして実行します(例:sudo)。ログインしたばかりで、すでにIntelモードに切り替えられているときにスクリプトを実行する必要があります。これにより、nvidia GPUが一時的に完全に無効になります。2つ目は、Intelモードでログアウトする前に実行する必要があります。
C11235 2017年

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

ありがとうございました!残念ながら、あなたは正しい、私の更新された質問を参照してください。より簡単なインストール方法を含めるように回答を更新してもよろしいですか?
C11235 2017

@ C11235そうそうそう 私はこれをすべて理解することができました:gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 私は現在アイドル状態で5.8Wを実行しています。
whizzzkid 2017

わかりました。指示を確認したところ、消費電力が下がる原因は私の場合と同じです。プライムセレクトがIntelモードを切り替えた場合、bbswitchを使用してnvidia GPUを無効にするスクリプトを書きました。私の場合、これはより便利です。外部モニターがあり、ほぼ排他的にnvidiaモードを使用しているため、バンブルビーの代わりにnvidia-primeを使用したかったのです。さらに、nvidia-primeを使用するときのパフォーマンスは、マルハナバチを使用するときよりも優れているはずです。
C11235 2017

2

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

acpi_osi=! acpi_osi="Windows 2009"

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

もう少し詳しく、理解しやすいかもしれません:

sudo echo -e "GRUB_CMDLINE_LINUX_DEFAULT='acpi_osi=! acpi_osi='Windows 2009''"  | sudo tee -a /etc/default/grub
sudo update-grub

その現在の形では、あなたの答えはそれができるほど良くはありません。あなたは見直す可能性が良い答えを書くためにどのように、そしてあなたの答え拡大を検討
J. Starnesを

これは実際にはうまくいきましたが、答えは改善される可能性があります。改善を提案します
Vladyslav Matviienko 2017

1

2番目の修正で起こり得る問題:「poweroff」スクリプトの最後のコマンドプロンプト

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

どうやら、Intelモードで再起動すると(再起動するまでモードを変更しても効果がないので、これが正常かどうかわからない)、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を編集し(root権限で)、次の行を追加します

    bbswitch

これで、インテルモードで起動した場合でもbbswitchが動作し、C11235の2番目の修正がうまく機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.