====== 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 ===== - Downloaded [[http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz]] at ///home/myname/pxeknife/// - unpacked it in ///home/myname/pxeknife/// - You will also need PXELinux [[http://syslinux.zytor.com/wiki/index.php/PXELINUX]] $ 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/ ==== Useful links ==== - [[http://syslinux.zytor.com/wiki/index.php/PXELINUX]] About pxelinux - [[http://syslinux.zytor.com/wiki/index.php/Development/Testing]] for using qemu with pxelinux.