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

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

这是使用内核参数设置文本控制台分辨率(通常可通过 Ctrl-Alt-F1 到 Ctrl-Alt-F6 使用)的常见方法vga=...。我使用的是 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都会导致纯黑文本控制台,或者屏幕被闪烁的彩色/黑白点填充。

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

答案1

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

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

GRUB_GFXMODE=1680x1050x24

# Hack to force higher framebuffer resolution
GRUB_GFXPAYLOAD_LINUX=1680x1050

sudo update-grub事后记得跑步。

答案2

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

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

#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

答案3

这是您的最佳选择:

按照描述使用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

我从一开始就在所有控制台中得到了很好的精美文本。

成功!

答案4

更新:(对于我们中一些已更改配置文件但无法成功的人来说,这是一个可能的解决方案):

大约六个月以来,我一直在尝试实现这一点,但一无所获。从那时起,我不断寻找的所有方法都无法在我的系统上发挥作用。后来,不知怎么的,我发现你需要……禁用系统 BIOS 的启动部分中的 CSM(兼容性支持模块),才能使上述答案中显示的方法真正发挥作用。

当您在 BIOS 的引导部分启用 CSM 时,“EFI GOP 驱动器”将仅显示最大 1280x1024 或其他内容(videoinfo / vbeinfo 或您告诉 GRUB 命令行的任何内容),并且一旦您禁用 CSM,您获取显示器支持的完整显示分辨率。然后您需要编写所有配置,如上面的答案所示。

我再次重申,如果您不在 BIOS 中禁用 CSM,您将无法获得全分辨率的支持。


原文(沮丧的心态):请原谅我。这是一个非常规的答案。我在这里只是告诉大家,上述答案均不适用于 Debian 10.6 (Bullseye)、内核 5.10.13。带 EFI 启动的 UEFI BIOS、通过带有专有驱动程序的 Nvdia GTX 1060 的 HDMI-0、Z97 主板上的 i7-5775C。

相关内容