Viglen MPC-L

This is a cute little machine, based on the AMD Geode GX 533 processor, which despite it's name, is a mostly 486-class processor, with some additional 586 instructions, clocked at 400MHz. It comes with 512MB of RAM, an 80GB drive and no fans. It's not fast, but it's very power efficient (11w stable state, 16w peak during boot), and apart from the hard-drive, is completely silent. It appears to be a clone of one of the predecessors of the First International Computer Inc Ion A603. See here for more information. These were obviously designed primarily as thin client devices, but Viglen clearly see potential to sell them as a low-end desktop for office productivity. They come preloaded with Xubuntu 7.04 (Fiesty), which has been slightly customised to help overcome a few of the hardware limitations.

Unfortunately, as Andy Stanford-Clark detailed here, the standard install comes with incorrect kernel parameters which means that the machine doesn't stop or reboot properly. The correct parameters should be pnpbios=off pci=noacpi. Easy to update grub with the proper ones, when you know what the problem is.

As a low-end desktop machine, the MPC-L does a reasonable job. Xubuntu seems to work well enough on it, but my interest in this machine is as a micro-server; something similar but more potent and better packaged than a Linksys NSLU2 (aka "Slug"). So I need to reinstall it with an OS more suited to that role. For me, that means a much more recent Ubuntu Server install ... Hardy Heron looks ideal ... but the install turns out to be a little harder than expected.

Installing Ubuntu Server 8.04 (Hardy Heron)

So, my first attempt was to connect a USB DVD/RW drive to one of the front USB ports, and reboot. Which resulted in the MPC-L completely ignoring the DVD/RW, and booting from the hard drive again. A quick check of the BIOS boot parameters showed that it was set to boot from USB Floppy, USB CD, USB HDD, Internal HDD, in that order. After a little head-scratching, I wondered if the four USB ports on the front panal are an add-in of some type, and not under the control of the BIOS at boot time? So I swapped all the connections around, and plugged the DVD/RW into one of the rear ports, and the mouse and keyboard into the front ports. Another reboot, and this time the DVD/RW spins up and I'm facing the Grub menu for my Ubuntu 8.04 (Hardy) Server install CD. Success!

At this point I figured I'd better keep the pre-installed environment, so that if I had no success with setting up my own system I could always return to the Viglen pre-install. So out came my trusty bootable GParted CD. I shrank the two existing partitions down to approximately 8GB each, and shuffled them all up to the start of the drive, leaving plenty of space to install Hardy into. This took about 20 minutes.

Then it was back to installing Hardy. This was pretty much a textbook install apart from a couple of little quirks, one of which might defeat you unless you know what you're doing.

I hit the first quirk immediately. Pressing enter on the installers boot menu results in the installer kernel oops'ing. Remember to push F6 on the grub boot screen, and enter the additional kernel parameters pnpbios=off pci=noacpi. Without them, the installer cannot run.

From this point onwards the installation runs completely normally, allowing you to partition and allocate the space on the drive, select additional packages etc. Everything runs perfectly, right up to the point where the installer wants to install a kernel, when it stops with the complaint (a big red panel pops up!) that it has no suitable kernel for the MPC-L hardware. Don't panic, all is not lost. The problem is that the MPC-L is based on an AMD Geode, and so is actually a 486-class processor, and Ubuntu expects (quite reasonably) that no-one is going to be installing on anything less than a 686-class machine these days.

The solution to this is to simply ignore the error, and press on, without installing any kernel at all. This means, of course, that the system cannot be booted ... but we can fix that later. The installer should merrily continue installing all the things that it needs to, only coming to a further problem when it trys to install Grub; probably because the install scripts for Grub are non-too-pleased to discover that there are no kernels on the disk. Again, press on, and let the installation come to a final halt, where you will be prompted to remove the install media and reboot. At this point, ignore the installer. We want to reboot off the installer CD again, as we're going to use it to manually complete the installation.

Reboot off the installer CD. At the Grub menu do the F6 thing to get the pnpbios=off pci=noacpi kernel parameters sorted out again. And then select the Rescue System option. Follow the prompts, and when asked, select the option to mount your root partition. Then select the option to Execute a shell... in that environment. You should now be logged into a command line shell in your freshly installed system, as root, but using the kernel from the install CD. Assuming you have your networking set up properly you can now simply install a 386-class kernel onto your MPC-L from the repositories on the internet:

 apt-get update apt-get install linux-386
After some downloading and installing, you should now have a valid kernel (for your 486-hardware) installed and ready to be used. To make sure that you actually can use it, you'll now want to edit your Grub menu, found at /boot/grub/menu.lst to add the pnpbios=off pci=noacpi kernel parameters to the end of the kopt stanza. Now, simply run:
... and you ought to see some messages about finding kernels. When the command completes, you can check the /boot/grub/menu.lst file again, and towards the bottom you should now see that the freshly installed kernel has been added to the file, and that the correct kernel options will have been appended to them.

At this point you can exit the recovery shell, remove the install CD, and reboot. You should find that your MPC-L has a 386-class kernel installed, and that you can boot from it. Job done.

Upgrading to Intrepid (8.10) server

There is a bug in the Ubuntu Intrepid (8.10) kernel that prevents the MPC-L from booting. The kernel is missing the pata_cs5535 driver, which means that the kernel is unable to access the MPC-L hard disk. See this bug in launchpad. The result is that it is possible to do a network upgrade from Hardy to Intrepid, but it's not possible to boot the kernel of the resulting upgraded system. Which is somewhat annoying.

Fortunately the old Hardy kernel will still be available, so once the upgrade to Intrepid has completed, and the system reboots, select the old Hardy kernel from the Grub menu rather than the new (but unusable) Intrepid kernel. You can then run the Intrepid system with the Hardy kernel. Of itself this isn't ideal, but it does allow you to then upgrade the Intrepid system to Jaunty (9.04).

Upgrading to Jaunty (9.04) server

Upgrading from Intrepid (running under the Hardy i386 kernel) is straighforward, and at that point the Jaunty kernel does contain all the required kernel drivers to support the MPC-L, and once installed can be booted normally.

Upgrading to Karmic (9.10) server

The upgrade from Jaunty to Karmic is painless.

Upgrading to Lucid (10.04) server

The upgrade from Karmic to Lucid is painless.

Upgrading to Maverick (10.10) server

In theory this release dropped support for the i486. However, the upgrade from Lucid to Maverick is painless. I suspect that the Geode, being a strange mix of i486 and i586, actually has enough i586 instructions to still run Ubuntu.

Upgrading to Natty (11.04) server

Again, the upgrade from Maverick to Natty turns out to be painless. However, it should not be possible to upgrade beyond this point, as Debian withdrew support for i486 processors in Squeeze, which is the basis for Ubuntu 11.10 (Oneiric Ocelot). This means you're going to be a long way behind current security patches, so don't expose the server to the Internet.

Anything more up to date?

According to distrowatch there are precious few distributions left that support the i486. It looks like your choices are largely down to Slackware, Gentoo, or one of the distributions based on one of those two. From a quick search, Superb Mini Server looks as though it could be worth a try. It's still under active development, with the last release in 2015, based around the 3.14.40 kernel. While this is a long way short of the 4.7 kernels that are current (in Ubuntu in Sept 2016) it's a lot better than the 2.6 kernel in Ubuntu 11.04.