
我使用 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
問題解決了。如同鋸末所建議的,分析 GRUB 的原始程式碼是一種方法(文件grub_multiboot_set_console
中的函數grub-2.00/grub-core/loader/multiboot.c
)。
問題是我的核心是透過multiboot <filename>
命令加載的,而linux(在大多數情況下)是透過命令加載的linux <filename>
。多重引導規範要求在多重引導標頭中提供有關首選視訊模式的資訊。如果未提供該訊息,GRUB 將在啟動核心之前切換回文字模式並完全忽略gfxpayload
變數。