Adventures with Slackware Linux on a Low Memory Laptop

This Christmas it was my turn to meet my partner's extended family. To cope with spending a week with many new people in a strange new land, I created a creature comfort to take with me-- A Linux laptop. Geeks read on.

I was able to borrow an abandoned Acer 760ic laptop for this purpose. Here are the basic specs of the machine as I received it:

  • Memory: 8 Megabytes
  • Processor: 75 Megahertz
  • Hard Drive: 400 Megabytes
  • Ports: Video, Serial, Parallel, two PCMCIA slots
Hopi's Flickr Family

I soon discovered the model could accommodate a whole 20 Megs of RAM. I found the RAM upgrade at Kahlon.com for $12 and ordered it. However, I went ahead and setup the machine with the eight Megs I have. (As of this writing, I haven't received and installed the new memory yet.)

I was also fortunate enough to receive a PCMCIA Ethernet card in my loan— The SMC 8040tx. This required no additional configuration to work with my distribution choice.

Why Bother? How well it actually works

I was pleased to discover that once setup, the machine performs all the basic functions I hoped it would. With 8 Megs of RAM, it performs comfortable and competently for console-based text editing, e-mail, web-browsing, and ssh connections.

Besides that the machine works "good enough" for many functions, I had another motive for spending the time to set it up. I'm well aware that the process of creating computers is toxic: hazardous to the health of humans and the environment. Keeping an old computer running not only saves money, it also delays or eliminates the need to purchase a new one. I also got a particular satisfaction out of the challenge and learning experience.

Old laptops seem particularly worthwhile. Besides the space savings, they have energy-saving power-management features. The LCD screens can age well. This 10 year old laptop screen is much brighter and easier to read than much younger CRTs. The PCMCIA standard is still in use today, allowing modern enhancements to be added easily such as modems, network cards, and USB ports. With USB, a whole host of modern devices could be connected including external drives, printers, card readers, etc.

Here's a description how I use it. Then I'll explain how I got it installed.

Offline e-mail

I'm using Mutt 1.4, my favorite e-mail client, to read and send and mail offline. Masqmail appears to be a great sendmail replacement in this case. It's small and is built to support sending mail offline, and to connecting to the SMTP servers of several ISPs. When I return to the networked world, I plan to use a tool like offlineimap to synchronize my laptop and server mail trees. This might mean compiling offlineimap on the laptop— the first piece of software I will have needed to compile so far.

Mutt launches quickly and is very responsive. The folder listing takes a little longer to appear, but that's the only slow down I've noticed.

Text Editing

I'm happily using Vim 5.6, my favorite editor, for text editing. Performance is great here as well. The only downside is that I miss a few features that Vim 6.x provides, and that my .vimrc and plug-in files expect to exist. However, I suspect that I could compile a "light" version of Vim 6.x and have much the same performance.

Text-based web browsing

I'm enjoying using w3m as a text-based web browser. Performance is great with this application as well. It loads almost instantly. When connected via broadband the pages render instantly, with table-based layouts preserved.

w3m has a feel that reminds of vi. It lacks an interface that makes it easy to learn. However, it's very efficient and powerful to use if you invest a little time to do so. It has some neat tricks up it's sleeve, including tabbed-browsing, mouse support, and even support for rendering images when displaying through X11. The package I was found was version "0.2.1". It would be nice to upgrade to a newer version (current 0.4.1) which I imagine would also be "small enough" to run comfortably.

I also highly recommend links as a console web browser. links has more of the feel of a Macintosh experience. It has an interface that is easy to use immediately and supports powerful features. It also renders tables and has a version that runs under X. A "links2" package was available for my system. It won't yet run because it depends on "X". So that will have to wait until the memory upgrade is installed. :)

Using either w3m or links, the old standby lynx console browser seems antiquated by comparison.

Perl

I installed the perl package, which contained version 5.004. This is OK to tinker with, but as a professional Perl programmer, I expect I'll want to upgrade this if I keep using the machine. I was disappointed that "perl Makefile.PL" didn't work when I tried to build a module. It complained a missing "perl.h" file which didn't appear to come as part of the Perl package.

FTP

I installed the DeliLinux package for ncftp-3.0.1. This is my favorite FTP client. It has an excellent balance of being easy to learn and use while supporting powerful features. It supports book-marking sites, recursive downloads, and resuming downloads. It's one of those console programs that's so nice that I prefer to use it over more graphical options. It also performs quit well under the memory constraints. I wish this program appeared as the default FTP program in more Linux and FreeBSD distributions.

Choosing a distribution for my low memory laptop

I did considerable research to see what free Unix options were available for low-memory laptops. Slackware showed up over and over as the distribution that other people had chosen for their low memory machines.

Why Slackware

The reasons for choosing Slackware are not just technical, they are cultural. Slackware has made an effort over the years to provide options and documentation to support low resource systems. This has included low-memory boot disks, floppy-sized installer chunks and special documentation.

Once installed, it's also a benefit that the Slackware-specific system administration tools are all console-based rather than X-based. Other options have that trait as well, including {Free,Open,Net}BSD. (One late night I tried some BSD install floppies from all three variants, but they all failed dramatically at some point.)

Finally, I found a distribution based on Slackware that is targeted at using machine's of this caliber as a modern desktop machine. This is DeliLinux. It's based on Slackware 7.1. By choosing this older base, a number of the core components are smaller. DeliLinux adds extra value to the base distribution by creating select additional packages, and updating key packages to the most reasonable current version.

My install process

My installation process ended up being a little different than every other "HOWTO" I found, so I'll bother to document it here.

Overcoming the 8 Meg limitation

The Slackware installer expects more than 8 megs of RAM to work. I found creating a swap disk wasn't enough of a boost. With a swap disk, the installer would run, but the kernel would eventually kill enough key processes before they finished. To make it work I had to install the installer onto the hard-drive to install the full operating system on the drive. Here's how that worked.

Preparing the Drive

Thankfully I had a 400 Megabyte drive to work with, which is plenty of room for a small Linux system.

The first step was getting the drive partitioned. This is accomplished using a floppy based Linux distribution. I choose and was impressed with tomsrtbt. It worked easily under the memory constraints and provided all the tools I need. Here's what I did:

  1. I used fdisk to create three partitions:
    1. hda1 - 10 Megs / Linux native (ext2) / non-bootable
    2. hda2 - 25 Megs / swap
    3. hda3 - 365 Megs / Linux native (ext) / bootable
    hda1 will be used to house the root file-system for the installer. Later it could be re-claimed for use as a mount-point for the main OS, or more swap disk space. Before going further, you might as well start making use of the swap space that's been created: $ mkswap /dev/hda2; swapon /dev/hda2
  2. Now the root file-system is created for the installer. I put the Slackware 7.1 "color.gz" floppy in the drive and followed the steps, modeled after the instructions I found here
    $ mke2fs /dev/hda1
    $ mke2fs /dev/hda3
    $ mkdir /hd3
    $ mount /dev/hda3 /hd3
    $ dd if=/dev/fd0 of=/hd3/color.gz
    $ cd /hd3
    $ gzip -d color.gz
    $ dd if=color of=/dev/hda1 bs=1k
    $ rm color
    

The actual install process

Now it's time to run the installer from the hard disk. After booting off the 7.1 "bareapm.i" boot disk, I used the initial boot prompt to have the system use the new hard drive as the root for the installer:


 mount root=/dev/hda1


Even with this extra boost, I still activated the swap space as soon as I got the command prompt in the slackware installer.

Since I had an Ethernet card and a desktop Linux machine already on my home network, I choose to use the NFS install option. While I won't detail setting up an NFS server, I'll say that it was fairly easy with Mandrake 9.2. The Slackware installer made it easy enough to use. I just typed pcmcia at the prompt. It then detected my network card and no other "hacks" were needed.

Package Selection

To start with I selected a minimal amount of software to get the system running and network-aware. I could always install more later. This meant setting up the "a" "ap" and "n" software distributions on my NFS server.

Updates from DeliLinux

But first, a brief review of the rough edges with DeliLinux

. As of this writing, DeliLinux is at version 0.5 and describes itself as "beta" I found this to be an accurate description. The base installation package is 20 Megs. Yet, the project doesn't document how to get this onto your machine over NFS, which should be possible as a Slackware-based system.

It also doesn't current document the low-memory installation trick above, which seems essential for some of the systems it targets.

Finally, it's own installation disk just didn't seem to work. I got a kernel version mis-match error between the boot disk and modules on the hard drive image.

The good news is DeliLinux uses the standard Slackware 7.1 package format. So I simply added a few DeliLinux packages I wanted to my standard Slackware 7.1 installation. To do this, this the packages can simply be down-loaded and then installed like this: installpkg pkgname.tgz.

Once DeliLinux gets its kinks worked out, I might consider 'upgrading' the system to be completely based on DeliLinux. It includes an updated 2.2 kernel and other niceties in the base system.

DeliLinux offers upgraded packages, such as mutt and also has some of it's own packages that are nice to have on a low memory desktop system. masqmail is one such utility.

Power management notes

I was pleased to find that the "Standby" and "Sleep" functions on the laptop worked without any configuration. The functions can triggered manually with a key on the keyboard, or by closing the lid. Left alone, the hard drive will spin down, making the machine fully silent. As it boots, the BIOS alerts me that there is no "Suspend" partition. (It did this even when the Other OS was installed). I suspect that with some research, this function could be made work as well.

Console Multi-tasking

I expected I would be using the screen program to run multiple console programs at once. With the virtual terminals and gpm mouse program that come standard with Slackware, there was no need. Alt-F2 switchings the second console, and gpm allows me to highlight, copy and paste using the track-ball with the console applications. Not needing to run screen was another nice memory savings.

Conclusions

A simple modern Unix distro such as a Slackware can clearly run well with 8 Megs of RAM and a 75 Mhz processor. Before I installed Slackware 7.1 to use with DeliLinux, I installed Slackware 8.0 using the same technique and things worked fine with that newer version.

Although DeliLinux has a focus on machines of this vintage, I'm left to wonder: Now that I know the low memory installation trick above, could other current distributions work as well? In particular I'm curious about the BSDs since I'm already familiar with FreeBSD and I know it also uses console-based install and maintenance utilities.

Recent Entries

Close