logo

 hard-Puppy

Page updated
May 4, 2008

I installed PUPPY to my hard drive 30 days ago . It has run flawlessly without 1 single instance of error or lock up. I abandoned all versions of winblows some time ago and have tried near every distro of linux @ distrowatch over the past year. Some have been nice but slow even on my pentium3/256mem. Where linux is usually a titanic of an O/S and slow going PUPPY works at lightning speed and has everything i need for day to day use and then some. *

As Puppy has evolved, installation to hard drive has become easier and easier. I wrote a program, called the Puppy Universal Installer, that installs Puppy to many different media, including hard drive. In fact, it allows very specific installations, to USB, SATA or IDE hard drives -- even to a CF (Compact Flash) card plugged into a IDE adaptor ("IDE" is the standard traditional type of internal hard drive interface, so the CF-adaptor adapts the CF card to the IDE ribbon cable). The Universal Installer does not need lengthy explanations -- just use it and follow the step-by-step instructions.

You need to have a running Puppy to use the Universal Installer, so it is required to boot up the live-CD. When Puppy is running, look in the "Setup" menu and you will find an entry "Puppy Universal Installer".

Go to the Puppy download page to download the Puppy live-CD ISO file.

Is there anything you need to know before installing to hard drive?
Well, you should consider the types of partitions in your hard drive. Also, the Universal Installer supports two types of installation to hard drive:

Frugal
The files vmlinuz, initrd.gz, pup_xxx.sfs and zdrv_xxx.sfs are copied to a partition. This partition may already have something installed on it and that will not be disturbed. This can be any type of partition, MSDOS, Windows (FAT, NTFS) or Linux (EXT2, EXT3 or REISERFS). For most people this is the recommended option.
Full
A full installation, taking over the entire partition. This is the normal traditional Linux hd installation, and requires the partition to have a Linux filesystem (EXT2, EXT3 or REISERFS).

The Universal Installer will give you more advice about these options as you use it.

So, in a nutshell, you download the Puppy ISO file (live-CD), which is named something like "puppy-4.00-seamonkey.iso", burn it to a CD, then reboot the computer. You should then have a running Puppy, and you just go to the "Setup" menu and you will find "Puppy Universal Installer".

Some people like to do a frugal install of Puppy manually, and this is quite simple also. You choose what partition, then copy the files 'vmlinuz', 'initrd.gz', 'pup_xxx.sfs' and 'zdrv_xxx.sfs' from the CD to the partition. Normally you would place the files at '/' in the hard drive partition, but for versions after 2.16 we have support for installing into a subdirectory.
Note: if you do this from Windows, you may see the files on the CD are upper-case characters, so after copying them to the hard drive partition please rename them to lower-case letters.

Note, the manual copying of files to the hard drive is also how you can do a version upgrade. Very simple, just replace the old files with the new ones.

If you do a manual frugal install, you will then have to think how to get Puppy to boot. Some notes on this follow...

WakePup to boot from floppy

Most PCs support booting from a floppy drive. If not already configured, it is a matter of invoking the BIOS setup when the PC first powers-up. Most often this is done by pressing the DEL key, but some PCs require a function key to be pressed, such as F2. Then, what is called the "boot order" can be setup, and you would typically set CD drive first then hard drive, or you can include a USB drive or floppy drive in the boot-check sequence.

Puppy has something special, called WakePup, developed by Puppy enthusiast pakt (forum name) -- look in the "Setup" menu and you will see an entry "WakePup create boot floppy". This will create a floppy disk that your PC can boot from. The WakePup floppy disk scans the PC and finds Puppy on a USB drive, hard drive, or CD/DVD drive.

Note however, as it is a DOS-based system WakePup can only recognise ISO9660 and FAT filesystems. CDs use the ISO9660 filesystem for holding files, so that is okay. USB pen drives are usually formatted with FAT16 filesystem, so that is also okay. MSDOS and Windows 95/98 installations are in hard drive partitions with FAT filesystems, so again okay.

WakePup will recognise Puppy installed in a NTFS (Windows XP) hard drive partition, but this is currently experimental. WakePup will not recognise Puppy in a Linux partition.

Configuring GRUB or LILO

This is a good link for learning all about GRUB:
http://www.troubleshooters.com/linux/grub/grub.htm -- "GRUB from the ground up"

Pizzasgood has contributed this:
http://www.murga-linux.com/puppy/viewtopic.php?t=9965 -- "Using LILO to boot Puppy"

Here are some notes on the forum about configuring GRUB for Puppy:
http://www.murga-linux.com/puppy/viewtopic.php?t=1598&postdays=0&postorder=asc&start=48

The Universal Installer uses GRUB, and this is generally superior to LILO (personal opinion!). If you do a manual frugal install of Puppy to a hard drive partition, it is quite easy to add another menu entry for GRUB, if you already have GRUB installed. GRUB would be installed to one of the partitions on your hard drive, normally in directory /boot. Most likely in directory /boot/grub you will find a file named 'menu.lst' -- open that with a text editor and add the new entry.

Say that you have done a frugal install to partition 'hda6' and you have the Puppy files in the '/' top directory of the partition. Then an extra entry in menu.lst like this should do it:

   title Puppy Linux 4.00 frugal 
rootnoverify (hd0,5)
kernel (hd0,5)/vmlinuz root=/dev/ram0
pmedia=idehd
initrd (hd0,5)/initrd.gz

Or even just this:

   title Puppy Linux 4.00 frugal 
rootnoverify (hd0,5)
kernel /vmlinuz root=/dev/ram0
pmedia=idehd initrd /initrd.gz

Note1, please leave the 'root=/dev/ram0' out if booting Puppy version 3.00 or later. That is, remove that text entirely.
Note2, the 'pmedia' parameter is a helpful hint that assists Puppy to determine the type of boot media and to configure everything correctly to run from that media. This parameter an be any one of these:

Kernel with /proc/ide...
usbflash usbhd usbcd ideflash idehd idecd idezip satahd satacd scsihd scsicd cd
OR, kernel without /proc/ide (libata PATA)...
usbflash usbhd usbcd ataflash atahd atacd atazip scsihd scsicd cd
Puppy4 introduces a build with the 2.6.25 kernel and the new libata PATA system for handling IDE drives. You can tell this when you run Puppy as the /proc/ide directory will be missing.
Note 1: Puppy 4.00 ships in two flavours, a 'standard' build with the 2.6.21.7 kernel (same as for Puppy 3.01) and another build with the 2.6.25 kernel.
Note 2: even if you are using the new 2.6.25.x kernel, the older naming for 'pmedia' should still be ok (Puppy will internally do a conversion).

Note, if you leave off the 'pmedia' parameter, Puppy will do a best-guess and will probably guess correctly. Extra note: also, if booting from live-CD/DVD, 'pmedia=cd' is sufficient, as Puppy is able to work out whether it is a IDE or USB CD/DVD drive (well, SATA CD drives are now coming onto the market, and we will support those too).

If you install the files into a sub-directory, say 'puppy400', you will need something like this:
   title Puppy Linux 4.00 frugal 
rootnoverify (hd0,5)
kernel /puppy400/vmlinuz
pmedia=idehd psubdir=puppy400
initrd /puppy400/initrd.gz
Note that extra parameter, 'psubdir=puppy400'. Puppy may work without that, but it is a guide that helps to decide where to look for the Puppy files.

If you have done a full-install to say hda6, then you will need something like this:
  title Puppy Linux full-install (on /dev/hda6)
  root (hd0,5)
  kernel /boot/vmlinuz root=/dev/hda6 ro vga=normal

C/C++ compiling

Puppy has a very simple system for converting into a complete compiler environment, in which you can run the usual "configure", "make" and "make install" on a downloaded source package. At least, it's very simple in the case of running Puppy from live-CD: see web page Puppy on a CD.

All of the tools required for compiling are in one single file, named devx_xxx.sfs, where the "xxx" is the Puppy version number -- for example, Puppy version 4.00 is "400".

If you do a frugal install, it is also very easy to use the SFS files, exactly as for a live-CD. Once you have created a "pup_save" file (a file to save your personal data, which you will do on the first shutdown), then you will find directory '/mnt/home' pointing to the mounted partition where the "pup_save" file (normally named 'pup_save.2fs') is located. You just download 'devx_xxx.sfs' or any other SFS file to /mnt/home, run the "SFS Boot Manager" to choose what SFS files you want to be loaded at bootup, then reboot.
Note, the SFS Boot Manager is in the "System" menu.

Currently, installing the "devx" file in a Type 2 (full) hard drive installation is more complicated, and you can't undo it. It involves some steps....

2. Click on the devx_xxx.sfs in a ROX-Filer window to mount it.
3. Open a terminal in the mounted directory.
6. # cp -a --remove-destination ./* /mnt/hda2/
7. # sync
8. Close the terminal.
9. Click on the devx_xxx.sfs file to unmount it
Note, the '--remove-destination' option is essential. If you only use '-f' to force overwrite, it will follow (dereference) a symlink, that can cause unexpected overwrites.


Disclaimer: Installing Puppy to hard drive is something that you do entirely at your own risk.

(c) Copyright 2006,2007,2008 Barry Kauler www.puppylinux.com
No part of this page is to be reproduced anywhere else. I have found that there is a problem where parts of my web pages are being inserted at other sites, then not updated, whereas I am updating my pages regularly. This is not a desirable situation, so please just link to my pages.