As featured on TuxMobil.org
Well, the old page was, anyway.
August 19, 2008: The machine crashed a few days ago after 147 days of uptime, so I’m working to upgrade it to Ultima 8.4. This should be fun.
March 15, 2008: Added navigation/table of contents, like on Latitude CP page.
March 7, 2008: Added photos. Yeah, so exciting, looking at photos of an eleven-year-old laptop...
March 6, 2008: Updated some system files (linuxrc, etc.) Added non-SMP kernel. Expanded various sections..
February 22, 2008: Converted original page (who knows how old) from Überpage to static HTML.
Any laptop that finds itself in my possession should expect to take some abuse. I’m glad my Micron XPE can’t literally talk, because it would probably send it right back at me. Since I got the machine in 2003 or thereabouts, it’s been known through various incarnations as my main laptop, a backup machine, a convenient spare, a temporary server, and a pile of junk sitting in a bag in my closet. It’s been through more operating systems than I can count (Win98 SE, Red Hat 8.0, Red Hat 9, Slackware 10.0, a few older Damn Small Linux releases, Wolvix 1.1.0, OpenBSD 3.9 and 4.2, several versions of ReactOS, and every Ultima release, among others...)
Besides that, it’s falling apart – the case is cracked, and the CD drive died, and I’ve either lost most of its parts or switched them with my slightly newer Dell Latitude CP, which was briefly its replacement before I finally got a decent modern Compaq.
Just as well that it still works fine with floppies.
This is a work in progress; I’ll post full details (and packages) once I have it fully functional.
The Ultima 8.4 installation poses somewhat of a challenge, because a few low-level system components (the kernel and glibc, among others) are now built for the i686 architecture. It is fully possible to install 8.4 – in fact, I have it in a semi-functional running state now – but it will take a bit of work to maintain a usable level of performance.
Most of the installation procedure is the same as with 8.3, and I even installed using the same bootable disks. The frugal installation is actually easier to perform with 8.4, since the new LiveCD code was specifically designed to support a frugal install with minimal configuration.
As with 8.3, the kernel has been patched and rebuilt without SMP support; specifically, I used linux-eeepc.disable.smp.and.asus_acpi.diff.gz from the ASUS Eee PC build, then manually edited the configuration file to specify CONFIG_M586MMX rather than CONFIG_M686 as the processor type.
The biggest challenge so far appears to be glibc. Building glibc requires patching both the glibc Buildscript.txt and /etc/ultima-scripts/mkbuildscript.conf. So far I have tried the following combinations of OPTIMIZ (the former file) and PKGCFLAGS (the latter):
OPTIMIZ |
PKGCFLAGS |
Result |
|---|---|---|
-g -O3 |
${OPTIMIZ} -march=pentium-mmx |
Unusably slow; roughly what it was like years ago running Red Hat 9* |
${OPTIMIZ} -march=i486 -mtune=i686 |
About the same (marginally better?) | |
-O2 -fomit-frame-pointer |
${OPTIMIZ} -march=pentium-mmx |
(unknown; building now) |
* Note that RH9 was released about five years ago. So really, Ultima’s held up pretty well in terms of backwards-compatibility...
So far I’ve mostly stuck with basic optimizations, because I don’t have an extensive in-depth knowledge. Since glibc is linked into every application on the system, using processor-specific code (the new default is -march=i686, which works on basically all Pentium-II and newer machines) and higher optimization levels (-O3) does yield considerable performance benefits system-wide. On a newer machine, there is a noticable speed difference compared to lower optimization (-O2) and the standard x86 CFLAGS (-march=i486 -mtune=i686, meaning i486 instructions, but with the “order” optimized for i686 and newer). Strangely enough, there doesn’t seem much performance difference between -march=i486 (generic) and -march=pentium-mmx (Pentium-MMX instructions), and if anything the former seems to be generally faster, but I’m guessing this might be different with multimedia applications, since that’s where MMX was intended to shine.
Reading online tells me a few more things about compiler optimizations: Apparently using -O3 for everything is a bad idea with GCC 4.x, as most code will actually become larger and less optimized. (As a side note, I generally use -O2, unless the package specifically recommends otherwise.) A combination of Google and the GCC manual suggests -O3 makes heavy use of the processor cache, and on systems with a smaller cache (Celeron, Duron, and probably first-gen Pentium) there will, in fact, be a performance hit. This might explain why 8.3 (which used -O2) ran faster than 8.4 (with -O3).
I’m not sure that -g makes too much of a difference here; it’s included in the default OPTIMIZ line to build a “debug” package (the standard package is stripped of this information), but I’ve removed it from my latest attempt anyway, just in case. As for -fomit-frame-pointer, I’ve never used it, but various sources say it makes the program smaller and faster (by removing information used in debugging).
I’m probably not going to try much more beyond the above optimizations, since Gentoo (of all distros!) says aggressive CFLAGS mostly break things. Besides the basic optimizations I currently use and have described here, the only other one they really recommend is -pipe, and that’s more to improve compile speed (by using pipes rather than temporary files) rather than program execution. If anyone wants to try optimizing it a bit further, though, let me know if you get any good results.
The machine is about eleven years old. It has a Pentium-133 processor (with MMX), 80MB RAM (maxed out), and a 4GB hard disk (I switched the bigger one to the Dell). Graphics are Cirrus CL-GD7555 (using X’s vesa driver), 800×600, 16-bit color. Sound uses the sb16 driver, and has to be probed manually with alsaconf -l.
I have a Dynex USB 2.0 adapter in the top PC-Card slot, where it’s lived comfortably since around 2005 – before that it had a Belkin, which broke. (This was one of the first things I bought for it – I use a lot of USB devices, and it doesn’t have a built-in port.) I recently discovered it can power the USB using a cheap PS/2→USB adapter in the mouse port; before I had to carry around an extra power brick for “powered” devices like my wireless adapter.
Speaking of which, it’s a NETGEAR MA-111 USB device, 802.11b. (802.11g devices freeze the machine.) I hate the NETGEAR adapter, since it needs to use the Windows driver through ndiswrapper, and it needs an extension cable since the “bullet” shape is too wide to fit next to the USB’s power plug. But hey, pretty kick-ass, having wireless on a machine made long before wireless laptops became popular, or even existed for that matter. I also have a Belkin PCMCIA Ethernet adapter and the original Motorola Montana 33.6k modem, both since retired, but I’ve kept them anyway since they both work very nicely on Linux.
The internal CD drive died, but I have an external (USB) CD-RW drive that works with the machine. I think it’s an Acer Mini-RW. I don’t think cdrecord supports it for burning though.
The case is cracked in places, the keyboard’s a little weak from years of constant use, and parts of it are sticking out from when I attempted to dissect the machine and couldn’t quite get it back the way it was. The screen is surprisingly intact, no color warping, and only one dead pixel (it was that way when I got it).
First is the machine seen from the front, running Word 2003 (yes, on a P-133; see below), with my cheap-ass electric guitar in the background. Second is from the side/back, showing the USB card, taped-on wireless adapter, and giant Tuxette glued to the back of the lid; sorry for the blurry quality. Click any thumbnail for a full-size JPEG version.
It’s a bit hard to see the physical condition of the machine from these photos, but up close it’s cracked, chipped, covered in glue streaks, and generally falling apart. Note the stickers: AP exam registration label (front); Tuxette (small one at bottom-right on monitor, large one on back of display lid, both self-made); Dark Side of the Moon (self-made, next to touchpad); and you can’t really see from here, but this older shot shows the “SECURITY DEVICE ENCLOSED” sticker from a Twilight Zone DVD case.
The machine right now dual-boots Ultima 8.3 and Windows 95a. Installing 8.3 proved to be a challenge; eventually I ended up making a pair of boot floppies, an incredibly hellish and rather silly feat of software engineering in itself. For various reasons I decided the most efficient (and fun) installation method would be to essentially boot the LiveCD code from the hard disk. The procedure went something like this:
The individual commands used are left as an exercise to the reader, since I don’t feel like typing them out again.
It boots using LILO (there’s a statically-linked binary on the second boot floppy’s initrd.gz). See my lilo.conf.
512MB for Windows 95, about 2GB (half the disk) for Ultima.
I had OpenBSD before, so I left space in between for that, and maybe other OS’s too, just for the hell of it.
Disk /dev/hda: 4327 MB, 4327464960 bytes 15 heads, 63 sectors/track, 8944 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 1105 522081 6 FAT16 /dev/hda4 4439 8944 2129085 83 Linux
There’s no swap partition, because I didn’t feel like creating one. Instead I have an 80MB swap file at /initrd/swapfile. (See my fstab for an explanation of why it’s there and not i.e. /; long story short it’s a quirk of the modified LiveCD boot system.) I ran it for a while without swap, but performance was unbearably slow.
Ultima’s default kernel is SMP-enabled, so it runs optimally on systems like my new dual-core laptop. For most single-processor machines there’s only a negligible performance penalty (based on my own experience), however multi-processing support is unnecessarily and very noticably so on such an old machine as this.
To solve this I re-built the stock Ultima kernel with SMP disabled. The resulting packages are available here. Note that these are NOT the same as the “stock” 8.3 packages. I also built aakernel.img, which overrides the squashfs.img files with the non-SMP ones. (You most likely want this file if you’re trying to copy my setup.) Note that this currently requires an ugly kludge in your linuxrc to work correctly.
I left out a couple packages like kqemu from the non-SMP kernel set, since I don’t think I’ll be doing much virtualization on this machine. (Although I have done it before – Windows 3.0, anybody?) It’s presumed that you already know to extract the vmlinuz from the package and/or SquashFS loop and to update your lilo.conf appropriately.
It’s not bad, considering it’s running a 2008-release operating system (in a SquashFS-compressed loop, no less!) Booting runlevel 3 (text-login) rather than 4 (X11), with pretty much everything in /etc/rc.d disabled, it runs fast enough for reasonable use. I installed a few “extra” packages like Fluxbox and Opera, and for most of what I use it for (nothing, mostly, but sometimes also light Web browsing, and ssh-ing into my server), it’s surprisingly better than you’d probably expect.
One note: OpenOffice.org will not run on my machine, because of some missing processor instruction or other, but it should still run on a newer one like the Dell. I haven’t used this machine for heavy word processing since around 2005. Correction: OpenOffice.org does run on Ultima 8.3. However, it’s unbearably slow, even for the standards of this machine (and, for that matter, OpenOffice.org). Personally I prefer to run MS Offfice 2003 in CrossOver, which runs exceedingly well considering the machine doesn’t even meet either program’s “minimum system requirements”.
Screenshots make anything more fun:
First is editing this page over SSH, using vim. Second is Opera browsing Ultima Linux.com and this page. Third is Microsoft Word 2003 in CrossOver, showing random nonsense. Fourth is the system’s actual specs as reported by Linux. Window manager is Fluxbox, using the “Shade” theme. Click any thumbnail for a full-size, lossless PNG version.
I’ll also try to upload some shots of the machine itself once I can find my digital camera. I found it. There’s also this old one on Wikipedia (I think the USB card is the same, but I no longer have the desk or the pink stapler, and the mouse, which doesn’t have the silver Logitech logo any more, is now on my new laptop. Don’t know what OS it was running at the time.)
You get bonus points if you’ve actually read all this, ’cause I know you’re probably just looking at the pretty pictures.
Mostly just because I can. I’ve had the machine a long time – and for that matter, I waited almost two years to get my hands on it (long story, for some other day), so it’s not something I’d just throw away for something as minor and insignificant as being antiquated, or missing a CD-ROM drive.
I will mention that I’ve almost always used a “full-size” distribution on this machine, even though it was already outdated when I got it, and even more so when I started using Linux. I’ve tried the smaller ones built “just for older hardware,” and I just don’t like them; they’re mostly running outdated software that doesn’t support my anachronistic choice of peripherals, and the “low-calorie replacements” just don’t have the features I’m used to in, say, Firefox or OpenOffice (not that I use either much anymore). Remember that for the first three years or so after I got this machine, it was my only working laptop.
(These days it’s mostly retired, since I have a fancy dual-core Compaq, but it still gets plenty of use. It’s good for looking up guitar tabs when I feel like inflicting my attempts at culture on the world. I also “connect” it frequently to my desktop machine using x2x, which essentially lets me use it as an extra screen, as if two 1280×1024 displays weren’t already enough.)
Plus it’s just fun imagining the looks on people’s faces when they see an eleven-year-old machine booting the newest released version of a “modern” operating system. Who knows, maybe I can say it’s a protest against the absurd requirements of Mac OS X or Windows Vista. Or something.
By the way, if you have one of these laptops (or a similar system) and need further information/clarification, e-mail me and I’ll try to post it here.
Updated: Aug 19, 2008
Back to Martin Ultima