GRUB2 e kernel vga = parâmetro

16

De acordo com a documentação, o uso do vga=parâmetro kernel está obsoleto no GRUB2. O fato de alguns kernels mais novos não parecerem mais suportá-lo em determinados adaptadores não é motivo de preocupação, pois a placa gráfica que tenho tem de sete a oito anos de idade.

O problema agora é que eu gostaria de usar um modo de texto com resolução mais alta, como 80x50, em vez dos caracteres 80x25 padrão. Aparentemente, todos os gráficos (VBE / VESA) modos estão fora de questão para esta placa gráfica (ATI Rage XL) - a lista de modos disponíveis só mostra 0através 6. 6é 80x60horrível, então eu gostaria de ir com 1(80x50).

Vi 80x50 e 80x60 funcionando depois de obter a lista de modos disponíveis sempre que o modo padrão não era suportado (com o padrão comentado GRUB_TERMINAL=console) e fui solicitado a escolher.

Como posso definir o modo, se não devo configurá-lo na linha de comando do kernel e todo uso de GRUB_GFXMODE(com ou sem vbemódulo de pré-carregamento ) e GRUB_GFXPAYLOAD_LINUX=keepfalha? Falha como em: a tela permanece em branco porque é um modo gráfico inválido para a placa que tenho nesta máquina?

Minha idéia seria passar nomodesetpara o kernel ainda, mas o gerenciador de inicialização ainda precisaria definir o modo gráfico. E não vejo outras opções além do vga=parâmetro do kernel para fazer isso.

Nota: os comandos vbeteste videotestno console do GRUB2 ficarão em branco na tela e, em seguida, a tela mudará para o modo de suspensão depois de afirmar que não há entrada de vídeo. vbeinfoe videoinfomostre alguns modos disponíveis além dos mencionados acima, mas não há menção de onde isso deve ser definido. Além disso, ao passar vga=1(sem nomodeset) na linha de comando do kernel, vejo um aviso muito breve sobre sua obsoleta, mas é muito longo para ler completamente - e a saída não aparece dmesg.

0xC0000022L
fonte
O vgaparâmetro se aplica ao kernel, não a grub2. Não importa como o grub2desenvolvedor esteja tentando tornar o complexo simples, ele ainda funcionará desde que os kernels compreendam esse parâmetro.
ajeh

Respostas:

9

Talvez tenha sido descontinuado pelo grub2, mas ainda deve funcionar e deve continuar a funcionar. Funciona para mim usando o grub2 e o debian wheezy, além do rhel7.3 (confirmado em 01-2017). Ainda de acordo com a documentação oficial, isso não é preterido:

https://www.kernel.org/doc/Documentation/x86/boot.txt

Se a linha de comando fornecida pelo carregador de inicialização for inserida pelo usuário, o usuário poderá esperar que as seguintes opções de linha de comando funcionem. Eles normalmente não devem ser excluídos da linha de comando do kernel, embora nem todos sejam realmente significativos para o kernel.

vga = aqui é um número inteiro (na notação C, decimal, octal ou hexadecimal) ou uma das cadeias "normal" (significando 0xFFFF), "ext" (significando 0xFFFE) ou "ask" (significando 0xFFFD). Este valor deve ser inserido no campo vid_mode, pois é usado pelo kernel antes da análise da linha de comando.

E https://www.kernel.org/doc/Documentation/svga.txt lhe dirá tudo o que você precisa saber. Abaixo alguns exemplos de resoluções que eu costumo usar:

vga=0x31b --> 1280x1024x32
vga=0x34d --> 1600x900x32
vga=0x31e --> 1600x1200x32

Para obter uma lista dos modos suportados, use:

vga=ask

Para uma tela de 1024 × 768x24, que achei funcionar em praticamente todos os sistemas e monitores que utilizo (desta vez em decimal e em hexadecimal):

vga=792
vga=0x318
aseq
fonte
1
Isso funciona para mim quando eu edito o /etc/default/grubadicionando vga=792ao valor existente deGRUB_CMDLINE_LINUX
Shashank Vyas
Uma atualização do Ubuntu hoje instalou novos itens de inicialização do grub UEFI e propôs uma alteração na linha de comando a ser adicionada vga=currentjuntamente com os itens de despejo de memória. Recusei as alterações, mas vim aqui imaginando o que vga=currentsignificava.
WinEunuuchs2Unix
2

O parâmetro vga ainda é suportado com os comandos linux16 e initrd16, portanto, se você alterar "linux" para "linux16" ou "initrd" para "initrd16", poderá obter o comportamento antigo. Não sei ao certo quais outras mudanças causam, mas funcionou bem o suficiente para mim. :-)

Adam M.
fonte
1
Este é um ótimo conselho! Basta pressionar e para editar no grub2, depois navegue até onde diz linux e coloque 16 no final. Então você pode colocar vga = ask no final da linha. Se o framebuffer ainda estiver ativado no kernel, provavelmente mudará do texto VGA rápido para esse modo em breve.
Alex Cannon