Linux and OpenBSD on a Libretto 70CT

In mid-2006 I bought a Toshiba Libretto 70CT, a 1990s-era subnotebook (2 lbs) with a 120 MHz Pentium MMX, for around $100.

This particular Libretto had an old version of Debian instead of the usual Windozage, but didn't have X and didn't support my PCMCIA wireless card. I did get a PCMCIA Ethernet card up without any trouble, giving me a network connection and a way to install X and some other things, including SML/NJ. However, it then refused to compile my typechecker, which didn't really surprise me (there's only so much you can do with 32 megs of RAM, and SML compiler designers aren't overly concerned with memory usage these days, at least not to the extent needed to run well on decade-old hardware), but I could just copy the binaries from another Linux box running SML/NJ.

I left it alone for a few months and then made a serious effort to bring up the wireless card, but to no avail. In fact, I somehow managed to corrupt the filesystem so bad that fsck just flailed about helplessly. It was then that I decided to overwrite the Debian installation with something else.

I won't go into painful detail about the things I tried that failed; suffice it to say that, AFAICT, most versions of Linux (even those from around 2000, when the resources on a Libretto 70CT weren't outrageously substandard) do not deal well with the Libretto's PCMCIA floppy drive. SuSE was particularly egregious; those folks apparently believed that a very pretty graphical install screen is more important than fitting as many floppy drivers as possible on the one floppy disk that the BIOS will boot without the OS' "help". (At one point the SuSE installer was demanding that I insert the disk containing the drivers it would need to read that very same disk!) An old FreeBSD did better but wouldn't recognize the Ethernet card.

Eventually I tried OpenBSD 4.0. Astonishingly, it booted (off a single install floppy!), gave me a shell in which I brought up the network with ifconfig and route (all this, again, from the single floppy), and allowed me to install.

Oh, and after "porting" SML/NJ to OpenBSD (you have to make it think it's netbsd2), I was able to compile my typechecker. Very slowly, but it got there.

It occasionally kernel-panics when I take out the wireless card, but since the wireless card otherwise worked perfectly without having to install or recompile anything, I'm not complaining too much. (ddb hangman is totally ridiculous, though.)

Conclusions

OpenBSD is the best OS I've found for old Librettos. The folks who work on it are extremely conservative about new features, yielding a system that, yes, is clumsier in many ways than modern Linuxes, but then makes up for it by not overwhelming you with things you really don't want given the resource constraints. For example, OpenBSD comes up with fewer daemons on by default than any recent Linux I know of.

I don't know if I'll use it as a "real" laptop. I might use it as a server; tiny size and power consumption under 30W are good for that too.

Notes

Here are some things I found that were useful. I'm putting them here mostly for my own benefit in case I have to reinstall (or get a second Libretto :-), but if you find them useful, great.

Install

Boot from the first 4.0 floppy (floppy40.fs on the OpenBSD distro sites). Type 'boot -c' at the prompt. When the next prompt comes up, swap out the floppy drive for a PCMCIA Ethernet card (mine is a Netgear FA411), and type 'exit' to continue booting.

You'll soon find this isn't your pretty Linux installer; you could be forgiven for thinking Clinton might still be President. However, it gets the job done.

Remember that you can type ! to get to a shell, where you should feel free to run ifconfig and route to get some Internets (I got lost in the prompts it gave me and messed things up, but ifconfig+route worked).

Important: When you edit the partitions, make sure you leave at least (RAMsize) bytes free at the *end* of the physical disk! This is where the Libretto's BIOS will dump the contents of RAM when it hibernates, and you can fux0r your filesystem if you don't leave enough room up there. Also make sure to 'update machine code' in the MBR: I didn't do this and got the dreaded "L 99 99 99 99 99 ...", left over from Linux.

Setup

Network

If you're on wired Ethernet with a static IP, put your router (mine is xx.yy.zz.1) in /etc/mygate and a line like
inet xx.yy.zz.217 255.255.255.0 xx.yy.zz.255 description "dsl"
where xx.yy.zz.217 is the IP address for the Libretto in /etc/hostname.ne3 ("ne3" is what OpenBSD called my network adaptor).

X Windows (X11)

Get Fred Crowson's xorg.conf and put it in /etc/xorg.conf. (Note, OpenBSD does not come with wget, but you can do lynx -source http://www.crowsons.net/puters/txt/xorg.conf.fcm.txt > /etc/xorg.conf instead.) Change the 'gb' keyboard line to 'us' if you have a Libretto with a US keyboard.

Power management

After you make sure apmd works OK by running it (type apmd as root) and playing with apm, edit /etc/rc.conf to start it automatically at boot.

Suspending messes up the colormap in X11. I don't know why and I apparently can't come up with the magic Google search terms that would find the answer, which I'm sure is out there somewhere. The only workaround I've found is to leave and restart X (not just the window manager, sadly!). This is apparently fairly common on laptops, and the standard workaround is to switch out of the X virtual terminal before suspending, and switch back in after. There doesn't seem to be a standard program for this in OpenBSD (BSD doesn't have Linux's chvt), but a one-character change to this program by Michael Kukat (changing ttyEcfg to ttyCcfg) suffices. For your convenience, download the OpenBSD-compatible version here.

Other

If you plan on running latex (actually, dvicopy), you probably want to edit /etc/login.conf to increase the number of open files per process/user. I bumped it from 64 to 192.

Resources

Fred Crowson's OpenBSD on the Libretto page
If you find a glaring inaccuracy I'd like to hear about it:
Joshua Dunfield
Last modified: Sat Jan 13 17:55:06 EST 2007