I am writing a boot loader, and I've got most of the details down, but I am not sure why some boot loaders relocate themselves in memory before they begin the bulk of their execution.
Can anyone explain this?
An example of this behavior is the original v0.01 Linux kernel bootloader which has the following comment in it:
boot.s is loaded at 0x7c00 by the bios-startup routines, and moves itself out of the way to address 0x90000, and jumps there.
Best Answer
From the linked article: