Ubuntu Server on 386 hardware

I’m blogging this in the hope that I might get more Google coverage for the solution to a problem I hit when trying to setup Ubuntu server on an older machine down the church. I originally posted the solution to the official Ubuntu forums, and it’s had a few replies saying it worked and was helpful. I remember clearly however having to search for quite some time with Google before I finally found that aforementioned thread relating to my problem. Even then, it didn’t have a solution (until I made one).

With that in mind, I’m hoping that the blog I made here will better describe the problem, and hopefully you’re reading this because you google’d for the issue and landed here after seeing it on the second or third result, rather than the 4th page of the most unrelated search ever!

So, on with the problem.

You’ve installed Ubuntu onto an older machine, a K6 Athlon or some other 386 processor (perhaps an otherwise outdated P1, P2 or P3, a Celeron or other 386 Pentium), you’ve rebooted and GrUB’s appeared as expected. That is to say, you’ve gotten past the BIOS’ POST and GRUB has appeared asking you what OS to load. You’ve selected “Ubuntu Server” and GRUB has printed “Savedefault” and “Boot” to the screen. Then the computer reboots. Again and again.

So the problem is reoccurring, GrUB loads, Linux. You’ve tried swapping some hardware in and out, the CD defiantly boots OK, the ISO you downloaded has the right MD5 checksum and in general other OSes load just peachy. It’s just Ubuntu that won’t boot. No error messages, just silence, a black screen and then a reboot. If the computer beeps, that’s just the BIOS.

So what’s the solution? Well there’s two. Basically the problem is that the Ubuntu Server CD installs a 686 optimised Linux kernel (at least it did at the time of writing), and your slightly older processor is a 386 (or 486/586, I don’t know if the kernel works on them or not). So you can either buy new hardware or use a different kernel. Assuming you want to do the latter, and prevent those consistent reboots, read right on ahead!

To use a different kernel (as the install disk clearly does) you just need to:

  • Install the system using the server CD as before
  • Boot again using the CD as you did to install
  • Select the “Rescue” option rather than “Install
  • Ensure you enter a proper chroot’ed environment, i.e. select “run a shell from the rescued system” when prompted
  • Run “apt-get remove linux-server” – as far as I can see it removes nothing more than the installed Linux kernel (which doesn’t boot on your hardware)
  • Execute “apt-get install linux-386” – this will install a 386 compatible server kernel, and let Ubuntu keep you up to date with patches (which is important!)
  • Check grub’s been updated properly and reboot (nano /boot/grub/menu.lst)
  • Boot off the HD to (hopefully) see your new server install.

If that works for you, I’d love to know! Leave me a comment. Equally well if it doesn’t, again, I’d love to know and be able to help out. If you have anything to add, again, leave a comment and if possible, leave on on the Ubuntu forums thread I linked to above, just so there’s an official record too.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.