23 May 2012 00:47
XenServer 6.0 PV support request for ipxe
This is a change request for ipxe to build as a bzImage instead of a zImage and for xen virtual network interface (netfront) support in ipxe.
I have recently tested ipxe.lkrn with XenServer 6.0 to load a PV RHEL 6 instance and found that the domain builder guts of xen require the newer bzImage format. We are slowly switching to VMs on XenServer but have an extensive pxe build system that we would like to continue to use. PXE works with fully virtualized guests (HVMs and Qemu) but not the more efficient paravirtualized systems.
To test the PV build I did the following
cp ipxe.lkrn to build server under http://<server>/<path1>/<path2>/ipxe.lkrn
setup RHEL 6 VM from Citrix template
set the boot path to http://<server>/<path1>
set the VM to NOT start automatically
changed the kernel and initrd that would be requested with the following
xe vm-param-set uuid=<vm-uuid> other-config:install-kernel=<path2>/ipxe.lkrn
xe vm-param-set uuid=<vm-uuid> other-config:install-ramdisk=None
edited the /usr/bin/eliloader script used by XenServer to turn on debugging.
log_details = True
# Set this if you want to see verbose logging on both me and my pygrubs
When I started the VM it failed with "xc_dom_probe_bzimage_kernel: boot protocol too old (0207): Invalid kernel". The full syslog entries for eliloader is below. (The bold highlights are mine.) Note that the loader copies ipxe.lkrn locally to vmlinuz-QxLM_u, which I verified via md5sum. Also the domainbuilder part of xen can use ELF-generic and multiboot-binary formats in addition to the bzImage format in case one of those makes more sense.
Lastly, the netfront virtual network interface of xen is (partially?) documented here.
http://wiki.xensource.com/xenwiki/XenNetFrontBackInterface
Note: If someone knows of another way to get access to our pxelinux/menu.c32 entries that works with xen PVs let me know. A modified ipxe.lkrn seems like the sanest solution I could come up with.
Thanks,
Peter
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT
[12703] domainbuilder: detail: ### ----- xc domain builder logfile opened -----
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT
[12703] domainbuilder: detail: xc_dom_allocate: cmdline="graphical utf8 method=h
ttp://ksimage.fsl.noaa.gov/pxe-boot/", features=""
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_kernel_file: filename="/var/run/xend/boot/vmlinuz-QxLM_u"
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_malloc_filemap : 355 kB
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_ramdisk_file: filename="/var/run/xend/boot/ramdisk-H6wzN4"
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_malloc_filemap : 27917 kB
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_boot_xen_init: ver 4.1, caps xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_parse_image: called
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader: trying ELF-generic loader ...
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: loader probe failed
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader: trying Linux bzImage loader ...
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] xc: error: panic: xc_dom_bzimageloader.c:563: xc_dom_probe_bzimage_kernel: boot protocol too old (0207): Invalid kernel
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: loader probe failed
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader: trying multiboot-binary loader ...
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: loader probe failed
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] xc: error: panic: xc_dom_core.c:540: xc_dom_find_loader: no loader found: Invalid kernel
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22 16:12:41 MDT [12703] domainbuilder: detail: xc_dom_release: called
May 22 16:12:41 nemesis xapi: [error|nemesis|218002|Async.VM.start R:f95845c19327|xenguesthelper] Received: xc_dom_linux_build 2 panic: xc_dom_core.c:540: xc_dom_find_loader: no loader\"
<div>
<br>
This is a change request for ipxe to build as a bzImage instead of a
zImage and for xen virtual network interface (netfront) support in
ipxe.<br><br>
I have recently tested ipxe.lkrn with XenServer 6.0 to load a PV
RHEL 6 instance and found that the domain builder guts of xen
require the newer bzImage format. We are slowly switching to VMs on
XenServer but have an extensive pxe build system that we would like
to continue to use. PXE works with fully virtualized guests (HVMs
and Qemu) but not the more efficient paravirtualized systems.<br><br>
To test the PV build I did the following<br><br>
cp ipxe.lkrn to build server under
<a class="moz-txt-link-freetext" href="http://">http://</a><server>/<path1>/<path2>/ipxe.lkrn<br><br>
setup RHEL 6 VM from Citrix template<br>
set the boot path to <a class="moz-txt-link-freetext" href="http://">http://</a><server>/<path1><br>
set the VM to NOT start automatically<br><br>
changed the kernel and initrd that would be requested with the
following<br>
xe vm-param-set uuid=<vm-uuid>
other-config:install-kernel=<path2>/ipxe.lkrn<br>
xe vm-param-set uuid=<vm-uuid>
other-config:install-ramdisk=None<br><br>
edited the /usr/bin/eliloader script used by XenServer to turn on
debugging.<br>
log_details = True<br>
# Set this if you want to see verbose logging on both me and
my pygrubs<br><br>
When I started the VM it failed with "xc_dom_probe_bzimage_kernel:
boot protocol too old (0207): Invalid kernel". The full syslog
entries for eliloader is below. (The bold highlights are mine.)
Note that the loader copies ipxe.lkrn locally to vmlinuz-QxLM_u,
which I verified via md5sum. Also the domainbuilder part of xen can
use ELF-generic and multiboot-binary formats in addition to the
bzImage format in case one of those makes more sense.<br><br>
Lastly, the netfront virtual network interface of xen is
(partially?) documented here.<br>
<a class="moz-txt-link-freetext" href="http://wiki.xensource.com/xenwiki/XenNetFrontBackInterface">http://wiki.xensource.com/xenwiki/XenNetFrontBackInterface</a><br><br>
Note: If someone knows of another way to get access to our
pxelinux/menu.c32 entries that works with xen PVs let me know. A
modified ipxe.lkrn seems like the sanest solution I could come up
with.<br><br>
Thanks,<br>
Peter<br><br><br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT <br>
[12703] domainbuilder: detail: ### ----- xc domain builder logfile
opened ----- <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT <br>
[12703] domainbuilder: detail: xc_dom_allocate: cmdline="graphical
utf8 method=h<br>
ttp://ksimage.fsl.noaa.gov/pxe-boot/", features="" <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_kernel_file:
filename="/var/run/xend/boot/vmlinuz-QxLM_u" <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_malloc_filemap
: 355 kB <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_ramdisk_file:
filename="/var/run/xend/boot/ramdisk-H6wzN4" <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_malloc_filemap
: 27917 kB <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_boot_xen_init:
ver 4.1, caps xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64 <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_parse_image:
called <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader:
trying ELF-generic loader ... <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: loader probe failed <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader: trying
Linux bzImage loader ... <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] xc: error: panic: xc_dom_bzimageloader.c:563: xc_dom_probe_bzimage_kernel:
boot protocol too old (0207): Invalid kernel <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: loader probe failed <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_find_loader: trying
multiboot-binary loader ... <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: loader probe failed <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] xc: error: panic: xc_dom_core.c:540:
xc_dom_find_loader: no loader found: Invalid kernel <br>
May 22 16:12:41 nemesis /opt/xensource/libexec/xenguest: 2012-05-22
16:12:41 MDT [12703] domainbuilder: detail: xc_dom_release: called <br>
May 22 16:12:41 nemesis xapi: [error|nemesis|218002|Async.VM.start
R:f95845c19327|xenguesthelper] Received: xc_dom_linux_build 2
panic: xc_dom_core.c:540: xc_dom_find_loader: no loader\"<br><br>
</div>
RSS Feed