
Estoy arrancando cierto sistema mío con ubuntu 9.10 desde un disco duro externo. Estoy satisfecho con la configuración y funciona bien, sin embargo, me gustaría modificarla para poder elegir qué controladores de tarjeta gráfica cargar durante el tiempo de arranque. Específicamente me gustaría elegir entre:
- controlador propietario de nvidia
- controlador propietario de ati
- controlador genérico
Actualmente, si estoy usando controladores propietarios, no inicio en X, borro xorg.conf, inicio gdm y reconfigura el sistema usando jockey (para controladores de hardware).
¿Cuáles serían los pasos para hacer esto (semia)automático y evitar reiniciar X?
¿Dónde se pueden encontrar ejemplos de tales guiones?
Respuesta1
- Haga 3 entradas de grub diferentes para cada núcleo con
driver1
,, como opciones.driver2
driver3
- Cree 3 xorg.conf diferentes (cada uno con uno de los tres controladores) y asígneles el nombre
xorg.conf1
,xorg.conf2
,xorg.conf2
. - Escriba un script de inicio que se ejecute antes de X que busque
/proc/cmdline
,driver1
odriver2
ydriver3
luego enlaces simbólicosxorg.conf1
,xorg.conf2
oxorg.conf2
paraxorg.conf
Hice algo similar para cambiar entre la configuración de pantalla de doble cabezal y sin doble cabezal en la época anterior a xrandr. Desafortunadamente, los scripts y la documentación desaparecieron hace mucho tiempo.
Posibles mejoras:
- usar reglas udev
- dejar que el script de inicio detecte automáticamente la tarjeta gráfica actual
Respuesta2
Siempre puedes crear un script de shell que automatice ese proceso por ti.
Respuesta3
Lo siguiente podría proporcionarle algunas sugerencias para lograr lo que desea a través de grub:
Respuesta4
Crea diferentes versiones de tu xorg.conf según lo que quieras. Decir:
/etc/X11/xorg.conf.nvidia
/etc/X11/xorg.conf.ati
/etc/X11/xorg.conf.generic
Luego configure múltiples configuraciones de arranque en /boot/grub/grub.cfg y coloque un parámetro de kernel diferente (por ejemplo, xconfig=myconfig) en cada línea donde se especifica el kernel. En algún lugar parecido a:
menuentry "Ubuntu, Linux 2.6.31-17 nvidia" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=nvidia ro single
...
}
menuentry "Ubuntu, Linux 2.6.31-17 ati" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=ati ro single
...
}
menuentry "Ubuntu, Linux 2.6.31-17 generic" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=generic ro single
...
}
Los parámetros del kernel que no se reconocen se ignoran, pero seguirán estando disponibles en /proc/cmdline. En base a esto, puedes escribir un pequeño script de shell que elija el archivo de configuración correcto:
#!/bin/bash
rm -f /etc/X11/xorg.conf
config=`cat /proc/cmdline |sed -e 's/.*xconfig=\([a-z]*\).*/\1/g'
ln -s /etc/X11/xonfig.conf.$config /etc/X11/xconfig.conf
Luego coloque esto en algún lugar de su orden de inicio, antes de que comience gdm.