Linux Goodies

In Pursuit Of The Perfect O/S



A Review of The Incredible Puppy Linux System

Amazon Computers

The Efficient, Friendly Puppy Linux

Perhaps one of the most efficient and easy to use Linux versions is Puppy Linux. It comes in a number of different flavors, and the Puppy Linux Variety Pack - Slacko, Racy, Wary, Lucid, and Macpup on one CD sampler offers many of them. It's the OS that I now use almost exclusively. The way the Frugal install options works for puppy (described more later), it's possible to have all of the variations on the sampler CD on one partition of your computer, and boot to any one of them.

I started with a version called Puppy 431, which was the version right at the start of a big expansion of Puppy. I've also used Puppy Lucid and Puppy Slacko. Lucid is derived from Ubuntu, a large Linux distro available online and on the Ubuntu Linux 14.04 Special Edition DVD. Puppy Slacko is derived from Slackware, another larger distro available online and on the Slackware 14 Linux DVD 64-bit Full Installation DVD set. Puppy variations tend to look and feel similar, but their package manager pulls most heavily from the Linux distributions from which they are derived.

Below you see the screen display of Puppy Linux 5.10. It's called Lucid Puppy since it's derived from the Lucid Ubuntu distribution. This screen shot is shrunken a bit to better fit on the web page, but you can click on it to get a full sized view.

puppy linux display

As you can see it's a very esthetically pleasing interface. Notice also that it's an iconic system, with application icons on the screen. Incidentally, the icons you see are the ones in the basic Lucid Puppy distro -- I haven't added any additional ones. That's just an example of how functionally packed Puppy Linux is.

Older versions were based on the SLAX version of Linux. Puppy Linux 4.31 was not derived directly from anything, but a unique concoction. The only dilemma I found with that was finding some of the more arcane applications I like. They weren't in the Puppy archives. I'm excited by the 5.10 version in that it is derived from a distribution that has a multitude of applications available.

You can see that the desktop in Puppy Linux 5.10, based on the popular yet light-duty JWM window manager, also has conveniences that a typical Microsoft Windows user might appreciate. It has some handy iconic utilities at the right of the screen, including a trashcan, file archival utility, and a screen lock utility. At the bottom of the screen is a toolbar with a Menu Button. Clicking on the Menu button will bring up the menu already packaged with a substantial number of utilities, helpers, and applications. Right clicking anywhere in the background also brings up the menu.

If you are a Windows user, you may wonder what the 4 squares are on the toolbar just to the right of the launch icons. Linux users will recognize them as additional work spaces. In most Linux window managers, you can have windows opened up on more that one work space, and toggle between them. It helps enormously in keeping work spaces manageable.

Loaded With Pre-installed Apps And Icons

Puppy Linux Icons

Above you see an exploded view of the desktop icons that come with the Lucid Puppy install.

Hopefully it is obvious that Puppy Linux comes ready to work, with applications for most things a computer user usually wants to use.

Most of these applications are quite functional, yet fairly light in terms of resource requirements. The applications are a good compromise between function and size.

An explanation of the applications launched by the icons is listed below:

What's Launched
fileLaunches the sophisticated ROX File Manager
helpLaunches the efficient Netsurf browser on a handy help page that gives quick links to many setup functions
setupOffers multiple setup utilities
consoleLaunches a terminal window allowing keyboard commands
writeLaunches the excellent Abiword full-featured word processing program
calcLaunches the Gnumeric spreadsheet
paintLaunches the mtpaint program, handy but not heavy in resource requirments
drawLaunches the handy inkscape lite drawing program
browse1st time gives the user a short list of browser options, including Firefox, Seamonkey, Opera, and Netsurf. Pick one and it will be installed for you. After that, the icon will launch your chosen browser
emailLaunches the light-weight sylpheed email client
chatLaunches the universal, instant ayttm chat client
planLaunches the compact but feature-rich osmo personal organizer
playLaunches gnome-mplayer, a nice GUI interface to the Linux mplayer utility
connectHelps you get your Lucid Puppy connected to the internet, using either your lan or wireless interface
quickpetLaunches a utility that lets you locate and install many other applications from either the Puppy archive or the Lucid Ubuntu archive

Easy To Setup With Many Menu Helpers

Puppy Linux Setup Menu

Puppy Linux is designed to be light in resource requirement, easy to use, easy to install, and able to run completely and permanently from the CDROM distribution if you wish.

Puppy Linux is so small that if you have at least 256 Megabytes of memory, it will load entirely into memory. This lets you remove the CDROM, freeing it up for some other purpose.

Setup and configuration are easily accomplished, as is indicated by the many options shown on the displayed Setup menu entry. Sound, printing, networking, video, and more can be configured from this menu.

Notice that also on the menu is an option to install Puppy Linux to a usb drive. This makes Puppy Linux even handier, as it can be then booted from a usb stick on any computer that allows booting from usb.

Lots More Applications Where Those Came From

Don't assume that the only applications in the Puppy Linux distro are the icons on the desktop.

As just a quick example, examine the Document menu selection below. Listed are several easy to use editors, a dictionary program that lets the user lookup words from many different dictionary options, a PDF viewer, and a clever utility that converts files of many different formats to PDF format by way of Abiword.

Puppy Linux Editors

In addition, you can see that on this menu entry are listed the OpenOffice word processor and the SeaMonkey HTML composer, both of which I added after I installed Puppy. The Puppy Linux system automatically entered them into the menu system after they were installed.

Familiar Window Management With JWM

Puppy Linux Toolbar

Above you see a normal sized view of the left portion of the Puppy Linux Toolbar. Like most highly functional desktop managers, the JWM window manager gives the user a Menu button, some handy quick-launch mini-icons, and a selectable number of work spaces. Moving to work spaces is as easy as clicking on one, or using the Alt-1, Alt-2 etc. keys to move to spaces 1, 2, ... respectively.

Note also the media icons just above the toolbar. Whatever discs or other media are available are always immediately displayed in icon form near the bottom left of the screen. The X shown on the sda1 disk indicates that it is mounted and is the save file disk. Also shown in this example is the CDROM. If I plug in a usb stick, an icon will appear for it as well.

Clicking on a disk icon will mount the drive and launch the ROX file manager on the newly mounted disk.

Behind The Magic

Puppy Linux is a marvel in design. With many Linux distros you get a live CD you can boot and crudely operate from, but it's primarily an install CD, not really meant to be consistently used from a CD boot. Other distros are only install CDs, and do not boot directly to a usable OS at all.

Puppy Linux is both a functional boot CD and install CD, and you can choose to not install at all since it can work effectively from the CD. When you shutdown Puppy Linux, it gives you the option of saving all the work you've done in a specially designed save file. This file maintains the directory structure of where you worked, which will be restored next time you boot. This file, by the way, can exist on a Linux or a MS Windows system. So no matter what OS you normally use, you can boot Puppy Linux, work, and save your work with no impact on the host installed OS.

One of the most magical ways to use Puppy Linux is to install it onto a USB disc. Then when you shut down the first time, specify (you'll be given the option) to keep the save file on the USB stick along with the install. In this way, you have a totally portable OS, neatly and compactly stored on your bootable USB, complete with saved data. You can work on most any modern computer with absolutely no impact on the computer's hard disk install.

So how is it done?

Puppy Linux makes very effective use of the Union FS file management system. This is a stacking file system that lets different representations of overlapping directory structures exist, and presents them as a coherent directory structure. Below is an example display of what the df command would yield on a Puppy Linux system. It shows a number of /dev/loop mounts, which are all union fs, overlapping mounts.

Puppy File System

The union fs allows a base directory structure to exist in a read-only form, with a read/write overlay that maps onto it. Whenever a file is updated, it gets stored in the overlay structure. Making clever use of this, Puppy Linux has its CD file system in a read-only base directory layout, and uses the save file as a union fs overlay, which it can save on any medium you specify.

Each time you boot back into Puppy Linux, you get an un-corrupted read only system install, and your save file automatically overlaid onto it, revealing all unmodified and modified as well as new files. It's all transparent to you, and feels completely like a normal directory structure.

How Is It Different From Most Linux Versions?

Puppy Linux in most aspects is Linux, much as you've experienced it before if you are a Linux user.

While similar to other versions of Linux in most aspects, Puppy Linux is simpler in one particular way that you'll notice. It has by default only one user -- root. It's possible to add other users, but it's initially configured as a one person system.

In order to better accommodate non-Linux users, it also has a slightly different directory structure. Many of the old standards are still there, like /usr/bin, /usr/sbin, /etc, and so on. But to make it more familiar to non-Linux users, the user root directory has a my-applications directory and a my-documents directory. Once you get used to that, you're over the hump.

The newer Lucid Puppy Linux 5.10 distro looks and feels much like the earlier Puppy Linux distros. But it has one distinct difference that to me may turn into a big deal. Puppy's creator, Barry Kauler, is a master script file writer, among other things. And he's been working on a utility he calls Woof, like the daddy of Puppy Woof can be used to create new versions of Puppy Linux from other existing distros. And as mentioned before on this page, Puppy Linux 5.10 is derived from the Lucid version of Ubuntu.

I can't be sure what Barry's intentions are, but one possibility is that future Puppy Linux versions will have much bigger archives from which to obtain other software. I was able, for example, to install vim, Yorick, and links2 directly from the Ubuntu archive. It saved me a lot of looking.

As part of the clever use of the union fs system, Puppy Linux has some of the larger commonly used utilities already packaged in forms that overlay onto the union fs directory system. These carry the extension .sfs. For example, I have an sfs file for the OpenOffice install, one for the Tex text markup language install, and one for the c programming development utilities install.

These (and other) sfs files can be placed at the root directory of your install partition, and Puppy Linux can find them. You can use a boot manager utility to instruct Puppy Linux as to which of these to always mount at boot up. This technique is nice because these large applications, installed this way, don't take up space in your save file.

Installing Puppy Linux

On Your Hard Drive

While Puppy Linux works fine by just booting from the CDROM and having a save file on your disk, you can choose to install it. Puppy will install using the classic method, creating the entire directory structure on a hard disk partition and copying all files there. Of course, this will destroy anything else you already have on that partition, as with any other OS install. Or, Puppy Linux can be installed with a much more elegant method.

That method is called the Frugal Install. It's pretty simple, and is the form that makes the best use of the union fs system. In the Frugal install method, the installer simply copies the files on the CDROM to a directory on your install partition (at the root level). It can coexist with something else already installed on that partition.

The next step is setting up a GRUB boot loader that will boot the vmlinuz file in that directory, and load the initrd.gz file, also in that directory. When booted this way, Puppy Linux immediately looks for the save file, and if found, maps that onto the union fs directory system. Then it loads the CDROM image, which is also an sfs file.

When installing Puppy to my hard disk, which already has Windows and Xubuntu, I've found it best to boot to Xubuntu and modify its grub.cfg file and install that, rather than to try building the Grub from within Puppy Linux. An example of the Xubuntu grub2 entry for Puppy Linux is as follows:

menuentry "Lucid Puppy (on /dev/sda6)" {
insmod ext2
set root=(hd0,6)
linux /lupu-510/vmlinuz psubdir=lupu-510
initrd /lupu-510/initrd.gz

Of course, you would need to replace the /dev/sda6 reference to reflect where you placed Puppy Linux, and set the directory name (lupu-510 in example) to reflect the directory name where you stored the CDROM files.

On my Debian Lenny desktop system, the older grub is installed, which uses the file menu.lst as its setup file. My menu.lst entry for booting Puppy Linux is as follows:

# Puppy Linux
title Puppy Linux
rootnoverify (hd0,5)
kernel /lupu-510/vmlinuz pmedia=satahd psubdir=lupu-510
initrd /lupu-510/initrd.gz

Again, you'd need to adjust the (hd0,5) reference to reflect your install partition (remember, the old grub starts with partition 0). Also, you'd need to adjust the directory name (lupu-510 in example) to reflect the name of the directory where you copied the Puppy Linux CDROM files (lupu-510 in the example).

It turns out that the Frugal install, aside from being simple and able to coexist with another install on the same partition, is easy to upgrade. Just download a new version of Puppy Linux, make another directory at the partition level, and copy the CDROM files into it. Adjust Grub to either reference this install instead, or add a new entry and still leave the older Grub reference in place.

If you install a new version of Puppy Linux with the Frugal method, as with any other Linux you'll have to also re-install any additional software with the Puppy Linux package manager utility. The new install will make a new save file. You can use the ROX file manager to open your old save file and copy any files you need into your new save file.

On Your USB Stick

Under the Install icon, Puppy Linux includes an install especially for your USB drive or stick. To make use of it, you need to know a couple of things:

  • Have a copy of the Puppy Linux iso file available. The install will ask you where it is.

  • The USB drive or stick will be reformatted by the install -- be sure to save anything you want from it before installing.

  • Personal Experience One, Puppy On An Old Laptop

    I started my trek into Puppy Linux land with version 4.31. My driving need was for an operating system to upgrade my old Win98 era Dell Laptop. I had managed to get Debian Etch on it a few years back, but wanted to upgrade since Etch was falling out of support.

    So I tried to install Debian Lenny.

    No soap.

    There were no network drivers on the Lenny install floppies or CD that worked with any of my PCMCIA network cards. And my poor old laptop CD drive is just short of giving up the ghost, so installing from a pile of CDs just wasn't feasible.

    Enter Puppy Linux 4.31. Puppy Linux installed quickly and easily from a single CD, something my old laptop could manage. I did the Frugal install, and for good measure, did another install on a second partition -- hedging against a total CD failure. It worked great.

    I was worried that my old laptop wouldn't have enough memory to run Puppy Linux, which needed at least 128MB to load entirely into memory. My old laptop only has 83MB.

    No problem. While Puppy Linux will load entirely into memory if possible, it doesn't have to in order to function properly. Things load a bit slower I imagine, but certainly no slower than when using a typical Linux system.

    What amazed me most, given all the troubles I had trying to install Debian distros because of my network dilemma, was that Puppy Linux 4.31 immediately identified my wireless network card, and in minutes I was up and running. The only problem was that it didn't always bring up the card after boot, so I created a simple batch file that finished the job.

    However, on that old laptop, even some of the light-duty utilities of Puppy Linux were a bit much, such as Gnumeric, Abiword, and Seamonkey. But Linux, being what it is, let me easily solve those problems. I installed the sc spreadsheet, vim for an editor, and the links2 browser.

    The Frugal install gave me another unexpected benefit on my old laptop. Since I can mount an iso CD image file directly with the mount loop option as follows:

    mount -o loop lupu-510.iso /mnt

    With this technique, I can continue upgrading to new versions of Puppy Linux without a CD at all, as long as I have a network connection. I can just download the iso of the next version, mount it as a file system with the loop mount option, copy the contents to a new directory at desired partition root level, and adjust Grub. Reboot, and I have the new version at my disposal.

    Given the tenuous nature of the old computer, I don't remove from Grub the reference to the previous version until I've booted and tested the new version. All in all, a beautiful solution for a very old computer.

    Personal Experience Two, Puppy On A *New* Laptop

    My next experience with Puppy Linux 4.31 was on my new laptop, a Compaq CQ60-615DX. My first impulse was to just install Puppy Linux on the new Compaq. I didn't intend to use the Compaq for development like I use my desktops, so it seemed a good choice.

    I ended up with a usable install, but it had a couple of quirks. First of all, the network driver was barely new enough to handle the wireless interface built into the Compaq. By that I mean there was a driver for the new card, but it wasn't fully ripe yet. It would periodically shut down the link after periods of inactivity -- like one minute.

    I solved that problem with a small batch utility that would run in the background and (using the iwconfig command) determine if the network had shut down. If it had, the batch file would immediately bring it up again. With this little utility I never really noticed the network going down anymore.

    The other problem was with the Compaq's display resolution. It is a more rectangular display with a 1366x768 resolution. Puppy Linux 4.31 didn't have a driver to accommodate that, so I had to run at 1024x768.

    I wasn't satisfied with that so I installed Xubuntu, which had new enough wireless and video drivers to work properly on the Compaq.

    That was fine, but after a few months, I learned that Puppy Linux 5.10 was released, so I tried that on my Compaq.


    No dropouts on the wireless, and the proper screen resolution. I'm impressed.

    Update -- Puppy 5.25

    In mid 2011 I updated my laptop to Lupu Puppy 5.25. I couldn't be more excited about a distro. Earlier versions didn't have the optimal driver for my Compaq laptop's video, but 5.25 does. Installation is easy, in fact, upgrading is easy. I just replaced the 5.10 Frugal install files with the 5.25 files then rebooted. The boot process noticed that my save file was from a previous release, so it updated my save file, and I was off running. Note, to copy over the files, you need to boot from your new CD so you can have access to the files on your hard drive.

    I did also have to replace the lupu_devx_510.sfs file with the lupu_devx_525.sfs file to get the c compiler function, then I was good to go. The easiest system upgrade I've ever experienced. As I recall, about the only thing I had to repair was to edit /etc/profile to add some path directories were I'd put some executable files.

    There are of course some bug fixes in the 5.25 version which you can read about at Puppy Linux site. But what I found most encouraging was the improved package manager. More and more Ubuntu packages are being prepared to be easily installed in Puppy, making it more and more a fully capable, though extremely light, distribution. My only complaint with the package management system is its speed, but I notice that apparently Barry is cognizant of that and thinking about how to make some improvements.

    I did find that the latest versions of Puppy Linux don't play well on my old W95 era Dell laptop. But not to worry, I installed Wary Puppy on it, and even that old laptop has modern functionality now.

    I have a yesteryear, though not old, desktop that runs at 1GHZ and has about 756MB of memory. I've used Debian, Ubuntu, Antix, and Puppy Linux on that computer. What I noticed was that with Debian and Ubuntu, the system load was nearly always over 1, running about 1.2. Guidelines I've found suggest that your system load should in general be less than the number of processors you have on your computer. So a load of 1.2 on this single processor box meant that processes were likely getting bunched up at times and waiting on processor time.

    With both Antix and Puppy Linux, the load drops well below 1 after the boot process has finished, insuring that whatever I run is less likely to be impacted by other waiting processes. So now that desktop is also running Lupu Puppy 5.25, and working like a champ.

    Some Final Thoughts

    Hopefully this review has given you some insight into the makeup of Puppy Linux. I'll summarize a few points for you to consider.

  • Puppy Linux can operate effectively from a CD, and saves sessions to a special file that's automatically reloaded on next boot.

  • Puppy Linux is easy to install onto a USB stick, making it an incredibly portable operating system. Note: it formats the USB drive on install.

  • Puppy Linux 5.10 and 5.25 load entirely into memory if you have at least 256 MB, making them lightening fast

  • Installing Puppy Linux to your hard drive with the Frugal install method is simple. Copy the files to a directory at root partition level, setup grub as the examples demonstrate, and install grub.

  • Puppy Linux 5 series is derived from Ubuntu 10.04 Lucid Lynx, and thus has a bigger archive of additional applications.

  • Upgrading to a new version of Puppy Linux, especially if you stick with the Frugal install method, is extremely easy.

  • I use 3 different computers on my network. One desktop is where I do most of my work, such as creating web pages and graphic designs like those on my Keen Designs and Bowling Duds T-shirt and mug shops. The other computers are a desktop for general use (also used by others in the home), and a laptop used when portability is important (like taking astro photos like those at 6 Inch Newtonian Astrophotos.

    I use Debian on my main work station, and it has an attribute that I use often. On my Debian station, I can do my image or web page work either at the Debian station, or logged on from my Puppy desktop or my laptop. And while I could certainly do the graphic and web page work with Puppy on my main desktop, what I thought I could not do is log on remotely and work just as effectively.

    There is nothing I really do on my Debian system that I couldn't do on the newest versions of Puppy Linux. I was concerned, however, that the ability to log onto my Debian system and work from another station would not be possible should I convert the Debian station to a Puppy Linux station. My efforts to ssh from the Debian computer to a Puppy computer would only work for a non-root login.

    But I found out that with help from the Puppy Linux Forum folks that I simply had to install an openssh server package from the Puppy archives and I could, in fact, ssh to a Puppy system if I knew the password. So now I'm considering working in Puppy Linux even at my main computer.

    Why, you might ask? Because Puppy Linux is so easy to install, easy to update, and easy to manage, compared to other Linux flavors. Now that the new Lupu Puppy also connects to the Ubuntu archives, there's little that I can see that prevents Puppy from working as a main O/S.