There are many different Linux distributions available. If you want a distribution small enough to run from an USB drive but with all the power of a full distribution, this article will show why Puppy Linux may be worth a look.
Recently, I've had the desire to play around with Linux on a USB drive. My primary reason for trying this was so I could always have Linux with me. When I was called on at school or at friends' houses to troubleshoot hardware when their Windows installation was hosed, I always wanted to have the ability to toss a version of Linux on the troubled machine to really see what was going on. So I knew having the ability to run Linux from a USB flash drive would be ideal.
The problem was getting a simple and reliable version of Linux on the USB drive. My searching brought me to Puppy Linux. I found Puppy Linux (with the help of QEMU) to be the most satisfying of all the flash drive ready Linux distributions. But Puppy Linux became much more than that. Puppy Linux also taught me a few things about where the OS is evolving, and how running an OS from a CD has benefits beyond that of portability.
Let's take a look at how Puppy Linux is used and how you can have a version of Puppy Linux installed and ready on a USB drive.
Getting and installing Puppy Linux
"Installing" is a bit of a misnomer; you don't actually install Puppy Linux, it's distributed as a LiveCD. A LiveCD is an OS (typically containing other software as well) stored on a bootable CD-ROM or DVD-ROM. The OS can be executed directly from the media on a hard drive without installation. The system returns to its previous OS when the LiveCD is ejected and the computer is rebooted. What this means is you can insert the Puppy Linux LiveCD into a CD-drive of a machine running Windows Vista, boot the machine off the CD, and run Puppy Linux. When you're finished, remove the media and restart the machine. The original machine's OS runs as normal.
To get the Puppy Linux LiveCD, point your browser to the Puppy Linux download page and download the Full Drivers Edition of the OS. The Full Drivers version includes everything you need to get a LiveCD Linux up and running (with full network support).
Once you have the .iso file downloaded, burn it to CD. When the CD is ready, insert the LiveCD into the machine you want to run Puppy from and boot the machine. You will have to answer just a couple of questions regarding the X server. These questions are all in text mode, but it is usually just a matter of pressing [Enter] to make your selections. You will have two choices of X servers to install. I would suggest going with the open source standard xorg because it's the most widely-used and reliable.
The install system will probe for hardware and is quite good at discovering what's installed. You will eventually have to choose from the screen resolutions available for your monitor. Once you've made your final selection, X will start and Puppy Linux will be up and running.
As you can see in Figure A, the Puppy Linux desktop is a full-featured desktop that offers plenty of ready-to-use applications. Once the CD has booted, Puppy Linux is ready to go for a walk.
|Puppy Linux running with full network support and dog support.|
Using Puppy Linux
In order to get Puppy Linux working, you'll need to make sure your computer can support it. Fortunately, the system requirements are pretty minimal. As a matter of fact, compared to other OSs, you might be happy to see the Puppy Linux requirements:
- CPU: Pentium 166MMX
- RAM: 128 MB physical RAM for releases since version 1.0.2; or, failing that, a Linux swap file and/or swap partition is required for all included applications to run; 64 MB for releases previous to 1.0.2
- Hard Drive: None
- CD-ROM: 20x and up
Of course, a distribution would be very limited if it were just an image with nothing to offer other than the basic OS. Fortunately, that is not the case with Puppy Linux. The Puppy Linux CD is the complete package. The list of software included is fairly expansive. Included in Puppy Linux is the following:
- Word Processing: AbiWord
- Web Page Editing: Seamonkey
- Financial: XFinans
- Instant Messaging: Gaim
- Address Book/Calendar: iCal, Gaby, Agenda
- Web Browser: Mozilla Firefox with Flash and gxineplugins
- Spreadsheet: Gnumeric
- File Manager: ROX - Filer, uXplor, MToolsFM, GTK See
- Deskop Publishing: Scribus
- Vector Image Editing: Sodipodi, Dia, Figurine
- Outliner: DidiWiki
- Bitmap Image Editing: mtPaint, XPain and GIMP
- Audio: gxine, GPlayCD, ripperX, Snack
- Video: gxine
- Games: Gem Game, Bubbles, GTKfish, rubix, tkMines
- Converting/Printing/Scanning: GsView Postscript and PDF viewer, PDQ printing
- Package Management: PupGet, DotPup
- Network: GKDial, xeznet, WvDial, Roaring Penguin, RDP, VNC, SuperScan
- Window Manager: JWM, fvwm95
- Database: QUISP SQL
This listing is not complete. If you take a look in the Help menu, you'll find numerous packages to aid you in administering the system. Here's a look at some of the more important packages.
Puppy Hardware-Interfaces Information
This tool is a graphical front-end for gaining information about kernel modules used for various hardware on the machine (see Figure B below.) This is a very handy application for problem solving.
|Select the kernel module you need information about, and click the button next to the drop-down arrow.|
Another nice feature of this tool is the ability to switch between hardware and matching kernel module views (for PCI interfaces). From this tool, you will learn more about your hardware (and kernel module) requirements than you ever thought you might.
GParted is the GNOME Partition Editor and is included, full-featured, with Puppy Linux. I've found this tool to come in handy a number of times for partitioning USB and other removable drives. Figure C shows the basic interface for this tool.
|GParted can help partition drives.|
There's a catch with using GParted while in Puppy Linux. Since Puppy Linux is a LiveCD, I wanted to resize the partition of the hard drive on the machine I was running Puppy from. By using GParted, I could see that the hard drive was /dev/hda. On this drive, hda1 was obviously being used for boot, hda2 was the extended partition, hda5 was the swap partition, and hda6 was the ext3 partition used for the saving of all data. The problem was that Puppy Linux saves its own configurations in the pup_save.2fsfile located in /initrd/mnt/dev_save/. Since this device remains in use, you can't save the partition scheme. But this lead me to discover something even more important.
As you make changes to your Puppy Linux CD, the file pup_save.2fs will grow. By default the file size is 512 MB. Depending on your needs, you might have to make the size-availability larger. To do this, you have to invoke another valuable tool.
Resize Personal Storage File
I do wish this application had a better name. Nevertheless, this tool will become your best friend when dealing with Puppy Linux. From the menu, select Utilities | Resize Personal Storage File. You will be greeted with the window shown in Figure D.
|Remember: After you press this button, nothing will happen until after you reboot.|
One of the drawbacks is that once you make that file larger, you can not shrink it. Notice the buttons only have [+] signs, not [-] signs.
Media Utility Tool
One of the tools that I have found incredibly useful in Puppy is the Media Utility Tool. Figure E shows this tool.
|From the Media Utility Tool you can mount, unmount, and view contents of devices.|
This is one of those tools that many users might see as rather old-school. Users who are just now getting into Linux may see this as a step back from KDE and GNOME's auto-mount features. But for those of us who have been with Linux for a long time, this tool will look like something from the golden days of Window Managers and applets.
With one of Puppy Linux' goals being the resurrection of older hardware, this tool will aid those somewhere between command-line junkies and point-and-click newbies. If you insert a USB flash drive into a Puppy Linux system with the Media Utility Tool open, the USB drive won't automatically appear. However, if you open up a second instance of MUT, the USB drive appears unmounted, as seen in Figure F.
|Even though the drive is not mounted, MUT can determine the size of the drive.|
To mount this drive, select Mount in the tool. The drive is automatically mounted -- no command necessary. When you press the Mount button, a new button appears for the Rox file viewer. Rox then opens.
Of course, you don't actually have to open a new instance of MUT. If you'll look up in the upper right corner you'll notice a Refresh button. Press the Refresh button in the original window, and USB appears.
Figure G shows a tool that houses a collection of configuration wizards. From mouse and keyboard configuration to firewall creation, the WizardWizard will help you fine-tune your Puppy Linux LiveCD.
|Press the button next to the wizard you want, and that wizard will appear.|
One of the tools, the Linux Firewall Configuration Utility is an ncurses front-end for iptables. This tool allows you to either accept the default installation or customize your own firewall. This can be a boon to someone hosting an Internet café: The owner doesn't want to let specific services through, but is unable to create iptables rules at each reboot.
Moving Puppy onto USB
As I've mentioned above, one of the nice things about Puppy Linux is being able to run it from a USB flash drive. Installing Puppy onto the USB drive is very simple. From the menu, select Setup | Puppy Universal Installer. This is a simple point-and-click tool that allows you to install Puppy on your USB drive.
Your USB drive must be inserted before you fire up the tool. The first thing you do is select the drive you want to install Puppy on. Once you've done that you have two options: Install Puppy as a standard setup or as what Puppy calls a "Superfloppy".
The downfall of the Superfloppy install is that it contains no boot partition; booting from this device will not be possible. You could, however, go into the drive (from a running PC) and run puppy.sh (in Linux), or double-click on puppy.exe (in Windows). The downfall of this setup is that you will, effectively, have two OSs running (think virtual PC). It's slower. Therefore, the best thing to do is install Puppy using the Standard Setup option.
Taking your Puppy on the road
If you don't configure Puppy Linux to run from a USB drive, it becomes a little bit more difficult to take with you on the road. Don't forget that Puppy Linux'sLiveCD is volatile. In other words, once you reboot or turn off the computer, everything you've done during your session disappears. All of the configurations and changes -- everything. Fortunately, there are ways to retain your changes and configurations.
The Puppy2 CD Remaster program will take a snapshot of your current system and burn it to CD. Here's how it works. A Puppy2 LiveCD contains 4 main files:
The pup_XXX.sfsfiles, where XXX is the version number, contains the entire Puppy Linux filesystem recursively, from / down.
Invoking the Puppy2 application is simple. Go to Menu | Setup. From the Setup submenu, press the Remaster Puppy live-CD menu entry. A new window will open, as seen in Figure H.
|Saving your configurations is as simple as pressing OK.|
Once you have the new CD created, you can then boot from that CD. This can make life a lot easier. Say, for example, that you are running a small Internet cafe and need to ensure all your machines are pristine for the next business day. Create the proper image for your systems, create the new ISO with Puppy2, and each time you reboot the machines, the image will be fresh.
A well-behaved Puppy
In using Puppy Linux, I've found it to be one of the most simple, fun, and flexible solutions for many issues. It's tiny, fast, and reliable. It's scalable (to a point). To top it off, it has a cute lil' pup for a mascot.
Puppy Linux should be seriously examined as an option if you are in need of USB bootable Linux, customizable Live Linux, or a way to revive some seriously out-of-date hardware. Puppy Linux could also serve as a very flexible network-monitoring tool to use as you take a LiveCD or USB drive from workstation to workstation.