Jun 132011

Hi All,

I’ve recently been playing around with some small distributions so I can setup a tiny webcam server – no luck there yet, but I thought I’d post up how to boot Puppy over PXE as I tried that out while messing around.

Step 1 – Getting Puppy

So first thing we need to do, is to get Puppy Linux from here

wget http://distro.ibiblio.org/pub/linux/distributions/puppylinux/puppy-5.2.5/lupu-525.iso

Wget is my weapon of choice here, so the above command will download the ISO file into the current directory. I am logged in as root to set everything up so it has downloaded the iso to /root/.

After we get the ISO file, we need to extract a few files from the ISO so we can use them to boot over PXE.

mount -o loop lupu-525.iso /mnt

With the above command, we mount the ISO from the current directory onto /mnt so we can copy the files off the ISO.
Once it is mounted, we will need 3 files off the ISO:

mkdir /tftpboot/puppy/
cp /mnt/initrd.gz /tftpboot/puppy/
cp /mnt/vmlinuz /tftpboot/puppy/
cp /mnt/lupu_525.sfs /tftpboot/puppy/

With those commands, we create a directory to store the files in, and copy them over.

Step 2 – Setting it up

We will need to pack lupu_525.sfs into the initrd image for this to work as the livecd expects it to be somewhere on the boot media but we don’t have any boot media as we are booting over the network.

So what we do is make a folder so we can modify the initrd –

mkdir /tftpboot/puppy/temp

Change to that directory

cd /tftpboot/puppy/temp

Then we will extract the contents of the initrd.

zcat /tftpboot/puppy/initrd.gz | cpio -i -H newc -d

Now the contents of the initrd are in /tftpboot/puppy/temp
We’ll move the lupu_525.sfs file into the temp folder –

mv /tftpboot/puppy/lupu_525.sfs /tftpboot/puppy/temp

Then we’ll repack it up into a new initrd.gz file by running this command while inside the temp directory –

find | cpio -o -H newc | gzip -4 > ../newinitrd.gz

Now we have our new initrd.gz file, we can setup the pxelinux config file with a new menu item.

Step 3 – Setting up pxelinux.cfg

So now we will need to add the following codeblock to /tftpboot/pxelinux.cfg/default

LABEL Puppylinux
MENU LABEL Puppy Linux 5.2.5
kernel puppy/vmlinuz
append initrd=puppy/newinitrd.gz

Notice we have used the name of the newinitrd.gz file as that is the one we will need to boot from in order for Puppylinux to get the lupu_525.sfs file.

Once you have updated the configuration file, you are now ready to boot Puppy Linux 5.2.5 !