
저는 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
변수를 완전히 무시합니다.