Over the fourth of long Fourth of July weekend, I decided to experiment with some of the other Linux distributions floating around out there. I made only stipulation: I use a netbook, therefore the distribution must install from a USB flash drive. I have an old 1GB Sony, and a newer 2GB Sandisk, so there’s no reason this should be a difficult task. I told myself, “Self, 2009 is halfway over. Surely the Linux community will not ignore that millions of potential Linux systems lack a CD-ROM.” Sadly, after attempting to install half a dozen variations, I found I overestimated this aspect of the Linux community in a staggeringly inaccurate manner.
First, it should be noted that most, if not all Linux distributions are circulated via ISO format–basically a CD snapshot as a file. However as a long-time user of various Linux systems since 1997, I felt comfortable enough tackling this task. Why? USB drives are also bootable devices, so taking the contents of one bootable device and moving it to another should be a non-issue. Somehow, this assumption was not only wrong, but hilariously so. What I really don’t understand about all of this, is that USB drives are now ubiquitous, far larger and more reusable than any disc format, and have at the very least supplanted every other type of removable storage. Yet installing an OS from one requires unreliable command-line contortions so esoteric, my decade of Linux tinkering was no match.
So, Which distributions did I try? PCLinuxOS 2009.2, of which I’ve heard good things. Intel’s new Moblin beta, which is made specifically for netbooks. The rather sketchy stage-2 alpha of Ubuntu Karmic Koala, which I wanted to experiment with. Next came Debian Lenny, and a recent Sid snapshot for good measure. On a whim, I also tried Mandriva 2009.1, an old favorite I used back in 2001 when it still went by Mandrake. And finally, ELive 1.9, an up-and-coming distribution that’s small, fast, and heavy on visual flair. I basically picked my favorites and a few random examples from Distro Watch.
I used two well-known tools in my attempts. The first is UNetbootin, a cute little utility written specifically to download and create USB disk images for various Linux distributions. But there’s one huge, glaring problem: it only works with certain releases, some of which haven’t been updated for over a year, others that only work as net installs so there’s no ability to sample before outright install. Ignoring this, I figured it was generic enough to serve. And it did work after a fashion. It produced bootable keys for every OS I tested, but the only one that worked was Ubuntu. Every other Linux distribution either froze, refused to install due to a lack of a “CD Device”, or dropped to a Busybox shell. This was probably because I was trying to use more recent versions than the utility recognized, which is rather ridiculous. If someone has to track potentially dozens of operating systems for releases to keep the product current, that’s a design flaw, and completely insane. Is Linux really so fragmented?
The second is actually part of the Ubuntu/Debian package set: USB Startup Disk Creator. This one is easy, it’s just a set of python modules that turns an ISO into a bootable USB flash image. But beware with this one! There’s an option to create a “persistence” file so changes made will stay until the next time the key is used. This allows the USB key to act as an installer, a rescue disk, or even a fully functional portable–if slow–operating system. Unfortunately the authors of this utility chose to create this file with the ‘dd’ utility, a program capable of making bit-by-bit copies of basically anything. This is normally fine, but in older versions of this utility, they set the block size to 1, resulting literally in one write to the disk per byte, and for larger persistence files, this can take hours. After someone filed a bug for this, the inspired developer set the block size to the entirety of the persistence file, which if larger than memory, will cause the host machine to start swapping and possibly crash the system. Since USB drives can be 8, 16, or even 32GB these days, it’s forgivable if a user selects the entire remaining portion of the drive as the persistence file. What the developers should have done, is set the block size to 8192, 16384, or 32768, thus reducing the writes without risk of exhausting system memory. I plan on filing a bug against the utility for this, if only because I’m not sure what the hell they were thinking. And again, this utility had other problems. Some ISOs I tried, it outright rejected as “not system disks,” and others booted, but produced white screens and complaints about missing CD drives.
What worked? Ubuntu worked obviously, but Karmic has some strange and dangerous bugs in the current alpha, one of which left me with a corrupt master boot record I had to fix manually. ELive was surprisingly usable, but the bare-bones configuration turned me off. Moblin was an amusing toy which booted with stunning alacrity, but I’d never use it as my primary operating system, and nearly every utility I used crashed in some manner. Mandriva was as I remember it: quirky but totally usable; if only it didn’t use RPM… And that’s it. No version of Debian got past the “detecting CDROM” section of the install, which is patently short-sighted. PCLinuxOS too, mysteriously halted the install, but at least gave me an ever-so-useful (or not) Busybox shell. So, more of these succeeded than failed, but it’s impossible to ignore that I used two different flash disk creation utilities to attain even those results. And make no mistake–even if your flash drive is 32GB, the entire thing will be formatted for a piddling 700MB CD image, so it better be a spare.
I even wrote a program of my own to partition, format, and move the contents of the ISO to my flash drive, hoping the utilities were over-complicating the situation somehow, but attained similar results. Further investigation revealed that every single one of these installs have a separate set of instructions for producing a USB key, and none of them were identical, or even compatible. Debian was the worst of these, giving precise, clear instructions referring to necessary files lacking any mention of their locations, only that the version must match the procured ISO. Uh? Do I have to find these magically? Why is this so hard? Is there really no simple and reliable way to transfer an ISO to a USB drive and have it remain tenable? I really have no interest in expending more energy than downloading an ISO and putting it on a flash drive; there are too many other distributions for anything more than minimal effort unless a user is sufficiently devoted, and I’m not.
I’m sure someone more inventive than I will tackle and ultimately defeat this persistent problem. My failed attempt to write a generalized utility only proved to me how strange yet oddly difficult this quandary really is. Making the USB device bootable and copying the ISO contents isn’t enough, though logic suggests it should be. This wouldn’t be so annoying if the Linux community could come up with a standard ISO structure much like the LSB so at least the major key-copy utilities would be reliable. Ah well, maybe in 2015.