logo

 hard-Puppy

Page updated
Oct 11, 2009

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 and pup_xxx.sfs (and maybe z*.sfs, the "zdrv") 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, EXT4 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, EXT4 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-431.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' and 'pup_xxx.sfs' (and maybe 'z*.sfs') from the CD to the partition. Normally you would place the files at '/' in the hard drive partition, but Puppy has 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 -- see the "Warning to MS Windows users" box below.

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.

Warning to MS Windows users
In the Puppy Linux forum, there are a few reports of the files on the Puppy live-CD or ISO-file being incorrectly named. Especially "PUP_430.SFS" (in the case of Puppy version 4.3) whereas the correct name is "pup-430.sfs".

What needs to be understood is that this is not a new "bug", all prior puppies have it.

The reason that you are seeing the wrong filenames is that Windows requires the ISO file (the CD image) to be created with Joliet Extensions. This is an extension to the original iso9660 filesystem. The Puppy ISO does not have Joliet Extensions as it causes problems with the multisession mode (saving sessions back to the CD/DVD).

The Puppy ISO has Rock Ridge Extensions, which is equivalent to Joliet Extensions and is the most common extension used in Linux.

If you use Windows Explorer, the Windows file manager, to look at the contents of the CD, you will see the wrong filenames, as Windows does not understand the Rock Ridge Extensions. If you use Isobuster or 7-Zip (Windows aplications) to look at the ISO, they do understand Rock Ridge and will read the correct filenames.

However, a warning about Isobuster: if you already have it installed, older versions may not be Rock Ridge aware, so upgrade to the latest.

The problem does not occur if you use a running Puppy to extract the files from the ISO or live-CD. With Puppy, all you have to do is click on an ISO file and it will be opened.

If you absolutely have to use Windows Explorer to obtain the files from the live-CD, read on. This is how Windows sees the files:
BOOT.CAT BOOT.MSG HELP.MSG INITRD.GZ ISOLINUX.BIN ISOLINUX.CFG
LOGO.16 PUP_430.SFS VMLINUZ ZP430305.SFS
For frugal install, copy the required files to the destination then rename them to (note only some builds of Puppy have the 'z*' file):
initrd.gz pup-430.sfs vmlinuz zp430305.sfs
...most important, rename PUP_430.SFS to pup-430.sfs!

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.3 frugal 
rootnoverify (hd0,5)
kernel (hd0,5)/vmlinuz root=/dev/ram0
pmedia=atahd
initrd (hd0,5)/initrd.gz

Or even just this:

   title Puppy Linux 4.3 frugal 
rootnoverify (hd0,5)
kernel /vmlinuz root=/dev/ram0
pmedia=atahd 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
Puppy 4.0 introduced a build with the 2.6.25.x 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.3 ships in three flavours, a 'standard' build with the 2.6.30.5 kernel and 'retro' builds with the 2.6.21.7 and 2.6.25.16 kernels. Only the 2.6.21.7 build has /proc/ide.
Note 2: even if you are using the newer kernels, 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, SATA or USB CD/DVD drive.

If you install the files into a sub-directory, say 'puppy430', you will need something like this:
   title Puppy Linux 4.3 frugal 
rootnoverify (hd0,5)
kernel /puppy430/vmlinuz
pmedia=atahd psubdir=puppy430
initrd /puppy430/initrd.gz
Note that extra parameter, 'psubdir=puppy430'. 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++/Vala/Genie 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.

Vala and Genie
Heh heh, if you are new to Puppy (and not totally "with it" as regards the coolest new programing languages), then you will be puzzled about Vala and Genie in the title. Read the Introduction to Genie.

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.3.1 is "431".

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 "pupsave" 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 "pupsave" file (normally named 'pupsave.2fs') is located. You just download 'devx_xxx.sfs' or any other SFS file to /mnt/home, run the BootManager to choose what SFS files you want to be loaded at bootup, then reboot.
Note, the BootManager 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.

Warning about SFS files
SFS files are great, see the Package Management Overview page. However, they have a limitation, cannot be loaded and unloaded with the BootManager if you have a full hard-drive installation of Puppy. In that situation, read the above instructions given for the "devx_xxx.sfs" file.



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

(c) Copyright 2006,2007,2008,2009 Barry Kauler 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.