如何通过GRUB2传递VGA / VESA模式?


11

我的其中一台机器具有3 TB HD设置,可以三次启动Mint 14(Ubuntu 12.10变体),Slackware 14.1和Arch Linux。HD使用GPT / Guid系统进行格式化。从技术上讲,Grub2“属于” Linux Mint安装,但用于对所有3个系统进行三次引导。大约1年前设置它是一个非常痛苦的过程,需要2-3天的时间对其进行摔跤并进行调整,以使其能够识别Slackware和Arch的安装。它始终能够轻松识别Mint Linux的安装。

我需要能够将VGA / VESA模式传递给Slackware和Arch。我从命令行使用Slackware和Arch,因此控制台分辨率和字体大小是重要因素。


在您的grub配置中包含这些linux...行,为什么不只是将所需内容追加到这些行?
slm

@slm在发布我的问题之前,我尝试过将它添加vga=ask到Slackware的grub.conf文件的命令行中,而没有执行update-grub2,但这仍然行不通。我也丢失了与arch的条目,update-grub2但幸运的是,由于备份了未修改的grub.conf文件,我也获得了Arch的条目。
haziz 2014年

Answers:


20

在GRUB2中,设置帧缓冲区分辨率(针对GRUB和内核)的首选方法是进行编辑/etc/default/grub以包含以下变量:

  • GRUB_GFXMODE 设置GRUB的分辨率
  • GRUB_GFXPAYLOAD_LINUX控制Linux内核是否将保留分辨率,并且如果您希望Linux内核使用与GRUB不同的分辨率,则可以在form中使用此变量进行设置widthxheight

要显示所有模式,可以使用:

  • hwinfo --framebuffer 在linux终端中
  • vbeinfo 在GRUB提示中

帧缓冲区分辨率的样本配置

这些行插入到/etc/default/grub

GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep

为了生成更改,请运行

# grub-mkconfig -o /boot/grub/grub.cfg

摘录自GNU GRUB手册2.00

‘GRUB_GFXMODE’

设置在‘gfxterm’图形终端上使用的分辨率。请注意,您只能使用图形卡通过VESA BIOS扩展(VBE)支持的模式,因此,例如,本机LCD面板分辨率可能不可用。默认值为‘auto’,它将尝试选择首选的分辨率。参见gfxmode

‘GRUB_GFXPAYLOAD_LINUX’

设置为‘text’强制Linux内核以普通文本模式启动,‘keep’以保留使用‘GRUB_GFXMODE’‘widthxheight’[ ‘xdepth’]设置特定图形模式的图形模式集,或以逗号或分号分隔的一系列顺序依次尝试几种模式。参见gfxpayload

请注意,根据您的内核,发行版,图形卡以及月相的不同,使用此选项可能会导致GNU / Linux遭受各种显示问题的困扰,尤其是在启动序列的早期。如果遇到问题,请将此选项设置为‘text’,GRUB将告诉Linux以普通文本模式引导。

参考文献


似乎建议您运行update-grub(运行grub-mkconfig)而不是运行grub-mkconfig。
Per Lindberg

我在Fedora Server 26安装中没有update-grub或update-grub2。相反,我跑了sudo grub2-mkconfig -o $(sudo find /boot -name grub.cfg)。用于EFI和非EFI系统的一条命令。
Robpol86

2

在旧版grub中,我们曾经在内核行中传递VGA / VESA模式,就像VGA=1024x768 在grub2中一样,可以通过行来实现gfxpayload=1024x768

在此处关注更多信息

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.