MBR & stage1 do not handle boot partition passing for chainloading (makebootable should not be required)
|Reported by:||mmu_man||Owned by:||nobody|
|Keywords:||chainload, partition, GRUB, MBR, stage1||Cc:|
|Has a Patch:||no||Platform:||All|
Unlike GRUB, GRUB2, LILO, and most other MBR loaders, our own MBR sector does not pass the selected partition info properly, and our stage1 loader does not attempt to use it, which is why we require running makebootable on install. But it should not be necessary.
Most MBR pass the selected boot partition entry in a register (ds:si) with a flag set to let the chainloaded OS know about it. There is no reason not to do it as well, as it would eliminate the need for makebootable.
This is not about BIOSes, buggy or not, since it's only the MBR which does this, and except if the user does not install our own MBR or GRUB or GRUB2 or the many other MBRs which support this convention, it would just work without makebootable.
We can still ship with makebootable just in case, but it shouldn't be required anymore once this is fixed.
cf. http://www.gnu.org/software/grub/manual/legacy/root.html#root http://f.osdev.org/viewtopic.php?f=1&t=26015 http://forum.osdev.org/viewtopic.php?f=1&t=22470 http://forum.osdev.org/viewtopic.php?f=1&t=27371 http://forum.osdev.org/viewtopic.php?f=2&t=23227 http://stackoverflow.com/questions/17517813/grub2-chainloading-how-does-it-pass-drive-number-and-partition-entry-point
Change History (12)
comment:7 by , 4 years ago
|Milestone:||R1/beta1 → R1|
|Priority:||high → normal|
|Status:||new → assigned|