Embedded notes

Quick notes on embedded systems, electronics and CNC

PXE Booting Puppy Linux

PXE booting Puppy Linux is actually quite easy if you already have a PXE server up and running. The idea is simple: Add the *.sfs file containing the file system into the initrd and use this for booting.

This post assumes your tftpserver is already set up and serves files from /opt/tftpboot.

The description at [PXE-Netbooting using Puppy Linux]https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1# tells you in detail what to do to get it working using a Puppy Linux Server Host. But it does not list the (few and simple) steps needed to get it running on an existing PXE server.

Mount the iso image (do all these steps as root):

mount puppy.iso /mnt

Copy the kernel into your tftp directory:

mkdir /opt/tftpboot/puppy
cp -av /mnt/vmlinuz /opt/tftpboot/puppy

Unpack the initrd (as root):

mkdir /tmp/x
cd /tmp/x
zcat /mnt/initrd.gz | cpio -i

Add the *.sfs file from the iso and repack the initrd:

cp -av /mnt/*.sfs .
find . | cpio -o -H newc | gzip -9 > /opt/tftpboot/puppy/initrd.gz

Add this to your /opt/tftpboot/pxeboot.cfg/default:

# Puppy Linux
LABEL puppy
MENU LABEL PuppyLinux
KERNEL /puppy/vmlinuz
APPEND initrd=/puppy/initrd.gz

Done!