
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
- Faça 3 entradas grub diferentes para cada kernel com
driver1
,driver2
,driver3
como opções. - Faça 3 xorg.conf diferentes (cada um com um dos três drivers) e nomeie-os como
xorg.conf1
,xorg.conf2
,xorg.conf2
. - Escreva initscript que é executado antes de X que greps
/proc/cmdline
paradriver1
,driver2
oderdriver3
e depois links simbólicosxorg.conf1
,xorg.conf2
ouxorg.conf2
paraxorg.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:
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.