Grub2: é possível desabilitar os drivers gráficos através do comando de inicialização do kernel?

4

Questões

Aqui estão as minhas perguntas: é possível desabilitar o driver fglrx Linux ou fazer alguma coisa para suprimir a funcionalidade (por exemplo, aceleração 3D) que não é compatível com hardware cruzado por meio de uma configuração do grub? Se sim, como isso seria feito?

Especificamente, eu configurei meu ambiente de desenvolvimento de software preferido em um SSD que eu uso em várias máquinas, apenas algumas delas com GPUs Radeon discretas - as outras têm iGPUs da Intel. Nas máquinas com GPUs Radeon, o gmd precisa que os drivers fglrx sejam executados sem problemas (a aceleração 3D é particularmente justa sem eles). Eu preciso ser capaz de criar / selecionar opções de inicialização no grub que me permitem inicializar em um dispositivo Intel usando o iGPU ou um dispositivo AMD com GPUs Radeon.

Todas as informações que encontrei sobre a modificação do menu de inicialização do grub estão desatualizadas, então eu recorri à SU para obter esclarecimentos.

fundo

Eu tenho um dual boot configurado no meu PC: Windows 7 em um SSD e Ubuntu Gnome 14.04 em outro (eu uso o Ubuntu principalmente para desenvolvimento de software). Recentemente, atualizei meu PC de algumas Radeon HD 7700s para um AMD R9 280, quando os drivers da radeon pararam de funcionar para a aceleração 3D, fazendo com que tudo gaguejasse. Então mudei para fglrx e todos os problemas cessaram. Tudo estava bem no microcosmo eletrônico da minha área de trabalho.

O único problema é que eu transfiro este SSD do Ubuntu de máquina para máquina enquanto eu pulo entre escritórios, casas e cidades. Nem todas as máquinas possuem GPUs Radeon, o que pode causar problemas com os drivers fglrx. Ainda hoje, por exemplo, entrei em um escritório e coloquei meu SSD no computador que recebi; tem uma CPU Intel e não possui uma GPU discreta. O Grub mostraria minhas opções de inicialização como normais, mas minhas tentativas de iniciar o Ubuntu (mesmo no modo gráfico "à prova de falhas") falhariam. Tive a sorte de ter um pendrive ao vivo comigo, então inicializei a distro ao vivo, montei / chrooted no SSD, removi / purgou fglrx e reiniciei.

Esta não é realmente uma solução ideal. A solução ideal é criar uma opção de menu grub para inicializar sem aceleração 3D específica do fglrx.

Alguns mais específicos

root@toor:/$ grub-install --version
grub-install (GRUB) 2.02~beta2-9ubuntu1.3
root@toor:/$ uname -orvp
3.16.0-50-generic #67~14.04.1-Ubuntu SMP Fri Oct 2 22:07:51 UTC 2015 x86_64 GNU/Linux

Enquanto os drivers fglrx são instalados, a inicialização em uma máquina Intel resulta em um fenômeno bastante irritante: a tela terá letras verdes dizendo algo como "Iniciando o servidor web apache ...", que retornará constantemente independentemente do terminal virtual selecionado . Demorou cerca de 5 minutos a iniciar sessão e sudo reboot porque a tela com texto verde continuava assumindo a cada 2-10 segundos (timing descontrolado e imprevisível). Pressionar ctrl + alt + del ocasionalmente não faria com que a máquina fosse reinicializada ou, às vezes, atrasaria por meio minuto ou mais antes de responder. No entanto, quando ele respondeu, a tela inicial do gdm apareceria muito brevemente antes de ser reinicializada.

Jonathan Voss
fonte

Respostas:

6

Você deve usar o nomodeset parâmetro:

nomodeset

Os kernels mais novos mudaram a configuração do modo de vídeo para o kernel. Assim, toda a programação das taxas de clock específicas do hardware e registros na placa de vídeo acontecem no kernel, e não no driver X quando o servidor X é iniciado. Isso torna possível ter telas e telas de transições livres do splash inicial para a tela de login. Infelizmente, em alguns cartões isso não funciona corretamente e você acaba com uma tela preta. Adicionar o parâmetro nomodeset instrui o kernel a não carregar drivers de vídeo e usar os modos do BIOS até que o X seja carregado.

Dessa forma, você pode inicializar com segurança e, em seguida, distribuir para X o negócio de selecionar a unidade apropriada para suas necessidades. Você pode até decidir não fazer programação alguma, e ver se o comando simples

    dpkg-reconfigure xserver-xorg

(isso funciona no Debian e derivados, que é o seu caso) pode fazer no seu caso.

EDITAR:

É possível desativar completamente uma inicialização gráfica. cópia de

      cp /etc/default/grub /etc/default/grub-orig

A edição / etc / default / grub, comente esta linha,

      #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

modificar esta linha para parecer

      GRUB_CMDLINE_LINUX="text"

então descomente esta linha,

      GRUB_TERMINAL=console

Salvar, executar

       update-grub

quando você reiniciar, se você não tiver uma instalação quebrada, você se classificará no modo de texto. Depois de reconfigurar o X, você pode iniciar a sessão gráfica com

       startx
MariusMatutiae
fonte
Eu estou testando isso agora. Se funcionar, farei sugestões de edição para que a resposta seja mais completa.
Jonathan Voss
Isso não funciona. Eu adicionei GRUB_CMDLINE_LINUX_DEFAULT="nomodeset" para / etc / default / grub e depois usado update-grub ao invés de dpkg-reconfigure porque não conseguiu encontrar o pacote xserver-xorg. (Você quis dizer xserver-xorg- *?) O resultado é que a tela inicial do Ubuntu é substituída por uma tela nostálgica de texto que inevitavelmente para depois de "iniciar o apache ... restaurar o estado do resolvedor ... iniciando daemons do Quagga ... O dispatcher de fala está desabilitado ... "A tela pisca continuamente da mesma maneira que eu descrevi na seção de fundo. Alguma ideia?
Jonathan Voss
@ JonathanVoss Pls leu minha edição.
MariusMatutiae
Não terei tempo para testar essa nova solução até amanhã. Parece promissor, mas vou ter que descobrir uma maneira de tornar isso uma opção secundária (talvez em "opções avançadas de inicialização").
Jonathan Voss
Eu tentei isso e meio que quase funcionou. Isso me deixaria em tty1, e eu poderia correr startx de lá. O problema é que eu ainda tenho que desinstalar os drivers antes de inicializar com um Intel iGPU, e então eu tenho que reinstalar e reiniciar antes de executar uma máquina com o AMD GPU. Eu também teria que executar o startx toda vez. Como eu adicionaria uma entrada personalizada no equivalente moderno de "menu.lst"?
Jonathan Voss