it-swarm.cn

如何在文本控制台中设置分辨率(在任何`vga = ...`失败时进行故障排除)

这是通过使用vga=...内核参数来设置文本控制台(通常可通过Ctrl-Alt-F1到Ctrl-Alt-F6来使用)的分辨率的常用方法。我正在使用Ubuntu 10.04 Lucid,uname -a的输出为:

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

为了确定可用的模式,我使用Sudo hwinfo --framebuffer报告:

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  

看起来有许多高分辨率模式可用,例如0x305、0x307、0x317、0x318、0x31a,0x31b(顺便说一下,加号在模式列表中是什么意思?)。但是,在内核选项字符串vga=0x305行中设置任何这些模式都将导致黑色文本控制台或由闪烁的颜色/黑白点填充的屏幕。

在文本控制台中设置高分辨率的“现代”,“稳健”方法是什么?

29
mbaitoff

较新的内核默认情况下使用 [〜#〜] kms [〜#〜] ,因此您应避免将vga=附加到grub行,因为这会与KMS的本机分辨率冲突。但是,这取决于您使用的视频驱动程序:专有的Nvidia驱动程序不支持 [〜#〜] kms [〜#〜] ,但是您可以解决它。

通过编辑/etc/default/grub并确保正确设置GFXMODE,然后添加GFXPAYLOAD条目,您应该能够在帧缓冲区中获得完整的分辨率:

GRUB_GFXMODE=1680x1050x24

# Hack to force higher framebuffer resolution
GRUB_GFXPAYLOAD_LINUX=1680x1050

请记住,之后再运行Sudo update-grub

27
jasonwryan

对于使用nvidia的较新的Debian和Ubuntu发行版,我必须执行以下操作:

首先,编辑/ etc/default/grub。更改以下行:

#GRUB_GFXMODE=640x480 

对此:

GRUB_GFXMODE=1280x800 
GRUB_GFXPAYLOAD_LINUX=keep

用所需的分辨率替换1280x800。

然后:

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

要简单地更改字体大小,可以使用以下命令:

Sudo dpkg-reconfigure console-setup
14
mchid

这是您最好的选择:

按照说明使用Sudo hwinfo --framebuffer,选择要在控制台引导期间看到的视频模式,然后将选项vga=nnn添加到内核引导参数。

唯一的技巧是nnn是您从hwinfo产生的列表中选择的视频模式-转换为DECIMAL

如果您尝试vga=0xwhatever,将无法使用。

例如,我选择了视频模式0x307(1280x1024(+1280),8位),将0x307转换为十进制775,然后在isolinux/extlinux的引导参数中使用vga=775

您可以使用printf将十六进制转换为十进制:$ printf "%d\n" 0x307 775

从一开始,我在所有控制台中都获得了不错的文字。

成功!

9
chris_startx