Skip to content

Latest commit

 

History

History
23 lines (17 loc) · 1.02 KB

chainloading.md

File metadata and controls

23 lines (17 loc) · 1.02 KB

Chainloading

Chainloading is a technique that allows one bootloader to call another bootloader as if the system had just booted up. GNU GRUB is one such bootloader which is commonly used for chainloading, as it presents a menu which you can use to select the OS you'd like to boot from. We're using grub2 here.

Create a file under iso/boot/grub/grub.cfg in the root directory of your OS's source tree. In it, put:

menuentry "myOS" {
	chainloader (hd1)+1
}

This tells grub that our binary is installed on the first partition of the hd1 disk. If you're trying to boot on real hardware you may need to edit this value as appropriate. Alternatively, you should be able to create a partition on the same ISO file that grub creates and copy the binary there.

Next, create the ISO with:

grub-mkrescue -o grub.iso iso

Testing with QEMU (replacing my_os with the name of your OS's target):

qemu-system-x86_64 -hda grub.iso -hdb target/x86_64-my_os/debug/bootimage-my_os.bin