Building “PiXiE” – Part 3

Mounting ISOs and configuring kernels for NFS boot

Firstly, I went out and got every popular spin of Ubuntu and used wget to put them in a temp folder.  After that I used the following to mount the image and copy the whole livecd over to where it belonged in the /tftpboot/ folder structure.  Here is a step by step for my Ubuntu 11.10 Desktop x86:

mkdir -p /tmp/iso
cd /tmp
wget http://www.ubuntu.com/start-download?distro=desktop&bits=32&release=latest
mount -o loop,ro  ubuntu-11.10-desktop-i386.iso iso/
cd iso
cp -r * /tftpboot/ubuntu/11/10/desktop/x86/
cd ..
umount iso 

Note: Most of the above command are repeated (alot) with different filenames and directories, so you’ll have to use some substitution and your own parameters obviously.  Creating a good directory structure in /tftpboot/ will save you some headaches I imagine.  *hint hint*

Next step is to configure each option to boot correctly.  To do this, we will be editting the menu files made in Step 2 and changing the boot parameters.  This is different depending on the boot method used, but here are my changes for the above Ubuntu 11.10 Desktop x86:

nano /tftpboot/ubuntu/ubuntu.menu

The lines we are interested in are “KERNEL” and “APPEND”.  Ubuntu uses casper, so the paths for mine are:

KERNEL /ubuntu/11/10/desktop/x86/casper/vmlinuz

APPEND initrd=/ubuntu/11/10/desktop/x86/casper/initrd.lz boot=casper text vga=789 netboot=nfs nfsroot=172.16.100.100:/tftpboot/ubuntu/11/10/desktop/x86

Note: If you are unsure of what to change the kernel or initrd parameters to you can usually search for vmlinuz in the directory you are configuring for and that should give a good indication as to what options the distro you are using is booting.  You should also double check the correct filename for both kernel and initrd (sometimes they are a bit different i.e. vmlinuz0 or initrd.gz instead of what I have above).

Once this is all said and done, we need to configure NFS by editing our /etc/exports configuration file.  Here is a excerpt from mine pertaining to the above:

/tftpboot/ubuntu/11/10/desktop/x86 172.16.100.0/24(ro,sync,no_subtree_check)

Note: There will need to be a share established for each image.

That should just about do it.  Mine is working fine here as I stated prior and I will definitely be building another to add to my lab.  Next thing to tackle is booting a few Windows flavors (for reinstalls and such)  I’ll be posting a video of the boot menu and such when I get a chance so you can see what it is like.  Hope you enjoyed the breeze through so far!  Feel free to leave any relevant questions/comments.