Table of Contents

Get PXE Knife working with QEMU

If you dont know what is PXE Knife, better visit http://pxeknife.erebor.org/ because I will be assuming you know all on that site.

Get PXE Knife working with QEMU with tftp

  1. Downloaded http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz at /home/myname/pxeknife/
  2. unpacked it in /home/myname/pxeknife/
$ mkdir /home/myname/for_pxe_knife/
$ wget http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz
$ cd /home/myname/for_pxe_knife/
$ tar -xvf ../pxeknife-0.0.2.tar.gz
$ cp /usr/lib/syslinux/pxelinux.0 .
$ cp /usr/lib/syslinux/*.c32 .
$ cp /usr/lib/syslinux/memdisk .
$ mkdir pxelinux.cfg
$ vi pxelinux.cfg/default

Now, the content of my pxelinux.cfg/default file is

DEFAULT menu.c32
    PROMPT 0
    TIMEOUT 100 #this is optional - will start the default after 10 seconds
    MENU TITLE --== Main Menu ==--

    #this allows you to exit the pxe stack and pass booting to the local system
    LABEL bootlocal
        MENU DEFAULT
        MENU LABEL Local Boot
        localboot 0


    #load pxe knife
    LABEL pxeknife
        MENU LABEL PXE Knife --->
        kernel menu.c32
        append pxeknife/pxeknife.conf
$ cd gpxe/bootables/
$ qemu-img create -f raw testing.img 10M

Here is the code which is working for

$ qemu -net nic -net user -boot n -hda ./testing.img -bootp /pxelinux.0 -tftp /home/myname/for_pxe_knife/
$ qemu -net nic -net user -fda ./gpxe.dsk -bootp /pxelinux.0 -tftp /home/myname/for_pxe_knife/

for following version of qemu version qemu version 0.10.0

$ qemu
QEMU PC emulator version 0.10.0, Copyright (c) 2003-2008 Fabrice Bellard

Problems

As per me following command should have worked, but It did not worked

$ qemu -bootp tftp://10.0.2.2//pxelinux.0 -tftp /home/myname/for_pxe_knife/ -fda gpxe.dsk

at same time command

$ qemu -bootp /pxelinux.0 -tftp /home/myname/for_pxe_knife/ -fda gpxe.dsk

works.

Problem faced is,
it successfully downloads the pxelinux.0 and executes it, but it fails when it is downloading pxelinux.cfg/default
It gives an error saying

TFTP prefix: tftp://10.0.2.2//
Trying to load: pxelinux.cfg/default
Unable to locate configuration file

Boot failed: press a key to retry, or wait for reset...

Note : There are some versions of qemu for which network boot option did not worked.

$ qemu -net nic -net user -boot n -hda ./testing.img -bootp /pxelinux.0 -tftp /home/minix-pravin/Etherboot/v2/pxeknife/pxeknife/ 
No valid PXE rom found for network device

Above error came for qemu version 0.9.1

$ qemu
QEMU PC emulator version 0.9.1, Copyright (c) 2003-2008 Fabrice Bellard

But if you provide gpxe.dsk instead of ./testing.img it uses gpxe.dsk stack and boots properly.

$ qemu -net nic -net user -fda ./gpxe.dsk -bootp /pxelinux.0 -tftp /home/minix-pravin/Etherboot/v2/pxeknife/pxeknife/