|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-users] OVMF Network Boot
Hi,
I'm volunteering some information about performing an EFI->iPXE->Ubuntu 14.04
network boot in an hvm with bios =
"ovmf". I couldn't find much information about getting this working so perhaps
it could be useful for other
people. There are some manual steps required but I think a startup.nsh script
could solve those.
Existing problems with Xen/OVMF:
* The emulated network card does not have an EFI compliant ROM. (I tried
passing romfile= to the qemu process
but that didn't work so I believe in the same way that hvmloader copies the
ovmf image to memory it would need
to do the same for the option rom.)
Existing problems with iPXE (git 15a8800a984239553cbbb6629e076e98a3be7537):
* http download doesn't seem to work from a menu entry even if the menu is
fetched via http
* a file downloaded for the initrd doesn't seem to be available to the linux
kernel
From the iPXE git tree I built an EFI ROM for the e1000 network card:
# make bin-x86_64-efi/8086100e.efirom
My xen configuration contains:
...
vif = [
"bridge=ovslan,model=e1000"
]
disk = [
"file:/tmp/esp.img,hda,w"
]
bios = "ovmf"
...
The esp.img file is a file with a gpt containing one partition of type ef00
formatted with mkfs.vfat -F32.
The 8086100e.efirom file has been copied in to the ESP.
I have configured a tftp server and built a combined kernel and ramdisk using
https://github.com/haraldh/mkrescue-uefi/blob/master/mkrescue-uefi.sh as a
hint. This is a workaround for ipxe
not passing the ramdisk to the kernel.
# objcopy \
--add-section .osrel=/etc/os-release --change-section-vma .osrel=0x20000 \
--add-section .cmdline="cmdline.txt" --change-section-vma .cmdline=0x30000 \
--add-section .linux="vmlinuz.efi" --change-section-vma .linux=0x40000 \
--add-section .initrd="initrd.lz" --change-section-vma .initrd=0x3000000 \
linuxx64.efi.stub combined.efi
The iPXE menu entry is:
:efi
kernel tftp://<boot_server_ip>/combined.efi
imgargs combined.efi root=/dev/nfs boot=casper netboot=nfs
nfsroot=<boot_server_ip:/nfs/mount locale=en_GB.UTF-8 keyb=gb mirror/country=GB
ip=dhcp BOOTIF=01-${net0/mac:hexhyp}
boot
The ipxe imgargs seems to overwrite the values added in cmdline.txt if
specified.
When the domU is started it should not find any bootable device and therefore
it will launch the UEFI shell.
Change to fs0: and loadpcirom 8086100e.efirom then exit. Going to the boot
manager in the EFI menu should now
show an EFI Network entry, select this and it should be a normal ipxe
experience after that.
James
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxx
http://lists.xen.org/xen-users
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |