I'm looking for the line of code where GRUB2 finally jumps to kernel code and thus hands over execution on x86 systems? I guess it's in an assembler file since this is very low architecture stuff. I looked at the source files in /grub-core/boot/i386/pc/*.S and found a JMP in boot.S at line 455 but kernel_address could be the address of the GRUB2 kernel in memory and not the linux kernel.

Anyone with assembly and GRUB2 knowledge that can help me out?

  • Did you track the kernel parameters?
    – phk
    Oct 14, 2015 at 17:15
  • 1
    I can't add too much here since I'm posting from a phone, but I can guess based on what I remember of PC compatibles and GRUB2 that it loads the kernel image into memory at 0x900000 (real mode), with 0x0c000000 being the address jumped to once you jump out of real mode into protected mode. This was on an EFI system with "trusted boot", though, though so I could be incorrect. Maybe your initrd image will contain clues?
    – Wyatt Ward
    Jul 10, 2016 at 20:49

1 Answer 1


Just from reading the source, this should be the place in the linux loader and this the place in the relocater (independent from the loader).

I hope that helps :)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .