-
-
Notifications
You must be signed in to change notification settings - Fork 606
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.