GRUB2 和内核 vga= 参数

GRUB2 和内核 vga= 参数

根据文档,vga=从 GRUB2 开始不推荐使用内核参数。事实上,一些较新的内核似乎不再在某些适配器上支持它,这一点并不重要,因为我拥有的显卡已经有七到八年的历史了。

现在的问题是我想使用更高分辨率的文本模式,例如 80x50 而不是默认的 80x25 字符。显然,所有图形 (VBE/VESA) 模式对于该显卡 (ATI Rage XL) 来说都是不可能的 - 可用模式列表仅0通过6.但6看起来80x60很糟糕,所以我想一起去1(80x50)。

我见过 80x50 和 80x60 在获取可用模式列表后工作,每当默认模式不受支持时(默认值被注释掉)GRUB_TERMINAL=console),我就看到 80x50 和 80x60 可以工作,并且系统会提示我进行选择。

如果我不应该在内核命令行上设置模式,如何设置模式每次使用GRUB_GFXMODE(带或不带预加载vbe模块)都会GRUB_GFXPAYLOAD_LINUX=keep失败?失败如下:屏幕保持空白,因为它对于我在本机中拥有的卡来说是无效的图形模式?

我的想法是nomodeset仍然传递给内核,但引导加载程序仍然必须设置图形模式。除了内核参数之外,我看不到任何其他选项vga=

笔记:vbetestGRUB2 控制台上的和命令videotest将使屏幕空白,然后在声称没有视频输入后屏幕切换到睡眠模式。vbeinfovideoinfo显示除上述之外的一些可用模式,但没有提及应在何处设置。另外,当在内核命令行上传递vga=1(不带nomodeset)时,我看到一个关于它已被弃用的非常简短的警告,但它太长而无法完全阅读 - 并且输出不会出现在dmesg.

答案1

也许它已被 grub2 弃用,但它应该仍然有效并且必须继续有效。它适用于我使用 grub2 和 debian wheezy 以及 rhel7.3(于 2017 年 1 月确认)。另外根据官方文档,它并未被弃用:

https://www.kernel.org/doc/Documentation/x86/boot.txt

如果用户输入引导加载程序提供的命令行,则用户可能期望以下命令行选项起作用。通常不应从内核命令行中删除它们,即使并非所有它们实际上对内核都有意义。

vga= 这里是一个整数(用 C 表示法,十进制、八进制或十六进制)或字符串“normal”(表示 0xFFFF)、“ext”(表示 0xFFFE)或“ask”(表示 0xFFFD)之一。该值应输入到 vid_mode 字段中,因为内核在解析命令行之前使用它。

https://www.kernel.org/doc/Documentation/svga.txt会告诉你所有你需要知道的。下面是我常用的一些分辨率示例:

vga=0x31b --> 1280x1024x32
vga=0x34d --> 1600x900x32
vga=0x31e --> 1600x1200x32

要获取支持的模式列表,请使用:

vga=ask

对于 1024×768x24 屏幕,我发现它几乎适用于我使用的所有系统和显示器(这次是十进制和十六进制):

vga=792
vga=0x318

答案2

linux16 和 initrd16 命令仍然支持 vga 参数,因此如果将“linux”更改为“linux16”或将“initrd”更改为“initrd16”,您可以获得旧的行为。我不确定这会导致什么其他变化,但它对我来说效果很好。 :-)

相关内容