Diferentes controladores de tarjetas gráficas al arrancar desde un medio externo

Diferentes controladores de tarjetas gráficas al arrancar desde un medio externo

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

  1. Haga 3 entradas de grub diferentes para cada núcleo con driver1,, como opciones.driver2driver3
  2. Cree 3 xorg.conf diferentes (cada uno con uno de los tres controladores) y asígneles el nombre xorg.conf1, xorg.conf2, xorg.conf2.
  3. Escriba un script de inicio que se ejecute antes de X que busque /proc/cmdline, driver1o driver2y driver3luego enlaces simbólicos xorg.conf1, xorg.conf2o xorg.conf2paraxorg.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:

http://en.gentoo-wiki.com/wiki/Framebuffer

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.

información relacionada