Basculer entre nvidia-current et nouveau sans redémarrage?

24

Est-il possible de basculer entre les pilotes vidéo BLOB et Nouveau de Nvidia à la volée?

Je pense que je dois pouvoir:

  1. [✓] Décharger nvidia
  2. [✓] Décharger nouveau
  3. [✕] Restaurez la console après avoir déchargé nouveau *
  4. [✓] Échangez les fichiers xorg.conf
  5. [✓] Prenez soin de la liste noire
  6. [✓] Traitez avec libglx.so

*) Après un petit entretien avec les gars de #nouveau, cela semble difficile voire impossible avec la configuration actuelle d'Ubuntu (vesafb intégré). J'essaie de le faire fonctionner avec uvesafb, mais pour l'instant les scripts de la réponse font ce que je cherchais.

htorque
la source
sonne comme une affaire vraiment risquée Oo, tu es sûr de vouloir faire ça?
RolandiXor
4
Le risque signifie le plaisir. : P
htorque
Au cas où, pourriez-vous ajouter les lignes suivantes dans votre script: chvt 1 chvt 7 Référence: hermann-uwe.de/tips-and-tricks/chvt
ericb
J'avais juste envie de souligner quel poste bien structuré vous avez. Jolie à voir! :)
lindhe

Réponses:

12

J'ai maintenant deux scripts qui commutent les pilotes, xorg.conf, s'occupent de la liste noire et du libglx, donc la réponse est: oui, c'est possible.

La mise en liste noire fonctionne avec un fichier /etc/modprobe.d/contenant soit blacklist nvidiaou blacklist nouveau. J'ai également remplacé /lib/nvidia-current/modprobe.confpar un mannequin, sinon le pilote nvidia créerait toujours un lien dans /etc/modprobe.d/cette liste noire nouvelle.

Passez au nouveau:

 #!/bin/bash
 stop gdm

 rmmod nvidia

 sed -i "s/nouveau/nvidia/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

 update-alternatives --set gl_conf /usr/lib/mesa/ld.so.conf
 ldconfig

 modprobe nouveau

 cp /etc/X11/xorg.conf{.nouveau,}

 start gdm

Après avoir exécuté cela, j'ai un nouveau fonctionnement et une console de travail (nouveaufb).

Passer à nvidia:

#!/bin/bash
stop gdm

echo 0 > /sys/class/vtconsole/vtcon1/bind
rmmod nouveau
rmmod ttm
rmmod drm_kms_helper
rmmod drm

sed -i "s/nvidia/nouveau/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

update-alternatives --set gl_conf /usr/lib/nvidia-current/ld.so.conf
ldconfig

modprobe nvidia-current

cp /etc/X11/xorg.conf{.nvidia,}

start gdm

→ Le pilote Nvidia fonctionne, seul problème: après avoir déchargé le nouveau pilote, la console est inutilisable. J'ai besoin d'un moyen de le réinitialiser ou de charger un autre framebuffer, mais puisque vesafb est compilé dans le noyau, je ne sais pas quoi faire.

htorque
la source
L'objectif principal a été atteint, donc j'accepte cela jusqu'à ce que quelqu'un puisse trouver une solution au problème de terminal.
htorque
Il semble y avoir une nouvelle question demandant ceci: askubuntu.com/questions/855451/… J'ai lié votre réponse là-bas, mais après l'avoir testée, j'ai réalisé que cela ne fonctionne pas (plus). Vous pouvez peut-être mettre à jour votre réponse.
étudiant
0

Je ne pense pas qu'il soit possible de le faire, non seulement le paramètre de mode noyau du pilote nouvou et celui de nvidia ne le sont pas, mais le pilote nvidia utilise une bibliothèque xorg piratée qui rend même l'utilisation de la même installation sur une machine nécessitant le pilote Intel un problème . (voir les bugs et questions des éléments à l'envers)

Martin Owens -doctormo-
la source
1
Je pense que c'est pourquoi ils ont ajouté l'alternative 'gl_conf'. L'utilisation d'alternatives de mise à jour permet de basculer facilement entre la bibliothèque Nvidia et la bibliothèque "normale".
htorque
0

http://nouveau.freedesktop.org/wiki/KernelModeSetting/ suggère d'exécuter /etc/init.d/consolefont redémarrer après rmmod-ing nouevau pour restaurer le mode texte. Notez qu'il a été renommé console-font sur les systèmes plus récents et dans Ubuntu 13.10, il ne peut pas être appelé de cette façon, mais comme ceci: service console-font restart

De plus, cela ne fonctionne pas toujours. Dans certains cas, le démarrage de X ( service lightdm start - ou tout autre DM que vous utilisez) démarrera le mode gfx et donnera également un mode texte de travail lors du passage à vt1 ( ctrl-alt-f1 ).

(J'utilise ceci pour installer le pilote nvidia dans une session de CD live)

David Balažic
la source