cloudius-systems / osv

OSv, a new operating system for the cloud.
osv.io
Other
4.08k stars 602 forks source link

Add multiboot support #981

Open wkozaczuk opened 6 years ago

wkozaczuk commented 6 years ago

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:

sanchiths commented 1 year 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.

wkozaczuk commented 1 year ago

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.