Agora tenho dois scripts que mudam de driver, xorg.conf, cuido da lista negra e libglx, então a resposta é: sim, é possível.
A lista negra funciona com um arquivo em /etc/modprobe.d/
contendo blacklist nvidia
ou blacklist nouveau
. Eu também substitui /lib/nvidia-current/modprobe.conf
por um dummy, senão o driver nvidia sempre criaria um link em /etc/modprobe.d/
que colocaria noutro lugar o blacklist.
Mude para 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 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
→ Nvidia driver está funcionando, só problema: depois de descarregar o driver nouveau, o console está inutilizável. Eu preciso de uma maneira de redefini-la ou carregar outro framebuffer, mas como o vesafb é compilado no kernel eu não sei o que fazer.