切换操作系统后,如何强制 GRUB 保持视频模式?

切换操作系统后,如何强制 GRUB 保持视频模式?

我使用 GRUB 作为自定义操作系统的引导程序。我希望它进入图形模式,这样我就不必在系统中自己执行此操作。但是,在 GRUB 将控制权传递给操作系统之前,视频模式会更改回 80x25 文本模式。我尝试使用,set gfxpayload=keep但似乎没有任何效果。我选择的模式(使用 set gfxmode=1024x768x24)在 GRUB 仍处于活动状态时工作正常,但在将控制权传递给操作系统的入口点之前,它会返回文本模式。我做错了什么吗?以下是我的grub.cfg文件:

set root=(hd0,1)

set gfxmode=1024x768x24
set gfxpayload=keep

insmod vbe
insmod vga
insmod video_cirrus
insmod gfxterm

set menu_color_normal=red/blue
set menu_color_highlight=green/blue

loadfont /boot/grub/fonts/unicode.pf2

terminal_input console
terminal_output gfxterm

set timeout=1
set default=0

menuentry "Trolololo" {
    multiboot /kernel
    boot
}

答案1

问题解决了。正如 sawdust 所建议的,分析 GRUB 的源代码是一种方法(文件grub_multiboot_set_console中的函数grub-2.00/grub-core/loader/multiboot.c)。

问题是我的内核是通过multiboot <filename>命令加载的,而 Linux (在大多数情况下)是通过命令加载的linux <filename>。多重引导规范要求在多重引导标头中提供有关首选视频模式的信息。如果没有提供该信息,GRUB 会在启动内核之前切换回文本模式并完全忽略gfxpayload变量。

相关内容