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


29

这是使用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(顺便说一下,加号在模式列表中意味着什么?)。但是,在内核选项字符串line内设置任何这些模式都会vga=0x305导致黑色文本控制台或由闪烁的颜色/黑白点填充的屏幕。

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

Answers:


25

较新的内核默认情况下使用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


我有Driver "nvidia"我的xorg.conf,所以它可能是一个专有的驱动程序。grub无论如何,我都会尝试。顺便说一句,如何解决专有驱动程序?
mbaitoff

我使用专有的驱动程序和上述方法(在10.10机器上),很好。您可以随时尝试使用nouveau驱动程序:nouveau.freedesktop.org/wiki/UbuntuPackages
jasonwryan 2011年

1
看起来GFXPAYLOAD方法有效,但仅适用set gfxpayload=keepgrub2配置文件。
mbaitoff 2011年

2
但是我仍然怀疑我的视频模式不是本地的。我提供GRUB_GFXPAYLOAD=1920x1080GRUB_GFXMODE=1920x1080x24,但是在控制台中我仍然看到模糊的字母,好像我处于非本地分辨率。
mbaitoff 2011年

1
在尝试为我的VM获得更大的控制台时偶然发现,并想添加到@mbaitoff的评论中。要set gfxpayload=keep进入grub2配置,您需要将该行添加GRUB_GFXPAYLOAD_LINUX=keep/etc/default/grub。(这是在Debian上,我会在其他地方使用Ubuntu-YMMV)。不得不在grub文档中找到这个,所以我想分享一下。
2014年

13

对于使用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

2
dpkg-reconfigure控制台设置为+1
jinowolski 2015年

这为我在带有NVidia 390驱动程序的Kubuntu 16.04上工作。
Maxim Egorushkin

这不是TYPO,回显“ echo FRAMEBUFFER = y”是正确的。我已经检查并验证了这一点,如果没有随后的echo命令写入该文件,这将无法正常工作。谢谢!
mchid

8

这是您最好的选择:

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

唯一的窍门是nnnhwinfo- 转换为DECIMAL产生的列表中选择的视频模式!

如果尝试vga=0xwhatever,将无法正常工作。

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

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

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

成功!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.