I’ve long been interested in practical low-end computing. Dealing with low-end hardware shows us how experiences might be improved on modern systems, and, in any case, tinkering around has always been fun. In the past, I’d messed around with i686 systems. While some of the more popular Linux distros are dropping official support for 32-bit x86, it seems that there will continue to be pretty solid support for these computers on modern *nixes of some sort for quite a while to come, between Linux and the modern BSDs (all of which have something of a lightweight bent in their base configurations). Any i686 system can be of some potentially practical use, although, of course, some are better equipped than others for actually getting things done.
What do I mean by getting things done?
- I need a free and functional *nix system.
- I need to be able to run X11.
- I need to be able to run a modern-ish web browser. It doesn’t necessarily have to be Firefox or Chromium. Sometimes one needs to deal with a website or form which won’t support a more lightweight browser (such as Links or Dillo) which can serve otherwise as a perfectly capable online reading interface.
- I need to be able to run a modern TeX distribution (such as TeX Live). I use TeX to write almost all my assignments.
Recently, thanks to the good folks at Reboot McGill, I came into possession of a PowerBook G4 from circa 2005. So it seemed high time to try to see if the machine could be put to good use now, as it approaches 15 years old with an architecture now widely considered obsolete.
The computer came with Mac OS X 10.4 “Tiger” installed on it, which seemed to work more or less fine from my short time playing with it. But Tiger, of course, is ancient software at this point. There’s a community which uses these PowerPC Macs today running Mac OS X with applications such as TenFourFox, but I was more interested in running with an update-to-date operating system.
So, without further ado, here are my results:
Didn’t even boot. Though macppc is listed as a supported platform by the project, the kernel would always run into a memory management issue whenever I tried to boot, preventing me from getting off the ground. A real shame, since NetBSD ships pkgsrc binaries for macppc, but I wasn’t able to get anything working. Some sleuthing leads me to believe that this issue has come about for a while on a few pieces of hardware while not on others. If I have the time to fully diagnose in the future, hopefully I can write a bug report.
FreeBSD, unlike NetBSD, actually booted up, which was a plus. The base system installed just fine, but I found that there were no official binaries for any packages on the platform. FreeBSD is known for its solid ports collection, but from a cursory try, compiling on the PowerBook G4 seemed like torture, and I would like to run something useful at some point in my lifetime.
I also tried to build packages on FreeBSD/amd64 on my desktop, which is kind of cheating, but it’s my project, after all. For some strange reason, though, FreeBSD’s support for cross-compilation is awful, involving the use of QEMU. There are now some attempts to move towards a hybrid toolkit, in preparation for an eventual addition of actual cross-compilation, but for now that’s not an option. Not only is QEMU pretty slow, FreeBSD/powerpc actually won’t run in QEMU (a fundamental issue which is known, but which isn’t really a priority for fixing).
I was able to get a working build system together in QEMU, taking advantage of the fact that FreeBSD/powerpc64 does work in QEMU. But the system was so unbearably slow, I think you’d be better off running the build on the G4 instead.
Only after abandoning my attempt at running a FreeBSD/powerpc system did I find that there is an unofficial repository available for FreeBSD-CURRENT on powerpc (at writing, it includes very few useful packages, since gcc 9.x failed to build, but the bug has been fixed now, so it may be of use in the future). Maybe at some point I can try that out.
OpenBSD was the first system that installed and ran without a hitch, and it seemed fairly functional, all things considered. Its packages were available in binary format for 32-bit PowerPC processors, so I was able to get up and running pretty quickly. The actual system, however, seemed to run slower than any other I tried. Perhaps this has to do with OpenBSD’s preference for security over performance (valid by their design principles). But nevertheless, it all seemed to work. It ran X11 with icewm just fine, and Otter Browser with present-day WebKit gave me a reasonably modern browser (sadly, one without any adblocking capabilities). Midori is another option which I sadly neglected while on OpenBSD but which surely would have been a solid option, based on my use of it on Void Linux (as I’ll discuss later). And, unlike any of the other systems I used, OpenBSD actually ships TeX Live binaries for their PowerPC systems natively. So kudos to them for that.
On the downside, OpenBSD did not seem to support the trackpad on the system properly, leading it to emulate a mouse instead (one-button, natch). This is pretty in line with their generally subpar support for laptop hardware on the PowerPC platform. And OpenBSD also has no hope for running user mode emulation (they take it to be too great a security risk and have removed the feature), so don’t expect to run any Linux or i386 binaries on OpenBSD/macppc. But if you’re happy with the binaries you can get natively, it’s not a bad choice.
Debian used to support 32-bit PowerPC, but dropped support a few versions ago. The Debian Ports project has valiantly attempted to continue support for the architecture. It boots and gets to X11, but it seemed that almost every other package is broken because some key dependency doesn’t build correctly. Unfortunately, it seems the project has a lot of work to do when it comes to getting things working on these machines, so I can’t recommend the system for anything beyond experimentation. None of the browsers in the repository worked remotely well. The “best” modern browser I found was SpiderWeb, some sort of weird fork of SeaMonkey, but its engine is a few years old and — I almost forgot to mention — performance was horrendous.
But in one way, Debian did a better job than any other system: QEMU user mode emulation and binfmt support worked out of the box. So, by installing the right cross-arch packages through apt, I was able to run some i386 binaries; I was able to install TeX Live’s i386 binaries this way by forcing the i386-linux platform in the installer. Now, if only QEMU user mode emulation weren’t the only way I was able to install the Broadcom wireless card’s firmware…
Void Linux PPC is a slightly strange minimal distro, but it fits like a glove on the system with its high level of customizability. It has a reasonable selection of binary packages. X works out of the box. Midori runs excellently, making it useful even for normal browsing. VLC will even play videos fairly well: I tested it with some YouTube streams and it played without stuttering. Of course, Void is a bit hands-on in terms of setup, but if you can do this, the glibc version of the system will do you well on 32-bit PowerPC.
On the downside, while static QEMU is in the repositories, binfmt isn’t, and the binaries for TeX Live are listed as having failed to build. So I’ll need to get a TeX system working at some point in the future — whether through QEMU user mode emulation or compilation of PowerPC binaries (the latter process is trickier, but would result in better compile times on documents).
An x86-based PC will do more and do it more easily with greater varieties of software available. An ARM board will run more binaries built in the past decade, even. But it’s not altogether impossible to run a decently up-to-date and functional operating system and applications on a junker like a PowerBook G4. It just might take a little bit more work.