OS로 전환한 후 GRUB이 비디오 모드를 유지하도록 하려면 어떻게 해야 합니까?

OS로 전환한 후 GRUB이 비디오 모드를 유지하도록 하려면 어떻게 해야 합니까?

저는 GRUB를 맞춤형 OS의 부트로더로 사용합니다. 내 시스템에서 직접 할 필요가 없도록 그래픽 모드로 들어가길 원합니다. 그러나 GRUB이 제어권을 OS에 전달하기 전에 비디오 모드가 80x25 텍스트 모드로 다시 변경됩니다. 사용해 보았 set gfxpayload=keep으나 별 효과가 없는 것 같습니다. 내가 선택한 모드( set 사용 gfxmode=1024x768x24)는 GRUB이 여전히 활성화되어 있는 동안 잘 작동하지만 컨트롤을 내 OS의 진입점으로 전달하기 전에 텍스트 모드로 돌아갑니다. 내가 뭔가 잘못하고 있는 걸까요? 그리고 여기 내 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변수를 완전히 무시합니다.

관련 정보