GRUB2和内核vga =参数


16

根据文档,vga=从GRUB2开始不赞成使用内核参数。某些新适配器似乎不再支持该内核,这一事实无关紧要,因为我拥有的显卡已经使用了七到八年。

现在的问题是,我想使用更高分辨率的文本模式,例如80x50,而不是默认的80x25字符。显然,所有的图形(VBE / VESA)模式,是这款显卡(ATI RAGE XL)的问题了-可用模式只显示列表中0通过6680x60,但看起来可怕,所以我想一起去1(80x50的)。

每当不支持默认模式(默认注释已注释掉GRUB_TERMINAL=console)并提示我进行选择时,我都会在获得可用模式列表后看到80x50和80x60工作。

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

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

注意: GRUB2控制台上的vbetestvideotest命令将使屏幕空白,然后声称没有视频输入,然后屏幕切换到睡眠模式。vbeinfovideoinfo显示了上述以外的一些可用模式,但没有提及应在何处设置。另外,在内核命令行中传递vga=1(不传递nomodeset)时,我看到一个很简短的警告,说明它已过时,但是它太长了,无法完全读取-输出不会出现在中dmesg



vga参数适用于内核,不适用于grub2。无论grub2开发人员如何尝试使简单复杂化,只要内核能够理解该参数,它就仍然有效。
ajeh

Answers:


9

也许grub2不推荐使用它,但是它应该仍然可以工作,并且必须继续工作。它适用于我使用grub2和debian wheezy以及rhel7.3(确认01-2017)。同样根据官方文档,不建议使用:

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

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

vga =这里是整数(用C表示法,十进制,八进制或十六进制)或字符串“正常”(表示0xFFFF),“ ext”(表示0xFFFE)或“询问”(表示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

1
当我/etc/default/grub通过将vga=792GRUB_CMDLINE_LINUX
Shashank Vyas

今天,Ubuntu更新安装了新的grub UEFI引导程序,并提出了命令行更改以vga=current与故障转储程序一起添加。我拒绝了更改,但来到这里想知道是什么vga=current意思。
WinEunuuchs2Unix

2

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


1
这是很好的建议!只需按e在grub2中进行编辑,然后向下导航至显示linux的位置,并在末尾添加16。然后,您可以将vga = ask放在行的末尾。如果内核中仍启用了帧缓冲,那么它可能很快就会从快速VGA文本切换到该模式。
亚历克斯·坎农
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.