Pertanyaan NVIDIA-PRIME: Tidak bisa beralih ke intel


Setiap kali saya beralih dari GPU saya (gtx 1060) ke igpu saya (Intel 530), saya tidak bisa boot. Layar pemuatan macet dengan pesan berikut:

[Gagal] Gagal memulai NVIDIA Persistence Daemon. Lihat 'systemctl   status nvidia-persistenced.service 'untuk detailnya.

Namun, saya bisa boot ketika saya beralih kembali ke GPU Nvidia dan beralih ke igpu saya tanpa me-reboot bekerja sementara. Saya menggunakan Kubuntu 16.10 dan hanya tampilan laptop internal saya. Itulah output ketika saya beralih ke igpu saya:

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

Hasil 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

Saya mencoba memecahkan masalah ini sendiri selama lebih dari seminggu dan tidak tahu apa yang harus dilakukan. Semua yang saya coba gagal.

Bisakah bantu saya?

UPDATE 5.2.2017:

Saya mengujinya lagi hari ini dan menyadari bahwa beralih ke gpu intel tidak berfungsi sama sekali dengan 375 dan 378. Logging out membeku layar. Jadi mengapa itu berfungsi sekali? Jika saya menginstal semua driver lagi setelah saya menghapus yang lama dan kemudian menggunakan intel prime-select (tanpa reboot!), Prime-select tidak memperbarui profil utama -> Ini memilih salah satu profil non-nvidia lama (profil mesa bukannya nvidia) dan itu berhasil. Tapi begitu saya beralih ke profil nvidia atau reboot, profil utama diperbarui dan itu tidak berfungsi lagi. Jadi saya kira ada yang salah dengan alternatif EGl untuk intel gpu? Maaf untuk ketidaknyamanan.

PERBARUI 12.2.2017:

Kemarin, saya memodifikasi perangkat lunak nvidia-prime dan memperbaiki bug. Saya akan segera mempublikasikan (mungkin minggu depan) versi modifikasi saya dan menempel tautan di sini, tetapi saya masih mengalami masalah: ketika saya mematikan PC saya setelah saya mengeksekusi sudo prime-select intel:

ksmserver crash (Saya menggunakan Kubuntu, mungkin tidak masalah dengan Ubuntu)

-> PC tidak dapat dimatikan sepenuhnya dan alternatif pembaruan lama (salah) untuk GPU Intel dipulihkan

-> Saya tidak bisa boot.

Namun, jika saya jalankan sudo prime-select intel setelah shutdown dalam recovery mode semuanya berfungsi dengan baik dan saya bisa menggunakan GPU Intel.

PERBARUI 17.2.2017:

Saya diposting solusi saya dan saya masih mencoba untuk mendapatkan Bug tetap di Repositori resmi. Namun, ini mungkin Bug di pembaruan-alternatif, jadi selanjutnya saya harus memposting laporan bug di sana.

Sementara itu, nikmati solusi saya! Saya harap ini juga bekerja untuk Anda. Jika ada pertanyaan silakan tinggalkan komentar.

UPDATE 26.2.2017

Seperti yang ditunjukkan @whizzzkid, kartu grafis nvidia masih tetap aktif setelah menerapkan patch saya. Namun, hari ini saya bisa menyelesaikan masalah ini. Saya mungkin akan memperbarui jawaban saya untuk memasukkan patch ke-2 saya minggu depan. Berikut beberapa tes yang saya lakukan:

Nvidia: 43-45W

Intel (nvidia on): 29-31W

Intel (nvidia off): 15-17W


10
2018-02-04 18:34


asal


Harap edit pertanyaan Anda dan tambahkan keluaran lspci -k | grep -EA2 'VGA|3D'  perintah terminal. - Pilot6
Oh, saya melihat 10xx tidak punya m pada akhirnya bahkan jika mereka mobile. - Pilot6
Mungkin nvidia-prime belum mendukung ini. - Pilot6
Nah, yang menarik adalah, itu berfungsi selama saya tidak reboot. Saya bisa menggunakan igpu jika saya keluar dan masuk lagi. Tetapi begitu saya mereboot itu tidak berfungsi lagi. Dan Nvidia gpu bekerja, dan didukung oleh pengemudi. - C11235
Saya menggunakan powertop untuk memantau penggunaan daya. Ini hanya menunjukkan konsumsi daya jika Anda menggunakan baterai sebagai sumber listrik. Lihatlah ini pertanyaan atau itu halaman manual untuk informasi lebih lanjut. - C11235


Jawaban:


Berikut adalah perbaikan / solusi saya untuk bug:

Jika Anda ingin menggunakan bumblebee, bukan nvidia-prime, lihatlah jawaban yang diberikan oleh @whizzzkid di bawah.

Diuji dengan Kubuntu 16,10 64-bitmenggunakan KDE Plasma Version.7.5 dan KDE Frameworks Versi 5.26.0. Langkah-langkah berikut ini berhasil untuk saya. Saya berharap mereka akan bekerja untuk Anda juga, tetapi saya tidak dapat menjamin itu dan tidak bertanggung jawab jika mereka tidak melakukannya. Tapi saya senang membantu Anda jika Anda meninggalkan komentar.

Dalam kasus saya, masalahnya adalah bahwa pembaruan-alternatif / usr / lib / nvidia-XYZ-prime / tidak berfungsi sama sekali. Ini seharusnya mengalihkan panggilan ke driver intel-mesa, tetapi untuk beberapa alasan tidak. Jadi mungkin setelah semua bug di pembaruan-alternatif? Saya masih belum menemukan tempat untuk melaporkan bug untuk pembaruan-alternatif. Tolong beri komentar jika Anda dapat membantu saya.

Pada dasarnya saya memodifikasi nvidia-prime sedikit untuk mengubah pembaruan-alternatif langsung ke driver intel-mesa daripada / usr / lib / nvidia-XYZ-prime /.

Penting:

Sebelum Anda menerapkan langkah-langkah ini, pastikan untuk mengetahui cara mengakses mode pemulihan pada PC Anda. Jika Anda tidak dapat melakukan boot lagi karena panduan ini, Anda masih dapat membatalkan perubahan dalam mode pemulihan dengan perintah di bagian terakhir panduan ini. Lihat ini situs web tentang cara mengakses mode pemulihan untuk informasi lebih lanjut.

Jika Anda menggunakan 32-bit sistem operasi, Anda harus meninggalkan semua perintah yang mengandung x86_64 di Langkah 4 dan di bagian Bagaimana cara membatalkan semua modifikasi ini.


Langkah 1:

Instal patch saya menggunakan metode mudah yang disediakan oleh @whizzzkid dalam jawabannya di bawah ini:

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

Langkah 2:

Terapkan patch kedua saya untuk mengurangi konsumsi daya dalam mode intel:

Periksa versi driver nvidia yang Anda miliki. Misalnya dengan perintah berikut:

$ 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)

Dalam hal ini nvidia-XYZ adalah nvidia-378. Lihat ini Benang Stackoverflow.

Buat file bash yang berisi dengan konten berikut yang dinamai misalnya poweroff.sh

#!/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 

Buat file bash kedua yang berisi konten berikut yang dinamai misalnya poweron.sh dan ganti XYZ dengan nomor versi driver nvidia Anda.

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

Dalam mode Intel, Anda harus menjalankan skrip pertama setelah login dengan sudo dan yang kedua sebelum logout dengan sudo (jika tidak laptop Anda mungkin akan crash, seperti dalam kasus saya). Saya hanya mengeksekusi mereka dengan sudo bash FILENAME.

Sejauh ini saya tidak dapat secara otomatis memulai autostart skrip ini sebagai root pada login dan sebelum logout. Namun, mungkin bisa dengan pemula, seperti @Fiximan menunjukkan. Saya mungkin memperbarui jawaban ini lagi suatu saat nanti jika saya berhasil melakukannya.


(mungkin) kesalahan spesifik KDE Plasma:

Masih ada bug yang saya tidak dapat perbaiki di KDE Plasma: Setiap kali saya beralih dari Nvidia ke Intel setelah saya memulai PC dalam mode nvidia, ksmserver crash dan PC tidak dapat digunakan, saya harus mematikannya dengan menekan tombol power selama sekitar 5-10 detik. Ini terkadang menghasilkan pembaruan-alternatif yang diubah menjadi nvidia-prime daripada intel-mesa yang mengarah ke a layar hitam saat startup.

Jika Anda terkena bug ksmserver, harap berkontribusi laporan bug resmi di bugs.kde.org.

Namun, masalah itu PC tidak akan mati dapat dihindari dengan selalu memilih mode-intel sebelum mematikan, bahkan ketika Anda menggunakan nvidia-mode. Jika Anda melakukan ini, semuanya bekerja sebagaimana mestinya di tempat pertama dan Anda tidak perlu mematikan PC Anda dengan menekan lama tombol daya kecuali setelah Anda menerapkan panduan ini dalam nvidia-mode.

Solusi sederhana untuk bug layar hitam-saat-startup adalah hanya menghapus alternatif pembaruan yang tidak berfungsi sepenuhnya:

Langkah 1:

Anda dapat mengakses PC Anda lagi setelah Anda memasuki mode pemulihan, pilih shell perintah root dan jalankan 2 perintah berikut:

mount -o remount,rw /
prime-select nvidia

Langkah 2:

Jalankan perintah berikut:

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

Bagaimana cara membatalkan semua modifikasi ini

Cukup jalankan perintah berikut:

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
2018-02-17 20:39



Periksa jawaban saya di bawah ini. - whizzzkid
Hey man, terima kasih banyak untuk ini! Ketika saya menjalankan skrip poweroff Anda, com saya hanya hang (sebelum logout). Apakah ada perbaikan lain? - Wboy
Sayangnya, saya tidak tahu ada perbaikan lainnya. Ini berfungsi dalam kasus saya. Masalah Anda juga terjadi dalam kasus saya, seperti yang saya tulis, tetapi hanya untuk pertama kalinya. Seperti yang saya tulis, Anda harus kembali ke Intel sebelum logout. Maka kesalahan ini tidak akan terjadi. (Setidaknya dalam kasus saya). - C11235
Hai @ C11235 Terima kasih atas perbaikannya. Saya ingin menanyakan sesuatu kepada Anda: Pertama kali saya menginstal driver nvidia untuk pengaturan default adalah nvidia. Lalu Kapan saya harus menjalankan skrip? dan Apa maksudmu login sebagai root? - Glats
Sayangnya, ini bagian dari jawaban saya agak kabur. Maksud saya, Anda masuk dan jalankan skrip sebagai root (mis. Dengan sudo). Anda harus menjalankan skrip saat baru masuk dan sudah beralih ke mode intel. Ini benar-benar mematikan GPU nvidia untuk sementara. Yang kedua harus dieksekusi sebelum keluar dalam mode intel. - C11235


patch oleh @ C11235 bekerja, sekarang saya dapat beralih antara nvidia dan intel, tetapi ini tidak mengurangi konsumsi daya. : - / yang berarti keduanya masih berjalan.

BTW ini adalah cara yang lebih mudah untuk melakukan ini.

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
2018-02-20 20:24



Terima kasih! Sayangnya, Anda benar, lihat pertanyaan saya yang diperbarui. Apakah Anda keberatan jika saya memperbarui jawaban saya untuk memasukkan metode instalasi yang lebih mudah? - C11235
@ C11235 oh ya tentu. Saya bisa memikirkan ini semua: gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048  Saya sedang menjalankan 5.8W saat idle sekarang. - whizzzkid
Ok, itu hebat! Saya memeriksa instruksi Anda dan penyebab menurunnya konsumsi daya sama seperti dalam kasus saya. Saya menulis skrip yang menggunakan bbswitch untuk menonaktifkan GPU nvidia jika mode intel utama pilihan-pilih. Dalam kasus saya ini lebih nyaman, karena saya memiliki monitor eksternal dan hampir secara eksklusif menggunakan mode nvidia, itu sebabnya saya ingin menggunakan nvidia-prime daripada bumblebee. Selain itu kinerja saat menggunakan nvidia-prime seharusnya lebih baik daripada saat menggunakan bumblebee. - C11235


Solusi untuk tidak boot setelah beralih ke videocard intel:
Tambahkan parameter boot kernel:

acpi_osi=! acpi_osi="Windows 2009"

Alasan masalah ini: bug # 156341 di kernel
Sumber solusi: link


2
2017-12-15 05:17



Dalam bentuknya yang sekarang, jawaban Anda tidak sebaik yang seharusnya. Bisakah Anda meninjau Bagaimana Menulis Jawaban yang Baik, dan pertimbangkan untuk memperluas jawaban Anda - J. Starnes
ini benar-benar bekerja untuk saya, tetapi jawabannya bisa diperbaiki. Saya akan menyarankan perbaikannya - Vladyslav Matviienko