Wie zwinge ich GRUB, den Videomodus nach dem Wechsel zum Betriebssystem beizubehalten?

Wie zwinge ich GRUB, den Videomodus nach dem Wechsel zum Betriebssystem beizubehalten?

Ich verwende GRUB als Bootloader für mein benutzerdefiniertes Betriebssystem. Ich möchte, dass es für mich in den Grafikmodus wechselt, damit ich das nicht selbst in meinem System tun muss. Bevor GRUB jedoch die Steuerung an das Betriebssystem übergibt, wird der Videomodus wieder in den 80x25-Textmodus geändert. Ich habe versucht, zu verwenden, set gfxpayload=keepaber es scheint nichts zu bewirken. Der von mir gewählte Modus (mit set gfxmode=1024x768x24) funktioniert einwandfrei, solange GRUB noch aktiv ist, aber bevor die Steuerung an den Einstiegspunkt meines Betriebssystems übergeben wird, wechselt es zurück in den Textmodus. Mache ich etwas falsch? Und hier ist meine grub.cfgDatei:

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
}

Antwort1

Problem gelöst. Wie Sawdust vorgeschlagen hat, wäre die Analyse des GRUB-Quellcodes eine Möglichkeit ( grub_multiboot_set_consoleFunktion in grub-2.00/grub-core/loader/multiboot.cDatei).

Das Problem war, dass mein Kernel per Befehl geladen wird multiboot <filename>und Linux (in den meisten Fällen) per linux <filename>Befehl geladen wird. Die Multiboot-Spezifikation erfordert, dass Informationen zum bevorzugten Videomodus im Multiboot-Header bereitgestellt werden. Wenn diese Informationen nicht bereitgestellt werden, wechselt GRUB vor dem Starten des Kernels zurück in den Textmodus und ignoriert die gfxpayloadVariable vollständig.

verwandte Informationen