-
-
Notifications
You must be signed in to change notification settings - Fork 607
OSv vmlinuz boot
OSv comes with build artifact build/x64/vmlinuz.bin that essentially wraps the uncompressed version of OSv loader.elf by prepending it with 1K-long vmlinuz header and 1K-long bootstrap code that orchestrates jumping to 32-bit start32_from_vmlinuz entry point in boot.S.
Please note that OSv vmlinuz.bin requires bootloader to load it in the physical memory at the address OSV_KERNEL_BASE-0x400 which is expressed by setting the header field relocatable_kernel to 0 and the field pref_address to point to the aforementioned address. Unfortunately, some bootloaders (like QEMU) disregard the relocatable_kernel
field and load the kernel at some presumed fixed address determined by the value of the version header field (see the document below). For details about vmlinuz format see this document - https://www.kernel.org/doc/Documentation/x86/boot.txt
The vmlinuz mode allows OSv to boot on Docker's hyperkit hypervisor on Mac OSX.