web-dev-qa-db-fra.com

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

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

Je pense avoir besoin de pouvoir:

  1. [✓] Décharger NVIDIA
  2. [✓] Décharger nouveau
  3. [✕] Restaurez la console après avoir déchargé nouveau *
  4. [✓] Permuter les fichiers xorg.conf
  5. [✓] S'occuper de la liste noire
  6. [✓] Traiter avec libglx.so

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

23
htorque

J'ai maintenant deux scripts qui changent de pilote, xorg.conf, s'occupent de la blacklisting et de la libglx, donc la réponse est: oui, c'est possible.

La mise en liste noire fonctionne avec un fichier dans /etc/modprobe.d/ contenant soit blacklist nvidia ou blacklist nouveau. J'ai également remplacé /lib/nvidia-current/modprobe.conf par un mannequin, sinon le pilote nvidia créerait toujours un lien dans /etc/modprobe.d/ qui lirait des listes noires.

Passez à 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, je lance Nouveau et une console qui fonctionne (nouveaufb).

Passez à 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 le déchargement du nouveau pilote, la console est inutilisable. J'ai besoin d'un moyen de le réinitialiser ou de charger un autre framebuffer, mais comme vesafb est compilé dans le noyau, je ne sais pas quoi faire.

11
htorque

Je ne crois pas qu'il soit possible de le faire, non seulement le paramètre de mode noyau du pilote nouvou et celui de nvidia non plus, 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 . (voir bugs et questions sur les éléments à l'envers)

0

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

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

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

0
David Balažic