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:
initrd.gz
vmlinuz
lupu_525.sfs
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 !