The Long Road through Linux
I'm a Slackware turned Red Hat turned Debian turned
Puppy Linux 431 turned Slacko Linux user. I started perhaps 25
years ago with Slackware Linux. At the time most of my work was in DOS, and
involved creating and using data analysis programs. But my son, always ahead of
the old man on technical goings on, told me that with Slackware, even without X
Windows (which our old computer wouldn't support), I could have several
log-ins open at once, and could quickly switch between them. Not to
mention that Slackware was a multitasking operating system, and if you wanted
to plug in terminals to RS/232 ports, a multi-user system. Plus the operating
system had all manner of utilities for programming far beyond what DOS
So I tried it. I liked it. And before long, when a newer computer was
obtained, we had the resources to add X Windows support. Now several terminal
windows could show up in the same desktop, with more than one desktop available
if necessary. It was super to an old DOS programmer, yet old hat to most any of
you reading this.
Then I found that Debian seemed to have a larger software archive,
especially in the mathematical support area. So in my professional job I
switched to Debian. It let me install Octave, PDL, Yorick, R, Scilab, and Tela, all tools that I
learned to use. Each seemed to have something special that the others didn't
have. But ... I digress.
Debian was great in those years, but then I retired. I didn't have such profound needs anymore. I needed Linux, yes -- but something easier and quicker to install. Something easier to maintain, and easier to upgrade when that became useful.
So I tried Mepis, antiX, Ubuntu,
and gNewSense. Each had some nice features, but didn't really move me
toward that easy to install and maintain goal I was seeking. Plus, though I had
the hardware to support any of those versions of Linux adequately, I've always
admired those efficient systems that squeeze the most out of hardware instead
of bog it down for user gluttony. I had most respect also for the simple window
managers like Fluxbox, IceWM, Window Maker, and on
some minimal systems, Ratpoison and DWM. After having used
all of those, I've found that for me IceWM seems to answer the call best.
Slacko, a Place to Pause
When trying out Linux distros, I eventually discovered Puppy Linux. Like all
others, at first it just seemed to give me a headache trying to understand yet
another Linux derivative. However, it had off the bat one thing I liked, a
simple window manger. It happened to use the JWM manager. So I used it awhile
without much thought. I just found that with some of its simple but effective
bells and whistles, it was really nice to work with. But I eventually realized
that Puppy Linux was fundamentally different in a number of ways. And those
differences were ingenious.
It took me a bit to get all of the differences into my head, so I think it best to first just talk about what I discovered easily -- functionality.
Puppy Linux Functionality
After some years of working with Puppy Linux, starting with Puppy 431, I
eventually worked my way over to Slacko Puppy Linux. Slacko Puppy is a version
of Puppy that is derived from Slackware, and thus has the Slackware and Salix
software archives available. I like the way Slacko Puppy Linux feels. I know,
some think that it looks like I've stepped back into the 90s with the
few-frills look of the desktop, but I like function over form, so it works for
me. Here's a screen shot of my Slacko setup.
Notice the neat background. It's an eye-catching Hubble photo wallpaper I
found on the web at Hubble Site, and I
think it makes a super wallpaper.
Now the Slacko part. Puppy Linux designers use a light weight window manger (usually JWM) and combine it with ROX-filer to create a nice looking and functional desktop. ROX-filer, as well as being a graphic interface file manager, can operate in "pinboard" mode. So used it becomes the vehicle to show background images and to support desktop launch icons. Puppy designers tend to put a few such icons on the desktop in the upper left corner of the screen for commonly used applications. You can move them around and even add more if you wish.
Personally, I like to have a launcher that lets me handle icons for
launching in more of a batch mode. On the ROX pinboard I need to work with each
icon individually. So I found that the Slacko package manager had a utility
called wbar which lets you have a collection of icons that can
easily be managed with a configuration tool called wbar-config. The icons can
be sized, re-arranged, and displayed horizontally or vertically most anywhere
on the desktop. You see my collection of wbar icons at the right edge of the
screen shot shown previously.
The Puppy Linux designers also put icons near the bottom left to represent all the disk volumes that are available, plus indicate if the respective disks are mounted or not. Above is a blowup of just the lower-left part of the desktop showing a portion of the task bar, and above that the disk icons. When Slacko boots up it scans and finds all available volumes and creates an icon for each.
Left clicking on a disk icon will mount the volume if it's not mounted,
then open ROX-Filer on the volume. Right clicking on a disk icon will bring up
a menu of selections, including options to edit the icon, mount the volume if
not mounted, or un-mount it if mounted.
If you plug in a USB drive or put a CD or DVD in the player, another icon
(or icons) will pup up on the screen for each volume on the inserted device(s).
The same functions are available when clicking on these removable media as for
the hard disks.
I find this really handy. In the "old" days, I had to do a "dmesg" to see
what device the system assigned to an inserted media, then perhaps make a mount
point for it, then mount it. Much easier to just click an icon to do the job.
Another handy utility I like about Slacko (and other Puppies) is that it
presents a tray app to control the volume of speakers or headphones. The image
above is the lower-right portion of my desktop. It shows the right most area of
the task bar, which includes the volume control (speaker icon), a network
monitor, a Puppy save-file monitor, and a CPU monitor. The readily available
volume control is really handy when watching a Youtube video or listening to a
CD. No need to run alsa-mixer by hand, just click the volume icon and adjust
the volume. I love that.
Other-wise the desktop is pretty typical, perhaps not as fancy, as most.
Puppy Linux designers tend to use the JWM window manager, which looks much like
you see in the example, though actually you are looking at IceWM. I just happen
to like IceWM better, nuff said.
But Puppy is Different
You boot Puppy Linux from a CD and use it with all of the functionality
just described. It comes with a generous supply of applications to support
document handling, multi-media, graphics, network, business, and more. It has
utilities that make system setup and maintenance (of which there is little)
easy. In fact, Puppy Linux works great with just the live CD. You don't need to
install it at all to get great performance.
Even though you may be running Puppy Linux with a live CD, you can remove
the CD and use it for data, burn new CDs (or DVDs), play music, whatever.
That's because Puppy Linux loads entirely into memory at boot, and doesn't need
the DVD after that. So Puppy Linux isn't impacted by the fact that you pulled
the CD at all. Try that with most other live CDs.
It's when you begin thinking about how that is done when the more profound aspects of Puppy Linux come into view. To work so well from a live CD, Puppy Linux is designed to load entirely (system, applications, and utilities) into memory. It creates a disk-system image in memory and operates from that. So once booted, there is nothing on the CD that it needs.
The whole system -- plus applications -- in memory? Incredible, is it not? So you're thinking that it's a massive memory hog.
But if you look at a Puppy CD, you'll see that there really aren't many
files on it. About a dozen, and only about 5 are actually involved in the
booted system. The list for Slacko 6.3, which I use at the time of this
You may notice that two of the files have an "sfs" extension. There is
where some of the magic lies. An sfs file (or squash file) is a compressed file
that can contain an entire directory structure. Multiple sfs files can be
overlaid by the unionFS
management system and viewed by the operating system as a coherent directory
structure of files. The compression and special layout of these sfs files is
what lets Puppy Linux live on a small CD of only a few hundred megabytes.
When Puppy Linux boots from the CD, the compressed files stay that way
until referenced. Then they are uncompressed and loaded from the memory
resident file system, which happens much faster than if they'd have been loaded
from a disk. So even though an entire operating system and programs is sitting
in memory, the non-system parts are sitting in a compressed form and thus not
taking up much space.
Puppy takes this idea further. In can install to a USB drive, and when it
does, it maintains the same structure, so it takes little space on the USB
drive. When booted from a USB drive, Puppy Linux, as with the CD version, loads
its magic overlaid file structure into memory and operates purely from memory.
The USB is hardly referenced after that.
Puppy Linux can also be installed onto a hard disk, and it can be still left in this compressed form. Puppy Linux designers call this a Frugal Install. Again, when booted from the hard disk from this Frugal Install, Puppy loads it's pseudo file system entirely into memory and operates from there.
Now Puppy applications can certainly reference directories and files not within its memory mapped directory structure. So the design doesn't limit what you can do with Puppy Linux.
When shutting down Puppy Linux on your first use, Puppy Linux will ask if
you want to save any files you've created or programs you've installed. If you
do, it will make one of the sfs files on your hard disk (or USB, whatever you
desire). When next booted, even if from the CD, Puppy Linux will search for
such a save file, and if it finds it, map it into its memory based file system
using the unionFS system, though the save file contents are not loaded into
memory until needed.
In this way you can work with Puppy Linux as you would with any other
system. You can install additional software from the Puppy Linux archive via
the package manager, create new data and/or graphic files, whatever. All
additional files will be saved automatically in the disk-resident save file.
The squash files and unionFS file management system provides Puppy Linux
(and some other Linux versions) with enormous flexibility. Things like
operating indefinitely from CD without ever installing Puppy. Yet all work will
continue to be added to the save file.
The concept is also what makes Puppy Linux work very well on USB thumb
drive installs. You probably know that while thumb drives are very handy, you
only get so many successful writes to a thumb drive. The fact
that Puppy Linux loads into memory and operates from there, only referencing
the save file for the "new" data or programs, means that you'll likely work for
a very long time before wearing out a thumb drive.
I also like the utility of the Frugal Install. To install Puppy Linux this
way, you can use the "Install" icon provided, but you can easily do it manually
-- if you happen to have a Linux partition on your disk. Just create a
directory on the Linux partition (root level) and copy the contents of the CD
into the partition. Then from the Puppy Linux menu, select and run the
Grub4Dos boot loader utility. That will create a boot record
that includes any classic installs of systems you have plus find and include in
the boot menu any Puppy Frugal Installs you have.
Perhaps by now you've wondered -- "Can you have more than one directory containing Puppy files on your Linux partition?"
Absolutely! That's another thing I love about Puppy Linux. You can have as many Frugal Installs as your partition will hold, each in it's own uniquely named directory. Grub4Dos, when ran after any additional install, will find and create a boot menu for each Puppy Linux Frugal Install.
Why, you wonder, would you do that? Why more than one install?
If you visit Puppy Linux Home, you'll see that there are a number of different Puppy versions available. Some based on other distros, and some rather specialized. So you might make a Frugal Install of a different version or 2 or 3 to see how you like them. All just copied into their own directory, and added to the boot menu by running Grub4Dos.
Remember the old days of Linux installs? One partition for each install. With Puppy Linux, that's old hat. It's now many installs in one partition. Clever, what?