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

mba*_*off 34 linux video nvidia console

这是使用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
Run Code Online (Sandbox Code Playgroud)

为了识别可用的模式,我使用sudo hwinfo --framebufferwhich 报告:

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  
Run Code Online (Sandbox Code Playgroud)

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

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

jas*_*yan 32

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

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

GRUB_GFXMODE=1680x1050x24

# Hack to force higher framebuffer resolution
GRUB_GFXPAYLOAD_LINUX=1680x1050
Run Code Online (Sandbox Code Playgroud)

sudo update-grub之后记得跑。

  • 看起来 GFXPAYLOAD 方法有效,但仅适用于 `grub2` 配置文件中的 `set gfxpayload=keep`。 (2认同)
  • 但我仍然怀疑我的视频模式不是原生的。我提供了 `GRUB_GFXPAYLOAD=1920x1080` 和 `GRUB_GFXMODE=1920x1080x24`,但我仍然在控制台中看到模糊的字母,就好像我处于非原生分辨率一样。 (2认同)
  • 偶然发现这个试图为我的 VM 获得更大的控制台并想添加到@mbaitoff 的评论中。要将 `set gfxpayload=keep` 加入到 grub2 配置中,你需要在 `/etc/default/grub` 中添加一行 `GRUB_GFXPAYLOAD_LINUX=keep`。(这是在 Debian 上,我假设 Ubuntu - YMMV 在其他人上)。不得不在 grub 文档中找到这个,所以我想我会分享。 (2认同)

mch*_*hid 17

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

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

#GRUB_GFXMODE=640x480 
Run Code Online (Sandbox Code Playgroud)

对此:

GRUB_GFXMODE=1280x800 
GRUB_GFXPAYLOAD_LINUX=keep
Run Code Online (Sandbox Code Playgroud)

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

然后:

echo "echo FRAMEBUFFER=y" | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u
sudo update-grub
Run Code Online (Sandbox Code Playgroud)

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

sudo dpkg-reconfigure console-setup
Run Code Online (Sandbox Code Playgroud)

  • +1 用于 dpkg-reconfigure 控制台设置 (3认同)

小智 10

这是您的最佳选择:

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

唯一的问题是,nnn是你所产生的列表中选择视频模式hwinfo-转换为十进制

如果你尝试vga=0xwhatever它是行不通的。

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

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

从一开始,我就在所有控制台中获得了不错的精美文本。

成功!