Open wkozaczuk opened 6 years ago
Hi, my name is Sanchith and I am a computer science student at UT Austin. My group and I were wondering if we could tackle this issue as part of our virtualization class assignment.
Hi, you are free to pick any issue but I would discourage you from working on this. The multiboot support is not very essential for OSv as I used to think when I created this issue.
Instead, I would suggest working on adding UEFI boot support instead (please see #1098). But ultimately it is up to you what you pick.
In order to boot OSv on some hypervisors (specifically Docker's hyperkit as described in #948) we need to support multiboot specification - https://www.gnu.org/software/grub/manual/multiboot/multiboot.html. In short when booting in multiboot mode, the bootloader seeks special marker segment in 32-bit ELF to contains some key information OS advertises like kernel entry start. Then bootloader sets machine into proper state and puts key information about the machine like available memory, etc into multiboot information structure (see https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Machine-state) and finally call kernel entry address.
OSv seems to already have partial support for multiboot and uses key information about memory and command line set by 16-bit boot loader (see https://github.com/cloudius-systems/osv/blob/master/arch/x64/arch-setup.cc#L25-L47).
Following changes need to be made to OSv in order to make it fully support multiboot: