这是使用内核参数设置文本控制台分辨率(通常可通过 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。