web-dev-qa-db-fra.com

NVIDIA-PRIME: impossible de passer à Intel

À chaque fois que je passe de mon gpu (gtx 1060) à mon igpu (Intel 530), je ne peux pas démarrer. L'écran de chargement est bloqué avec le message suivant:

[Echec] Impossible de démarrer le démon de persistance NVIDIA. Voir 'systemctl status nvidia-persistenced.service' pour plus de détails.

Cependant, je peux démarrer lorsque je repasse sur le gpu Nvidia et que basculer sur mon igpu sans redémarrer fonctionne temporairement. J'utilise Kubuntu 16.10 et uniquement mon écran interne pour ordinateur portable. C'est la sortie quand je bascule sur mon 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

Résultat de 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

J'ai essayé de résoudre ce problème moi-même pendant plus d'une semaine et je ne savais pas quoi faire. Tout ce que j'ai essayé a échoué.

Pourrais-tu m'aider s'il te plaît?

PDATE 5.2.2017:

Je l'ai testé à nouveau aujourd'hui et je me suis rendu compte que le passage à l'intel gpu ne fonctionnait pas du tout avec les versions 375 et 378. La déconnexion bloque l'écran. Alors pourquoi cela a-t-il fonctionné une fois? Si je réinstalle tous les pilotes après avoir supprimé les anciens et utilise ensuite intel prime-selection (sans redémarrage!), Prime-select ne met pas à jour les profils principaux -> Il sélectionne l'un des anciens profils non-nvidia (profils mesa au lieu de nvidia) et ça marche. Mais dès que je passe à un profil nvidia ou que je redémarre, les profils principaux sont mis à jour et cela ne fonctionne plus. Donc, je suppose qu'il y a quelque chose qui cloche dans les alternatives EGl pour Intel GPU? Désolé pour le dérangement.

PDATE 12.2.2017:

Hier, j'ai modifié le logiciel nvidia-prime et corrigé le bogue. Je vais bientôt publier (probablement la semaine prochaine) ma version modifiée et coller un lien ici, mais je rencontre toujours un problème: lorsque j'arrête mon PC après avoir exécuté Sudo prime-select intel:

ksmserver plante (j'utilise Kubuntu, ce n'est probablement pas un problème avec Ubuntu)

-> le PC ne peut pas s'éteindre complètement et les anciennes (fausses) alternatives de mise à jour pour le GPU Intel sont restaurées

-> Je ne peux pas démarrer.

Toutefois, si je lance Sudo prime-select intel après l’arrêt du système en mode de récupération, tout fonctionne correctement et je peux utiliser le processeur graphique Intel.

PDATE 17.2.2017:

J'ai posté ma solution de contournement et j'essaie toujours de corriger le bogue dans les dépôts officiels. Cependant, il s'agit probablement d'un bogue dans les alternatives de mise à jour, aussi je dois poster un rapport de bogue ici.

En attendant, profitez de ma solution de contournement! J'espère que cela fonctionne pour vous aussi. S'il y a des questions s'il vous plaît laissez un commentaire.

PDATE 26.2.2017

Comme @whizzzkid l'a souligné, la carte graphique nvidia reste toujours active après l'application de mon correctif. Cependant, aujourd'hui, j'ai pu résoudre ce problème. Je mettrai probablement à jour ma réponse pour inclure mon deuxième patch la semaine prochaine. Voici quelques tests que j'ai courus:

Nvidia: 43-45W

Intel (nvidia sur): 29-31W

Intel (nvidia off): 15-17W

10
C11235

Voici ma solution/solution de contournement pour le bogue:

Si vous voulez utiliser bumblebee au lieu de nvidia-prime, jetez un œil à la réponse fournie par @ whizzzkid ci-dessous.

Testé avec Kubuntu 16.10 64 bits avec KDE Plasma Version.7.5 et KDE Frameworks Version 5.26.0. Les étapes suivantes fonctionnent pour moi. J'espère qu'ils travailleront pour vous aussi, mais je ne peux pas garantir cela et ne prend aucune responsabilité s'ils ne le font pas. Mais je suis heureux de vous aider si vous laissez un commentaire.

Dans mon cas, le problème était que la mise à jour-alternative/usr/lib/nvidia-XYZ-prime/ne fonctionnait pas du tout. Il est supposé rediriger les appels vers le pilote Intel-mesa, mais pour une raison quelconque, il ne l'a pas été. Donc c'est probablement après tout un bug dans update-alternatives? Je n'ai toujours pas trouvé de lieu pour signaler un bogue pour update-alternatives. Veuillez commenter si vous pouvez m'aider.

En gros, j'ai légèrement modifié nvidia-prime pour changer les options de mise à jour directement au pilote intel-mesa au lieu de/usr/lib/nvidia-XYZ-prime /.

Important:

Avant d'appliquer l'une de ces étapes, assurez-vous de savoir comment accéder au mode de récupération sur votre PC. Si vous ne pouvez plus démarrer à cause de ce guide, vous pouvez toujours annuler les modifications en mode de récupération à l'aide des commandes de la dernière section de ce guide. Voir ceci site Web expliquant comment accéder au mode de récupération pour plus d'informations.

Si vous utilisez un système d'exploitation 32 bits , vous devez omettre toutes les commandes contenant x86_64 dans Step 4 et dans la section Comment annuler toutes ces modifications.


Étape 1:

Installez mon correctif en utilisant une méthode simple fournie par @whizzzkid dans sa réponse ci-dessous:

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

Étape 2:

Appliquez mon deuxième patch pour réduire la consommation d’énergie en mode Intel:

Vérifiez quelle version de pilote nvidia vous avez. Par exemple avec la commande suivante:

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

Dans ce cas, nvidia-XYZ est nvidia-378. Voir ceci fil de Stackoverflow .

Créez un fichier bash contenant le contenu suivant, nommé par exemple 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 

Créez un deuxième fichier bash contenant le contenu suivant, nommé par exemple poweron.sh, et remplacez XYZ par le numéro de version de votre pilote nvidia.

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

En mode Intel, vous devez exécuter le premier script après la connexion à Sudo et le second avant la déconnexion avec Sudo (sinon, votre ordinateur portable plantera probablement dans mon cas). Je viens de les exécuter avec Sudo bash FILENAME.

Jusqu'à présent, je ne pouvais pas démarrer automatiquement ces scripts en tant que root lors de la connexion et avant la déconnexion. Cependant, cela pourrait être possible avec upstart, comme l'a souligné @ Fiximan . Je pourrai éventuellement mettre à jour cette réponse ultérieurement si je réussis à le faire.


Erreurs (probablement) spécifiques au plasma KDE:

Il y a toujours un bogue que je n'ai pas pu corriger dans KDE Plasma: chaque fois que je passe de Nvidia à Intel après avoir démarré le PC en mode nvidia, ksmserver se bloque et le PC est rendu inutilisable, je dois l'éteindre en appuyant sur le bouton d'alimentation pendant environ 5 à 10 secondes. Il en résulte parfois que les options de mise à jour sont modifiées en nvidia-prime au lieu d’intel-mesa, ce qui conduit à un écran noir au démarrage .

Si vous êtes affecté par le bogue ksmserver, veuillez contribuer au rapport de bogue officiel sur bugs.kde.org .

Cependant, vous pouvez éviter le problème suivant: PC ne peut pas être évité en sélectionnant toujours le mode Intel avant l'arrêt, même lorsque vous utilisez nvidia-mode. Si vous faites cela, tout fonctionne normalement et vous n'avez pas besoin d'éteindre votre PC en appuyant longuement sur le bouton d'alimentation, sauf après avoir appliqué ce guide en mode nvidia.

Une solution de contournement simple pour le bogue d'écran noir au démarrage consiste à supprimer complètement les alternatives de mise à jour qui ne fonctionnent pas:

Étape 1:

Vous pouvez accéder à nouveau à votre PC après être entré en mode de récupération, sélectionnez la commande racine Shell et exécutez les 2 commandes suivantes:

mount -o remount,rw /
prime-select nvidia

Étape 2:

Exécutez les commandes suivantes:

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

Comment annuler toutes ces modifications

Il suffit d'exécuter les commandes suivantes:

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

Solution pour ne pas démarrer après le passage à la carte vidéo virtuelle:
Ajoutez les paramètres de démarrage du noyau:

acpi_osi=! acpi_osi="Windows 2009"

La raison de ce problème: bug # 156341 dans le noyau
Source de la solution: link

2
Maxim Akristiniy

le correctif de @ C11235 fonctionne, je peux maintenant basculer entre nvidia et intel, mais cela ne réduit pas la consommation d’énergie. : -/ce qui signifie que les deux fonctionnent toujours.

BTW c'est un moyen plus facile de le faire.

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

Problème possible avec le 2e correctif: Dernière commande des invites de script "poweroff"

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

Apparemment, lorsque je redémarre en mode Intel (le changement de mode n'entre pas en vigueur avant de redémarrer l'ordinateur, je ne sais pas si c'est normal), le module bbswitch n'est même pas chargé. Il n’existe donc pas de fichier bbswitch ni de moyen de désactiver le GPU nvidia.

J'utilise:

  • Ordinateur portable MSI (GL72 7RDX)
  • GPU intégré: Intel® HD Graphics 630 (Kaby Lake GT2)
  • gPU séparé: Geforce GTX 1050
  • OS: Ubuntu 16.04 lts

Solution à ce problème:

Editez le fichier/etc/modules (avec les privilèges root) et ajoutez la ligne

    bbswitch

Maintenant, bbswitch est opérationnel même lorsque je démarre en mode intel, et le deuxième correctif de C11235 fonctionne parfaitement.

1
Hugo