Puppy Linux/Installation

Puppy runs live and installs to hard disk drives, USB storage devices, zip drives.

Partitioning edit

First you need to partition your disk with GParted.

Installation edit

To HDD edit

From an ISO file

To CF edit

To USB flash drive edit

If you have a running Puppy installation, or don't mind burning a CD-ROM to make one, it's probably easiest to just use its installer app to create a bootable USB flash drive. But if you don't have a running Puppy, and you can't or don't want to go through the intermediate step of burning a CD, read on. It's super easy.

Rather than an in-depth howto with a million options, this is a record of "how it worked for me" with an occasional aside of "how it might be different for you". Do expand it with more data if you try something out and know if it works or doesn't.

I used Windows XP as the host OS during installation. A very similar process should work with Linux (I'll note the difference). I don't know about OS X.

I used a 2 GB flash disk with the FAT16 file system. It should work (not tested!) just as well with a FAT32-formatted one, but not all BIOSes are smart enough to boot from a FAT32 USB device. This exact process won't work for other filesystems (but if you're curious, read up on Extlinux). Almost all flash drives you can buy today come pre-formatted as FAT16 if they 2 gigs or less, or FAT32 if they're bigger than 2 gigs.

You'll need a program that can extract files out of ISO disk images. I recommend 7zip because it's free and easy and it handles a lot more other stuff besides ISO images. You can get 7zip at [1] or pick your own poison, for example at [2].

This process is dependent on Puppy live CD images using Isolinux for bootup. If they ever stop doing that, the process won't work anymore. (Though it will probably become just a matter of writing a small config file.) The version that worked for me was puppy-4.2.1-k2.6.25.16-seamonkey.

Make the USB flash drive bootable using Syslinux edit

If you're using Windows edit

Get the Syslinux in ZIP format (or any other format if you prefer) from [3]. The version that worked for me was 3.80, but you're probably best off just getting the latest one. If you open that link, you will normally see a list of files and directories. If, for example, the current version of Syslinux is 3.81, there will be a file called syslinux-3.81.zip. Clicking or right-clicking on the file's name should cause your browser to offer you options to download and save the file.

Syslinux doesn't "install", you just need to unpack the ZIP archive to a folder of its own. In modern Windows versions, you can normally do this by just double-clicking the file's icon where ever you saved it on your computer, selecting all the contents and "copying" them to a newly-created folder.

After that, make sure your USB drive is plugged in and accessible, open the command prompt and run:

(folder where you unpacked Syslinux)\win32\syslinux.exe -m -a (drive letter of the USB drive):

So if you extracted Syslinux to the folder c:\syslinux and your USB drive letter is E:, you would run c:\syslinux\win32\syslinux.exe -m -a E:

If you're using Linux edit

Also get and unpack Syslinux, unless it is already present in your distribution like in my Linux Mint 10 Julia. As far as I can tell from the Syslinux manual you'd then need to run:

syslinux (your USB flash drive's partition)

So if your USB drive is /dev/sda and you want to install Syslinux to partition 4, you'd run syslinux /dev/sda4. Note that /dev/sda might be your hard drive so make sure you specify the right device. It is also common to have only one partition on a USB flash drive.

I don't know if this is the standard behavior but on my system the syslinux command itself did not modify the device's Master Boot Record (first sector or 512 bytes), which tells BIOS how to boot from the device, so I also had to do this from within Syslinux's folder (/usr/lib/syslinux/ in my case):

cat mbr.bin > (your USB flash device)

This prints out the contents of the mbr.bin file while the output is redirected to your USB flash drive so it rewrites the first 440 bytes of the device while leaving the rest of the device, including the remaining 72 bytes of MBR where partition information is stored, the same.

Not sure if this matters but if it still does not work for you, you can try marking the partition with the bootable/active flag with fdisk:

fdisk (your USB flash device)

Just follow the internal help or use p to show device information and list its partitions or a to mark one of them bootable/active.

I tested this on Linux Mint (Ubuntu-based) and it works.

Download and extract the Puppy live cd image file edit

Get it from [4]. Use 7zip or whatever other program to extract all files from the image into a directory of their own. You can also use the following command to mount the image file in Linux:

mount -o loop (path to .iso file) (where to mount)

You might need superuser permissions for this so just precede with sudo or switch to a superuser session by su:

sudo mount -o loop (path to .iso file) (where to mount)

Tweak and copy files edit

Among the files extracted from the ISO image, rename the file isolinux.cfg to syslinux.cfg. It's no surprise that Isolinux and Syslinux have almost the same config language. You can delete isolinux.bin, you won't need it. (Maybe some other files too - who knows?)

Modify the newly-renamed file syslinux.cfg in a text editor by changing the line append initrd=initrd.gz pmedia=cd so that instead of pmedia=cd it reads pmedia=usbflash. (If in some future installation the pmedia option is given in the kernel line instead of append, change it to usbflash there.)

Copy the files as they are now onto the USB drive. If you're doing it right, the drive's root directory should hold the files vmlinuz and pup_XYZ.sfs.

You're done edit

That's all. Set your BIOS to boot from USB and enjoy. If you are not sure how to do this, try pressing one of the Function keys (F1-F12), Delete or Escape right after powering on your PC to enter the BIOS configuration menu or boot device selection menu. This is not the same for all systems, for example on my Asus laptop F2 gets you the configuration interface and Escape the boot device selection menu while on another Hewlett-Packard laptop it takes F9 and F10 to do the same things.

You can delete the directories where you unpacked Syslinux and the image file on your hard disk if you want.