NVIDIA-PRIME: Tidak dapat beralih ke intel

10

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

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

Namun, saya bisa boot ketika saya beralih kembali ke gpu Nvidia dan beralih ke igpu saya tanpa me-reboot berfungsi sementara. Saya menggunakan Kubuntu 16.10 dan hanya layar laptop internal saya. Itulah hasilnya 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 untuk menyelesaikan masalah ini sendiri selama lebih dari seminggu dan tidak tahu apa yang harus dilakukan. Semua yang saya coba gagal.

Bisakah bantu saya?

PEMBARUAN 5.2.2017:

Saya mengujinya lagi hari ini dan menyadari bahwa beralih ke intel gpu tidak bekerja sama sekali dengan 375 dan 378. Logout keluar membekukan layar. Jadi mengapa itu berhasil 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 dari profil non-nvidia lama (profil mesa) bukannya nvidia) dan berhasil. Tapi begitu saya beralih ke profil nvidia atau reboot, profil utama diperbarui dan tidak berfungsi lagi. Jadi saya kira ada yang salah dengan alternatif EGl untuk intel gpu? Maaf untuk ketidaknyamanan.

PEMBARUAN 12.2.2017:

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

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

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

-> Saya tidak bisa boot.

Namun, jika saya menjalankan sudo prime-select intelsetelah mematikan dalam mode pemulihan semuanya berfungsi dengan baik dan saya dapat menggunakan Intel GPU.

PEMBARUAN 17.2.2017:

Saya memposting solusi saya dan saya masih mencoba untuk memperbaiki Bug di Repositori resmi. Namun, ini mungkin Bug dalam pembaruan-alternatif, jadi di depan saya harus memposting laporan bug di sana.

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

PEMBARUAN 26.2.2017

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

Nvidia: 43-45W

Intel (nvidia aktif): 29-31W

Intel (mati nvidia): 15-17W

C11235
sumber
Harap edit pertanyaan Anda dan tambahkan output dari lspci -k | grep -EA2 'VGA|3D' perintah terminal.
Pilot6
Oh, saya melihat 10xx tidak memiliki mpada akhirnya meskipun mereka mobile.
Pilot6
Mungkin nvidia-primebelum mendukung ini.
Pilot6
Nah, yang menarik adalah, itu berfungsi selama saya tidak reboot. Saya dapat menggunakan igpu jika saya keluar dan masuk lagi. Tapi begitu saya reboot tidak berfungsi lagi. Dan GPU Nvidia bekerja, dan didukung oleh driver.
C11235
1
Saya menggunakan powertop untuk memantau penggunaan daya. Ini hanya menunjukkan konsumsi daya jika Anda menggunakan baterai sebagai sumber daya. Lihatlah pertanyaan ini atau halaman manual itu untuk informasi lebih lanjut.
C11235

Jawaban:

3

Inilah solusi / pemecahan masalah saya untuk bug ini:

Jika Anda ingin menggunakan lebah bukan nvidia-prime, lihat jawaban yang disediakan oleh @ whizzzkid di bawah ini.

Diuji dengan Kubuntu 16.10 64-bit menggunakan 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 memberikan komentar.

Dalam kasus saya, masalahnya adalah pembaruan-alternatif / usr / lib / nvidia-XYZ-prime / tidak berfungsi sama sekali. Seharusnya mengalihkan panggilan ke driver intel-mesa, tetapi untuk beberapa alasan tidak. Jadi itu 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.

Saya pada dasarnya memodifikasi sedikit nvidia-prime untuk mengubah pembaruan-alternatif langsung ke driver intel-mesa bukan / 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 boot lagi karena panduan ini, Anda masih dapat membatalkan perubahan dalam mode pemulihan dengan perintah di bagian terakhir panduan ini. Lihat situs web ini tentang cara mengakses mode pemulihan untuk informasi lebih lanjut.

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


Langkah 1:

Instal tambalan 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 tambalan kedua saya untuk mengurangi konsumsi daya dalam mode intel:

Periksa versi nvidia-driver 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 utas Stackoverflow ini .

Buat file bash yang berisi konten berikut bernama 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 bernama 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 masuk dengan sudo dan yang kedua sebelum keluar dengan sudo (jika tidak laptop Anda mungkin akan macet, seperti dalam kasus saya). Saya hanya menjalankannya sudo bash FILENAME.

Sejauh ini saya tidak dapat secara otomatis melakukan autostart script ini sebagai root saat login dan sebelum logout. Namun, mungkin saja dengan pemula, seperti yang ditunjukkan @Fiximan . Saya mungkin memperbarui jawaban ini lagi di masa mendatang jika saya berhasil melakukannya.


(mungkin) kesalahan spesifik KDE Plasma:

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

Jika Anda terkena dampak ksmserver bug, silakan berkontribusi pada laporan bug resmi di bugs.kde.org .

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

Solusi sederhana untuk bug-screen-upon-startup-bug adalah dengan menghapus semua pembaruan yang tidak berfungsi sepenuhnya:

Langkah 1:

Anda dapat mengakses PC lagi setelah 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

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
C11235
sumber
1
Periksa jawaban saya di bawah ini.
whizzzkid
Hai teman, terima kasih banyak untuk ini! Ketika saya menjalankan skrip poweroff Anda, com saya hang (sebelum logout). Apakah ada perbaikan lain?
Wboy
Sayangnya, saya tidak tahu perbaikan lainnya. Ini berfungsi dalam kasus saya. Masalah Anda juga terjadi pada kasus saya, seperti yang saya tulis, tetapi baru pertama kali. Seperti yang saya tulis, Anda harus beralih kembali ke Intel sebelum keluar. 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 default diatur dalam nvidia. Lalu Kapan saya harus menjalankan skrip? dan Apa maksud Anda login sebagai root?
Glats
Sayangnya, bagian dari jawaban saya ini agak kabur. Maksud saya, Anda masuk lalu menjalankan skrip sebagai root (mis. Dengan sudo). Anda harus menjalankan skrip ketika baru saja masuk dan sudah beralih ke mode intel. Ini ternyata sepenuhnya menonaktifkan GPU nvidia untuk sementara waktu. Yang kedua harus dijalankan sebelum logout dalam mode intel.
C11235
2

tambalan oleh @ C11235 berfungsi, 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
whizzzkid
sumber
Terima kasih! Sayangnya, Anda benar, lihat pertanyaan saya yang diperbarui. Apakah Anda keberatan jika saya memperbarui jawaban saya untuk memasukkan metode pemasangan yang lebih mudah?
C11235
@ C11235 oh ya tentu. Saya dapat memecahkan semua ini: gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 Saya menjalankan 5.8W saat idle sekarang.
whizzzkid
Oke, bagus sekali! Saya memeriksa instruksi Anda dan penyebab konsumsi daya yang diturunkan sama seperti dalam kasus saya. Saya menulis sebuah skrip yang menggunakan bbswitch untuk menonaktifkan GPU nvidia jika prime-select toggled intel mode. Dalam kasus saya ini lebih mudah, karena saya memiliki monitor eksternal dan hampir secara eksklusif menggunakan mode nvidia, itu sebabnya saya ingin menggunakan nvidia-prime bukan bumblebee. Selain itu kinerja saat menggunakan nvidia-prime seharusnya lebih baik daripada saat menggunakan lebah.
C11235
2

Solusi untuk tidak mem-boot setelah beralih ke kartu video intel:
Tambahkan parameter boot kernel:

acpi_osi=! acpi_osi="Windows 2009"

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

beberapa lebih detail, mungkin akan lebih mudah dimengerti:

sudo echo -e "GRUB_CMDLINE_LINUX_DEFAULT='acpi_osi=! acpi_osi='Windows 2009''"  | sudo tee -a /etc/default/grub
sudo update-grub
Maxim Akristiniy
sumber
Dalam bentuknya yang sekarang, jawaban Anda tidak sebaik yang seharusnya. Bisakah Anda mengulas Cara Menulis Jawaban yang Baik , dan mempertimbangkan memperluas jawaban Anda
J. Starnes
ini sebenarnya bekerja untuk saya, tetapi jawabannya dapat ditingkatkan. Saya akan menyarankan peningkatan
Vladyslav Matviienko
1

Kemungkinan masalah dengan Fix 2: Perintah terakhir dari "poweroff" -script prompt

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

Rupanya, ketika saya reboot dalam mode Intel (Mengubah mode tidak berlaku 'sampai saya rebboot, tidak tahu apakah ini normal), Modul bbswitch bahkan tidak dimuat. Jadi tidak ada file bbswitch dan tidak ada cara untuk mematikan GPU nvidia.

Saya menggunakan:

  • MSI-Laptop (GL72 7RDX)
  • GPU terintegrasi: Intel® HD Graphics 630 (Kaby Lake GT2)
  • GPU terpisah: Geforce GTX 1050
  • OS: Ubuntu 16.04 lts

Solusi untuk masalah ini:

Edit file / etc / modules (dengan hak akses root) dan tambahkan baris

    bbswitch

Sekarang bbswitch sudah beroperasi bahkan ketika saya boot dalam mode intel, dan perbaikan kedua C11235 bekerja dengan baik.

Hugo
sumber