Diferentes drivers de placas gráficas durante a inicialização a partir de mídia externa

Diferentes drivers de placas gráficas durante a inicialização a partir de mídia externa

Estou inicializando um determinado sistema meu com o Ubuntu 9.10 a partir de um disco rígido externo. Estou satisfeito com a configuração e funciona bem, porém gostaria de modificá-la para poder escolher quais drivers de placa gráfica carregar durante o boot. Especificamente, gostaria de escolher entre:

  • driver proprietário da nvidia
  • driver proprietário da ati
  • driver genérico

Atualmente, se eu estiver usando drivers proprietários, não inicialize no X, exclua o xorg.conf, inicie o gdm e reconfigure o sistema usando o jockey (para drivers de hardware).

Quais seriam os passos para tornar isso (semi)automático e evitar reiniciar o X?

Onde alguém poderia encontrar exemplos de tais scripts?

Responder1

  1. Faça 3 entradas grub diferentes para cada kernel com driver1, driver2, driver3como opções.
  2. Faça 3 xorg.conf diferentes (cada um com um dos três drivers) e nomeie-os como xorg.conf1, xorg.conf2, xorg.conf2.
  3. Escreva initscript que é executado antes de X que greps /proc/cmdlinepara driver1, driver2oder driver3e depois links simbólicos xorg.conf1, xorg.conf2ou xorg.conf2paraxorg.conf

Eu fiz algo semelhante para alternar entre a configuração de tela dualheaded e não dualheaded antes do xrandr. Infelizmente, os scripts e a documentação já se foram.

Possíveis melhorias:

  • usar regras do udev
  • deixe o initscript detectar automaticamente a placa gráfica atual

Responder2

Você sempre pode criar um script de shell que automatize esse processo para você.

Responder3

O seguinte pode fornecer algumas dicas sobre como conseguir o que você deseja por meio do grub:

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

Responder4

Crie versões diferentes do seu xorg.conf com base no que você deseja. Dizer:

/etc/X11/xorg.conf.nvidia
/etc/X11/xorg.conf.ati
/etc/X11/xorg.conf.generic

Em seguida, configure múltiplas configurações de inicialização em /boot/grub/grub.cfg e coloque um parâmetro de kernel diferente (por exemplo, xconfig=myconfig) em cada linha onde o kernel é especificado. Em algum lugar ao longo das linhas de:

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
 ...
}

Os parâmetros do kernel que não são reconhecidos são ignorados, mas ainda estarão disponíveis em /proc/cmdline. Com base nisso, você pode escrever um pequeno script de shell que escolhe o arquivo de configuração correto:

#!/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

Em seguida, coloque isso em algum lugar na sua ordem de inicialização, antes do gdm iniciar.

informação relacionada