Como definir a resolução nos consoles de texto (solucionar problemas quando algum `vga =…` falhar)


29

É uma maneira comum de definir a resolução de um console de texto (que geralmente está disponível por Ctrl-Alt-F1 a Ctrl-Alt-F6) usando um vga=...parâmetro do kernel. Estou usando o Ubuntu 10.04 Lucid, saída de uname -aé:

Linux  2.6.32-33-generic #70-Ubuntu SMP Thu Jul 7 21:13:52 UTC 2011 x86_64 GNU/Linux

Para identificar os modos disponíveis, eu uso os sudo hwinfo --framebufferrelatórios:

02: None 00.0: 11001 VESA Framebuffer                            
  [Created at bios.464]  
  Unique ID: rdCR.R1b4duaxSqA  
  Hardware Class: framebuffer  
  Model: "NVIDIA G73 Board - p456h1  "  
  Vendor: "NVIDIA Corporation"  
  Device: "G73 Board - p456h1  "  
  SubVendor: "NVIDIA"  
  SubDevice:   
  Revision: "Chip Rev"  
  Memory Size: 256 MB  
  Memory Range: 0xc0000000-0xcfffffff (rw)  
  Mode 0x0300: 640x400 (+640), 8 bits  
  Mode 0x0301: 640x480 (+640), 8 bits  
  Mode 0x0303: 800x600 (+800), 8 bits  
  Mode 0x0305: 1024x768 (+1024), 8 bits  
  Mode 0x0307: 1280x1024 (+1280), 8 bits  
  Mode 0x030e: 320x200 (+640), 16 bits  
  Mode 0x030f: 320x200 (+1280), 24 bits  
  Mode 0x0311: 640x480 (+1280), 16 bits  
  Mode 0x0312: 640x480 (+2560), 24 bits  
  Mode 0x0314: 800x600 (+1600), 16 bits  
  Mode 0x0315: 800x600 (+3200), 24 bits  
  Mode 0x0317: 1024x768 (+2048), 16 bits  
  Mode 0x0318: 1024x768 (+4096), 24 bits  
  Mode 0x031a: 1280x1024 (+2560), 16 bits  
  Mode 0x031b: 1280x1024 (+5120), 24 bits  
  Mode 0x0330: 320x200 (+320), 8 bits  
  Mode 0x0331: 320x400 (+320), 8 bits  
  Mode 0x0332: 320x400 (+640), 16 bits  
  Mode 0x0333: 320x400 (+1280), 24 bits  
  Mode 0x0334: 320x240 (+320), 8 bits  
  Mode 0x0335: 320x240 (+640), 16 bits  
  Mode 0x0336: 320x240 (+1280), 24 bits  
  Mode 0x033d: 640x400 (+1280), 16 bits  
  Mode 0x033e: 640x400 (+2560), 24 bits  
  Config Status: cfg=new, avail=yes, need=no, active=unknown  

Parece que muitos modos de alta resolução estão disponíveis, como 0x305, 0x307, 0x317, 0x318, 0x31a, 0x31b (a propósito, o que significa o número positivo na lista de modos?). No entanto, a configuração de qualquer um desses modos na sequência de opções, na linha do kernel vga=0x305resulta em um console de texto em preto escuro ou na tela preenchida por pontos piscando em cores / preto e branco.

Qual é a maneira 'moderna' e 'robusta' de configurar alta resolução em consoles de texto?

Respostas:


25

Os kernels mais recentes usam o KMS por padrão, portanto, você deve deixar de anexar vga=à sua linha grub, pois ela entrará em conflito com a resolução nativa do KMS. No entanto, depende do driver de vídeo que você está usando: o driver proprietário da Nvidia não suporta o KMS , mas você pode contorná-lo.

Você deve conseguir obter uma resolução completa no buffer de quadros editando /etc/default/grube certificando-se de que GFXMODEestá definido corretamente e, em seguida, adicionando uma GFXPAYLOADentrada da seguinte maneira:

GRUB_GFXMODE=1680x1050x24

# Hack to force higher framebuffer resolution
GRUB_GFXPAYLOAD_LINUX=1680x1050

Lembre-se de correr sudo update-grubdepois.


Eu entrei Driver "nvidia"no meu xorg.conf, então provavelmente é um driver proprietário. Vou experimentar de grubqualquer maneira. A propósito, como contornar o driver proprietário?
Mjdj #

Eu uso o driver proprietário e o método acima (em uma caixa 10.10) e está bom. Você sempre poderia tentar um driver nouveau, se quisesse: nouveau.freedesktop.org/wiki/UbuntuPackages
jasonwryan

1
Parece que a abordagem GFXPAYLOAD funcionou, mas apenas set gfxpayload=keepnos grub2arquivos de configuração.
mbaitoff

2
Mas ainda tenho suspeitas de que meu modo de vídeo não seja nativo. I fornecido GRUB_GFXPAYLOAD=1920x1080com GRUB_GFXMODE=1920x1080x24, mas eu ainda vejo as letras borradas no console como se eu estivesse em resolução não-nativa.
mbaitoff

1
Tropecei ao tentar obter um console maior para minha VM e queria adicionar ao comentário do @ mbaitoff. Para entrar set gfxpayload=keepna configuração do grub2, você precisa adicionar a linha GRUB_GFXPAYLOAD_LINUX=keepao seu /etc/default/grub. (Isso é no Debian, e eu assumiria o Ubuntu - YMMV em outros). Tinha que caçar isso nos documentos do grub, então achei que eu iria compartilhar.
Will

13

Para distribuições mais recentes do Debian e Ubuntu usando a nvidia, eu tinha que fazer o seguinte:

Primeiro, edite / etc / default / grub. Mude a seguinte linha:

#GRUB_GFXMODE=640x480 

para isso:

GRUB_GFXMODE=1280x800 
GRUB_GFXPAYLOAD_LINUX=keep

substituindo 1280x800 pela resolução desejada.

Então:

echo "echo FRAMEBUFFER=y" | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u
sudo update-grub

Para simplesmente alterar o tamanho da fonte, você pode fazer isso usando o seguinte comando:

sudo dpkg-reconfigure console-setup

2
+1 para o dpkg-reconfigure console-setup
jinowolski

Isso funcionou para mim no Kubuntu 16.04 com o driver NVidia 390.
Maxim Egorushkin

NÃO É UM TIPO, echo "echo FRAMEBUFFER = y" está correto. Eu verifiquei e verifiquei isso e isso não funcionará sem o comando de eco subsequente gravado no arquivo. Obrigado!
Mchid 17/10/19

8

Aqui está sua melhor opção:

Use sudo hwinfo --framebuffercomo descrito, escolha um modo de vídeo que você gostaria de ver durante a inicialização no console e adicione a opção vga=nnnaos parâmetros de inicialização do kernel.

O único truque é que nnné o modo de vídeo selecionado na lista produzida por hwinfo- CONVERTED TO DECIMAL !!!

Se você tentar vga=0xwhatever, não vai funcionar.

Por exemplo, eu escolhi o modo de vídeo 0x307 (1280x1024 (+1280), 8 bits), converti 0x307 em decimal, que é 775, e depois usei vga=775nos parâmetros de inicialização do isolinux / extlinux.

Você pode usar printf para converter hexadecimal em decimal: $ printf "%d\n" 0x307 775

E recebi um bom texto em todos os consoles desde o início.

Sucesso!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.