NVIDIA-PRIME: Nie mogę przejść na Intel


10

Ilekroć przełączam się z mojego GPU (GTX 1060) na mój IGPU (Intel 530), nie mogę uruchomić. Na ekranie ładowania pojawia się następujący komunikat:

[Niepowodzenie] Nie udało się uruchomić Demona Persistence NVIDIA. Aby uzyskać szczegółowe informacje, zobacz „systemctl status nvidia-persistended.service”.

Jednak mogę się uruchomić, kiedy przełączę się z powrotem na GPU Nvidii i przełączę się na moją igpu bez tymczasowego ponownego uruchamiania. Używam Kubuntu 16.10 i tylko mojego wewnętrznego wyświetlacza laptopa. To jest wynik, kiedy przełączam się na mój 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

Wynik działania 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

Próbowałem rozwiązać ten problem sam przez ponad tydzień i nie mam pojęcia, co robić. Wszystko, czego próbowałem, zawiodło.

Czy mógłbyś mi pomóc?

AKTUALIZACJA 5.2.2017:

Dzisiaj przetestowałem go ponownie i zdałem sobie sprawę, że przejście na Intel GPU nie działa w ogóle z 375 i 378. Wylogowanie powoduje zawieszenie ekranu. Dlaczego raz to zadziałało? Jeśli ponownie zainstaluję wszystkie sterowniki po usunięciu starych, a następnie użyję funkcji prime-select intel (bez ponownego uruchomienia!), Funkcja prime-select nie aktualizuje profili głównych -> Wybiera jeden ze starych profili innych niż NVIDIA (profile mesa zamiast NVIDIA) i działa. Ale gdy tylko przełączę się na profil NVIDIA lub uruchomię ponownie, profile główne zostaną zaktualizowane i już nie działa. Więc myślę, że coś jest nie tak z alternatywami EGl dla Intel GPU? Przepraszam za jakiekolwiek niedogodności.

AKTUALIZACJA 12.2.2017:

Wczoraj zmodyfikowałem oprogramowanie nvidia-prime i naprawiłem błąd. Wkrótce opublikuję (prawdopodobnie w przyszłym tygodniu) moją zmodyfikowaną wersję i wkleję tutaj link, ale wciąż napotykam problem: kiedy zamykam komputer po wykonaniu sudo prime-select intel:

ksmserver ulega awarii (używam Kubuntu, prawdopodobnie nie jest to problem z Ubuntu)

-> komputer nie może zostać całkowicie zamknięty i przywrócone są stare (złe) alternatywy aktualizacji dla procesora graficznego Intel

-> Nie mogę uruchomić.

Jeśli jednak uruchomię się sudo prime-select intelpo wyłączeniu w trybie odzyskiwania, wszystko będzie działać poprawnie i będę mógł korzystać z procesora graficznego Intel.

AKTUALIZACJA 17.2.2017:

Opublikowałem obejście tego problemu i nadal próbuję naprawić błąd w oficjalnych repozytoriach. Prawdopodobnie jest to jednak błąd w alternatywnych aktualizacjach, więc w przyszłości muszę tam wysłać raport o błędzie.

Tymczasem ciesz się z mojego obejścia! Mam nadzieję, że to też dla ciebie zadziała. Jeśli są jakieś pytania, zostaw komentarz.

AKTUALIZACJA 26.2.2017

Jak zauważył @whizzzkid, karta graficzna nvidia nadal pozostaje aktywna po zastosowaniu mojej łatki. Jednak dzisiaj udało mi się rozwiązać ten problem. Prawdopodobnie zaktualizuję swoją odpowiedź, aby uwzględnić mój drugi patch w przyszłym tygodniu. Oto kilka testów, które przeprowadziłem:

Nvidia: 43-45 W.

Intel (NVIDIA ON): 29-31 W.

Intel (nvidia wyłączona): 15-17 W.


Edytuj swoje pytanie i dodaj dane wyjściowe lspci -k | grep -EA2 'VGA|3D' polecenia terminalu.
— Pilot6

Och, widzę, że 10xx nie ma mna końcu, nawet jeśli są mobilne.
— Pilot6

Prawdopodobnie jeszcze nvidia-primeich nie obsługuje.
— Pilot6

Ciekawe jest to, że działa tak długo, jak się nie uruchamiam ponownie. Mogę użyć igpu, jeśli wyloguję się i zaloguję ponownie. Ale jak tylko zrestartuję, to już nie działa. GPU Nvidia działa i jest obsługiwane przez sterownik.
— C11235

1
Użyłem powertop do monitorowania zużycia energii. Pokazuje zużycie energii tylko wtedy, gdy używasz baterii jako źródła zasilania. Spójrz na to pytanie lub tę stronę podręcznika, aby uzyskać więcej informacji.
— C11235,

Odpowiedzi:


3

Oto moja poprawka / obejście błędu:

Jeśli chcesz użyć trzmiela zamiast nvidii-prime, spójrz na odpowiedź podaną przez @whizzzkid poniżej.

Testowane z Kubuntu 16.10 64-bit przy użyciu KDE Plasma w wersji 7.5 i KDE Frameworks w wersji 5.26.0. Poniższe kroki działają dla mnie. Mam nadzieję, że one również będą dla ciebie pracowały, ale nie mogę tego zagwarantować i nie ponoszę żadnej odpowiedzialności, jeśli nie będą. Ale cieszę się, że mogę pomóc, jeśli zostawisz komentarz.

W moim przypadku problemem było to, że aktualizacja-alternatywa / usr / lib / nvidia-XYZ-prime / w ogóle nie działała. Ma przekierowywać połączenia do sterownika intel-mesa, ale z jakiegoś powodu tak nie było. Więc prawdopodobnie jest to mimo wszystko błąd w alternatywach aktualizacji? Nadal nie znalazłem miejsca, w którym można zgłosić błąd dotyczący aktualizacji. Proszę o komentarz, jeśli możesz mi pomóc.

Zasadniczo zmodyfikowałem trochę nvidia-prime, aby zmienić alternatywy aktualizacji bezpośrednio na sterownik intel-mesa zamiast / usr / lib / nvidia-XYZ-prime /.

Ważny:

Przed zastosowaniem dowolnego z tych kroków upewnij się, jak uzyskać dostęp do trybu odzyskiwania na komputerze. Jeśli nie możesz już uruchomić systemu z powodu tego przewodnika, nadal możesz cofnąć zmiany w trybie odzyskiwania za pomocą poleceń w ostatniej części tego przewodnika. Aby uzyskać więcej informacji, zobacz tę stronę internetową na temat uzyskiwania dostępu do trybu odzyskiwania .

Jeśli używasz 32-bitowego systemu operacyjnego, musisz pominąć wszystkie polecenia zawierające x86_64 w kroku 4 iw sekcji Jak cofnąć wszystkie te modyfikacje .


Krok 1:

Zainstaluj moją łatkę, używając prostej metody dostarczonej przez @whizzzkid w jego odpowiedzi poniżej:

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

Krok 2:

Zastosuj moją drugą łatkę, aby zmniejszyć zużycie energii w trybie Intel:

Sprawdź, którą wersję sterownika nvidia posiadasz. Na przykład za pomocą następującego polecenia:

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

W tym przypadku nvidia-XYZ to nvidia-378. Zobacz ten wątek Stackoverflow .

Utwórz plik bash zawierający następującą zawartość o nazwie np. 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 

Utwórz drugi plik bash zawierający następującą zawartość o nazwie np. Poweron.sh i zastąp XYZ numerem wersji sterownika nvidia.

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

W trybie Intel musisz uruchomić pierwszy skrypt po zalogowaniu za pomocą sudo, a drugi przed wylogowaniem za pomocą sudo (w przeciwnym razie laptop prawdopodobnie się zawiesi, jak w moim przypadku). Po prostu je wykonuję sudo bash FILENAME.

Jak dotąd nie byłem w stanie automatycznie uruchomić tych skryptów jako root podczas logowania i przed wylogowaniem. Jednak może to być możliwe przy starcie, jak zauważył @Fiximan . Mogę zaktualizować tę odpowiedź ponownie w przyszłości, jeśli uda mi się to zrobić.


(prawdopodobnie) Błędy specyficzne dla plazmy KDE:

Nadal występuje błąd, którego nie byłem w stanie naprawić w KDE Plasma: Ilekroć przełączam się z Nvidii na Intel po uruchomieniu komputera w trybie nvidia, ksmserver ulega awarii i komputer staje się bezużyteczny, muszę go wyłączyć, naciskając przycisk zasilania przez około 5-10 sekund. Czasami powoduje to, że alternatywy aktualizacji zmieniają się na nvidia-prime zamiast intel-mesa, co po uruchomieniu powoduje czarny ekran .

Jeśli zdarzy ci się dotknąć błąd ksmserver, prosimy o przyczynienie się do oficjalnego raportu o błędzie na bugs.kde.org .

Problemu, że komputer nie chce się zamknąć, można jednak uniknąć, zawsze wybierając tryb Intel przed zamknięciem , nawet jeśli używasz trybu NVIDIA. Jeśli to zrobisz, wszystko działa tak, jak powinno, i nie musisz wyłączać komputera, naciskając długo przycisk zasilania, chyba że zastosujesz ten przewodnik w trybie NVIDIA.

Prostym obejściem błędu „czarny ekran po uruchomieniu” jest całkowite usunięcie niedziałających alternatyw dla aktualizacji:

Krok 1:

Możesz ponownie uzyskać dostęp do komputera po przejściu do trybu odzyskiwania, wybierz powłokę poleceń roota i wykonaj następujące 2 polecenia:

mount -o remount,rw /
prime-select nvidia

Krok 2:

Wykonaj następujące polecenia:

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

Jak cofnąć wszystkie te modyfikacje

Wystarczy wykonać następujące polecenia:

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
Sprawdź moją odpowiedź poniżej.
— whizzzkid

Hej, dzięki za to! Po uruchomieniu skryptu wyłączania mój komputer po prostu się zawiesza (przed wylogowaniem). Czy istnieje inna poprawka?
— Wboy

Niestety nie znam żadnej innej poprawki. To działa w moim przypadku. Twój problem występuje również w moim przypadku, jak napisałem, ale tylko za pierwszym razem. Jak napisałem, przed wylogowaniem musisz wrócić do Intela. Wtedy ten błąd nie wystąpi. (Przynajmniej w moim przypadku).
— C11235

Cześć @ C11235 Dzięki za naprawę. Chciałbym cię o coś zapytać: Pierwszy raz instaluję sterownik nvidia domyślnie w nvidii. Kiedy powinienem uruchomić skrypt? i co masz na myśli logowanie jako root?
— Glats

Niestety ta część mojej odpowiedzi była nieco niejasna. Miałem na myśli, że zalogujesz się, a następnie uruchom skrypt jako root (np. Z sudo). Powinieneś uruchomić skrypt po zalogowaniu i przejściu do trybu Intel. To z kolei całkowicie tymczasowo wyłącza procesor graficzny NVIDIA. Drugi należy wykonać przed wylogowaniem w trybie Intel.
— C11235

2

łatka @ C11235 działa, teraz mogę przełączać się między NVIDIA i Intel, ale to nie zmniejsza zużycia energii. : - / co oznacza, że ​​oba nadal działają.

BTW to łatwiejszy sposób na zrobienie tego.

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

Dziękuję Ci! Niestety masz rację, zobacz moje zaktualizowane pytanie. Czy masz coś przeciwko, jeśli zaktualizuję moją odpowiedź, aby zawierała łatwiejszą metodę instalacji?
— C11235

@ C11235 o tak, jasne. Udało mi się to wszystko rozgryźć : gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 W tej chwili uruchomiłem 5,8 W na biegu jałowym.
— whizzzkid

Ok, to wspaniale! Sprawdziłem twoje instrukcje, a przyczyna obniżonego zużycia energii jest taka sama jak w moim przypadku. Napisałem skrypt, który używa przełącznika bbswitch do wyłączania procesora graficznego NVIDIA, jeśli główny tryb przełączania trybu Intel. W moim przypadku jest to wygodniejsze, ponieważ mam zewnętrzny monitor i prawie wyłącznie używam trybu nvidia, dlatego chciałem użyć nvidia-prime zamiast trzmiela. Dodatkowo wydajność przy korzystaniu z nvidia-prime powinna być lepsza niż przy użyciu trzmiela.
— C11235

2

Rozwiązanie problemu z brakiem uruchamiania po przejściu na kartę wideo Intel:
Dodaj parametry rozruchowe jądra:

acpi_osi=! acpi_osi="Windows 2009"

Przyczyna tego problemu: błąd # 156341 w jądrze
Źródło rozwiązania: link

niektóre bardziej szczegółowe mogą być łatwiejsze do zrozumienia:

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

W obecnej formie twoja odpowiedź nie jest tak dobra, jak mogłaby być. Czy mógłbyś przejrzeć Jak napisać dobrą odpowiedź i rozważyć poszerzenie swojej odpowiedzi
— J. Starnes

to faktycznie działało dla mnie, ale odpowiedź można poprawić. Zasugeruję poprawę
— Vladyslav Matviienko,

1

Możliwy problem z drugą poprawką: Ostatnie polecenie skryptu „poweroff” monituje

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

Najwyraźniej, kiedy ponownie uruchamiam w trybie Intel (zmiana trybu nie wchodzi w życie do momentu ponownego uruchomienia, nie wiem, czy to normalne), moduł bbswitch nawet się nie ładuje. Więc nie ma pliku bbswitch i nie ma sposobu, aby wyłączyć procesor graficzny NVIDIA.

Używam:

  • MSI-Laptop (GL72 7RDX)
  • Zintegrowany procesor graficzny: Intel® HD Graphics 630 (Kaby Lake GT2)
  • oddzielny procesor graficzny: Geforce GTX 1050
  • System operacyjny: Ubuntu 16.04 lts

Rozwiązanie tego problemu:

Zmodyfikuj plik / etc / modules (z uprawnieniami roota) i dodaj linię

    bbswitch

Teraz bbswitch działa, nawet gdy uruchamiam się w trybie Intel, a druga poprawka C11235 działa dobrze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.