Linux Goodies

In Pursuit Of The Perfect O/S



The Many Reasons I Love Slacko Puppy Linux

Amazon Computers

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 provided.

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 MepisantiX, 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 article, is:

  • boot.msg
  • help2.msg
  • help.msg
  • initrd.gz
  • isolinux.bin
  • isolinux.cfg
  • logo.16
  • puppy_slacko_6.3.0.sfs
  • vmlinuz
  • zdrv_slacko_6.3.0.sfs

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?