Get grub and gnulib: $ git clone git://git.sv.gnu.org/grub.git $ git clone git://git.sv.gnu.org/gnulib.git Configure Grub: $ cd grub $ ./bootstrap --no-git --gnulib-srcdir=../gnulib $ mkdir build $ cd build $ ../configure --target=x86_64 --disable-efiemu --with-platform=coreboot Build Grub: $ make -j4 $ make default_payload.elf Get coreboot: $ git clone https://review.coreboot.org/coreboot.git Build Coreboot: $ cd coreboot $ make menuconfig $ make Exchange Payload: $ build/util/cbfstool/cbfstool build/coreboot.rom remove -n fallback/payload -r COREBOOT $ build/util/cbfstool/cbfstool build/coreboot.rom add-payload -f ../grub/build/default_payload.elf -n fallback/payload -r COREBOOT $ cd .. Get minmal Linux kernel for testing purpose: $ wget https://debug.openadk.org/qemu-x86_64.img Start Qemu: $ qemu-system-x86_64 -bios coreboot/build/coreboot.rom -drive if=none,id=stick,format=raw,file=qemu-x86_64.img \ -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick -serial stdio Grub console: grub> set root=(usb0) grub> linux (usb0)/kernel grub> boot If you want to use an USB stick connected to your host you need to start Qemu as root like this. Find out your USB product and vendor id via lsusb: $ sudo qemu-system-x86_64 -bios coreboot.rom -drive if=none,id=stick,format=raw,file=qemu-x86_64.img -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick -serial stdio -device usb-host,bus=xhci.0,vendorid=0x058f,productid=0x6387