Alternar entre nvidia-current e nouveau sem reiniciar?

24

É possível alternar entre os drivers de vídeo BLOB e Nouveau da Nvidia on-the-fly?

Eu acho que preciso ser capaz de:

  1. [✓] Descarregar nvidia
  2. [✓] Descarregar novo
  3. [✕] Restaure o console após descarregar o nouveau *
  4. [✓] Troque arquivos xorg.conf
  5. [✓] Cuide da lista negra
  6. [✓] Lidar com libglx.so

*) Depois de conversar um pouco com o pessoal do #nouveau, parece ser difícil ou até impossível com a configuração atual do Ubuntu (built-in vesafb). Estou tentando fazê-lo funcionar com o uvesafb, mas por enquanto os scripts na resposta fazem o que eu estava procurando.

htorque
fonte
parece um negócio realmente arriscado Oo, você tem certeza que quer fazer isso?
RolandiXor
4
Risco significa diversão. : P
htorque
Apenas no caso, você pode adicionar as seguintes linhas em seu script: chvt 1 chvt 7 Referência: hermann-uwe.de/tips-and-tricks/chvt
ericb 15/13
Eu só queria mostrar que post bem estruturado você tem. Bom ver! :)
lindhe

Respostas:

12

Agora tenho dois scripts que alternam drivers, xorg.conf, cuidam da lista negra e da libglx, então a resposta é: sim, é possível.

A lista negra funciona com um arquivo /etc/modprobe.d/contendo blacklist nvidiaou blacklist nouveau. Também substituí /lib/nvidia-current/modprobe.confpor um manequim, caso contrário, o driver da nvidia sempre criaria um link /etc/modprobe.d/nesse nouleau das listas negras.

Mudar para o 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

Depois de executar isso, eu tenho o nouveau em execução e um console de trabalho (nouveaufb).

Mude para a 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

→ O driver Nvidia está funcionando, o único problema: após descarregar o driver nouveau, o console fica inutilizável. Eu preciso de uma maneira de redefini-lo ou carregar outro buffer de quadro, mas como o vesafb é compilado no kernel, não sei o que fazer.

htorque
fonte
O objetivo principal foi alcançado, por isso estou aceitando isso até que alguém possa propor uma correção para o problema do terminal.
htorque 12/12
Parece haver uma nova pergunta pedindo isso: askubuntu.com/questions/855451/… Vinculei sua resposta lá, mas depois de testá-la, percebi que ela não funciona (mais). Talvez você possa atualizar sua resposta.
estudante de
0

Não acredito que seja possível, não apenas a configuração do modo do kernel do driver nouvou e a nvidia, mas o driver da nvidia usa uma biblioteca xorg hackeada que torna o uso da mesma instalação em uma máquina que requer o driver intel um problema . (veja os elementos de cabeça para baixo, erros e perguntas)

Martin Owens -doctormo-
fonte
1
Eu acho que é por isso que eles adicionaram a alternativa 'gl_conf'. Usar as alternativas de atualização permite alternar facilmente entre a biblioteca Nvidia e a biblioteca "normal".
htorque
0

http://nouveau.freedesktop.org/wiki/KernelModeSetting/ sugere executar /etc/init.d/consolefont para reiniciar após rmmod-ing nouevau para restaurar o modo de texto. Observe que ele foi renomeado para console-font em sistemas mais recentes e no Ubuntu 13.10 não pode ser chamado dessa maneira, mas assim: service console-font restart

Além disso, nem sempre funciona. Em alguns casos, iniciar o X ( service lightdm start - ou qualquer DM que você esteja usando) iniciará o modo gfx e também fornecerá um modo de texto de trabalho ao mudar para vt1 ( ctrl-alt-f1 ).

(Eu uso isso para instalar o driver da nvidia em uma sessão de CD ao vivo)

David Balažic
fonte