<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <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/<b>vmlinuz-QxLM_u</b>" <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:<b>
      trying ELF-generic loader</b> ...  <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: <b>trying
      Linux bzImage loader </b>...  <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: <b>xc_dom_probe_bzimage_kernel:
      boot protocol too old (0207): Invalid kernel </b><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: <b>trying
      multiboot-binary loader</b> ...  <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>
  </body>
</html>