Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Enable EFI Loader to load FreeBSD Xen Dom0 ====== * Student: Kristaps Čivkulis (kristaps.civkulis@gmail.com) * Mentor: Roger Pau Monné (royger@freebsd.org) ===== Project description ===== Currently only BIOS %%FreeBSD%% Loader can load Xen kernel which then uses %%FreeBSD%% as Dom0 (Control domain). The EFI %%FreeBSD%% Loader can’t load Xen kernel, because it can’t load multiboot2 compliant binaries. The first part of project is to add multiboot2 protocol support to EFI %%FreeBSD%% Loader, so that it will be able to load Xen kernel (multiboot2 support is useful feature in itself, even if it wasn’t related to Xen Kernel). The second part of project is to correctly pass all the needed information to Xen kernel (using multiboot2 protocol) so that it can load %%FreeBSD%% kernel as Dom0. ===== Approach to solving the problem ===== Study multiboot2 protocol and get familiar with source code in stand/. At first I will try to understand how EFI %%FreeBSD%% loader currently behaves when it loads %%FreeBSD%% kernel and when it loads Xen kernel, so that I can see where loader starts to behave differently. I guess that will the place where I will add my code. I will refer to currently implemented multiboot1 support under BIOS loader. ===== Deliverables ===== * Add a file parser to EFI %%FreeBSD%% loader to check if given binary file is multiboot2 binary. * Add multiboot2 features one by one, so that EFI %%FreeBSD%% Loader can be tested by loading simple binaries which use only subset of multiboot2 features. * Correctly boot Xen Kernel. * Pass all the needed information to Xen Kernel so that it can load %%FreeBSD%% kernel as Dom0. ===== Milestones ===== * May 14th: * Read source code, study current EFI Loader * May 21st: * Read multiboot2 protocol and implement multiboot2 parser * May 28th: * Start working on loading Xen kernel * June 11th - June 15th: Mid-term Evaluations #1 * I should be able to boot Xen kernel by now * June 15th: Get a machine with serial port. * July 9th - July 13th: Mid-term Evaluations #2 * August 6th: End of coding (soft) * You may wish to use this time to complete documentation etc * August 14th: End of coding (hard) ===== Test Plan ===== I can test multiboot2 implementation by trying to load simple multiboot2 binaries inside QEMU. Second part can be tested by trying to boot %%FreeBSD%% Xen Dom0 on bare-metal. ===== The Code ===== The first deliverable: https://github.com/kristapuciitis/freebsd/tree/gsoc2018_first_eval https://github.com/kristapuciitis/freebsd/tree/gsoc2018 ===== Notes ===== ===== Useful links ===== multiboot2 specification: https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html summerofcode2018projects/efiloaderforxendom0.txt Last modified: 2018/06/14 06:41by KristapsCivkulis