2

Я использую 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 ответ1

1

Задача решена. Как указывалось в опилках, анализ исходного кода GRUB был хорошим способом (функция grub_multiboot_set_console в файле grub-2.00/grub-core/loader/multiboot.c ).

Проблема заключалась в том, что мое ядро загружалось командой multiboot <filename> а linux (в большинстве случаев) загружалось командой linux <filename> . Спецификация мультизагрузки требует, чтобы информация о предпочтительном режиме видео была предоставлена в заголовке мультизагрузки. Если эта информация не предоставлена, GRUB переключается обратно в текстовый режим перед запуском ядра и полностью игнорирует переменную gfxpayload .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .