YKM's corner on the web

  • Hacks
    • Printing app for NUS SoC
    • Vibrate Alarm Clock
    • Number pad in DVD slot
    • Bus number reader for the blind
    • Auto rotate screen for Thinkpads
    • Document to PDF converter
    • First Foray into Wearable Tech
  • Notable Pieces
    • Local exchange to NTU
    • Thoughts on LKY’s passing
    • 24th birthday reflections
    • Pivotal Semester
    • Be pro-PAP for once
    • Views on Section 377A
    • Views on GE2011
    • Team video on RSA
  • Book Reviews
    • Book Review: Neither Civil Nor Servant (The Philip Yeo Story)
    • Chaotic Thoughts from the Old Millennium by Sim Wong Hoo
    • Fringe: September’s Notebook
    • Kampong Boy by M Ravi
    • Democratically Speaking by Dr Chee Soon Juan
    • Beyond Suspicion? by Francis Seow
    • To Catch a Tartar: A Dissident in Lee Kuan Yew’s Prison by Francis Seow
  • Talks Given
    • Intro to Bluetooth Low Energy
    • Intro to Raspberry Pi and Linux
    • iOS Dev Experiences (CS3217 Guest Lecture)
  • About
    • About Me
    • CV of Failures
    • Tech stuff I use
    • Favourite quotes
    • Github account

A Science Project: “Make the 486 Great Again!” – Modern Linux in an ancient PC

January 6, 2018 69 responses Yeo Kheng Meng personal projects retrocomputing science project software hacks
Reading Time: 14 minutes

What is the oldest x86 processor that is still supported by a modern Linux kernel in present time?

I asked the above quiz question during the Geekcamp tech conference in Nov 2017 during my emcee role. The theoretical answer as you can glean from the title of this post is the 486 which was first released in 1989. I determined that fact from this article where support for the 386 was dropped in Dec 2012.

To get you interested, here is the result of my effort.

The white smudge on the screen is not the camera’s fault, there is really a backlight problem with my old 19″ monitor.

You can skip to 11:39 when the boot completes.

00:00 to 00:46 – BIOS

00:46 to 11:39 – Bootup. It takes almost 11mins to bootup!

11:39 to 13:14 – System specs, IP info and ALSA mixer

13:14 to 15:00 – Playing music via Sound Blaster 16

15:00 to 17:25 – SSH while playing (stuttering) music in the background. With AlsaMixer adjusting volume.

17:25 to 17:48 – Opening a webpage hosted by nginx.

18:10 to 20:13 – Git clone a repo.

20:13 to 21:13 – Using Python 3.6.3

21:13 to 21:43 – Cleanup and issue shutdown command

21:43 to End – Shutdown. It takes 5.5 mins to shutdown!

Interested in how I got a modern Linux kernel 4.14.8 (released in December 2017) to run on this ancient PC? Read on!

Presentation

I gave a talk about my project at the Hackware v3.8 meetup. Here is the video and the slides.

Prior work and research

Last month, I took part in a Super Silly Hackathon with my teammate Hui Jing where we installed Damn Small Linux (DSL) on that same 486 PC.

I bought this machine with the original intent to play old DOS games in their original glory. Anyway, we managed to play music and even host a webpage! See her fantastically detailed write-up here.

The version 4.4.10 of DSL we used was released in Nov 2008. It used the kernel version 2.4.31 that was released in June 2005 which is a dinosaur by today’s standards.

Throughout the entire time, the question of whether the theoretical answer of 486 is actually true lingered in my head. I did some research and found out someone actually installed Gentoo Linux with a modern kernel on a 486 PC. At least someone said it was possible although he did not give any hard evidence 🙁 He advised that one should use a modern PC to do the source code compilation which I’ll show later.

What is Gentoo Linux and why?

Gentoo Linux is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user’s preferences and is often optimized for the specific type of computer.

From Gentoo’s Wikipedia page

The issue with modern Linux distributions like Debian/Ubuntu/Arch is that they distribute compiled binary packages. Typically this is good enough as compiling every single package you want from scratch is time consuming and most people ain’t got the time for that.

Although the 486 is theoretically supported by the modern Linux kernel, this is not true on the distribution and package level.  For example, Debian has dropped support for older 586 32-bit CPUs as of 2016. Thus, the oldest supported x86 CPU by Debian is the 686. The 6th-generation x86 started with the Pentium Pro released in 1995 or its more commonly known variant Pentium 2 was released in 1997.

Therefore, it is no longer possible to directly use a typical modern distribution on a 486 PC. But on an atypical distribution like Gentoo which requires you to compile every package, this might still be possible.

The hardware

The ancient 486 PC: IBM PS/1 Consultant 2133 19C (released in 1993)

Marvel at the original specs of this machine. The CPU and RAM were fully upgraded by the seller before I bought it.

Specifications:

  • AMD 5X86 486-clone running at 133mhz
    • Similar performance to Pentium 75Mhz
    • The AMD 5X86 series were the fastest 486 clones ever made
  • Cirrus Logic VLB CL-GD5424 Graphics 512KiB VRAM
  • 64MB SIMM-72 RAM
  • 48x IDE CD ROM Drive
  • Gotek 1.44MB floppy emulator
  • CompactFlash-IDE adapter + 32GB Sandisk Extreme CF card
  • 10Mbps 3Com Etherlink III 3c509B (ISA)
  • Sound Blaster 16 CT2950 PnP (ISA)

Front panel

The 48x PATA CD-ROM drive came with the PC. I replaced the original 3.5″ floppy drive with the Gotek 1.44MB floppy emulator. This cool device enables one to emulate up to 100 floppy disks based on images stored in the connected USB Flash drive! I no longer need to write to mechanically-failure-prone floppy disks whenever I want to transfer data.

Expansion slots

There are only 3 16-bit ISA slots placed on the riser card in this PC. It does not even have the newer but also legacy PCI slots. This PC is filled with 2x 32MB SIMM-72 RAM sticks. I have to admit 64MB RAM is unheard of for a 486-era PC. Some people online managed to go up to 128MB RAM.

Expansion cards

The 3 ISA slots are fully filled with the following

A Sound Blaster 16 CT2950 PnP, 10Mbps 3Com Etherlink III 3c509B,and a CompactFlash-IDE (CF-IDE) adapter. Technically the CF-IDE adapter is not an ISA card. It is mounted in the expansion slot to enable me to easily swap out the CF card without the hassle of opening up the case. To the motherboard, the CF card is just like any other hard disk.

Expansion cards mounted in slots

Legacy ports galore! Note the power supply which only accepts ~115VAC. I had to buy a transformer to step down the 230VAC mains in Singapore to suit this PC. The CF card is conveniently replaceable at the back.

Compilation machine: Thinkpad T430 (released in 2012)

Compilation is a CPU-heavy process and the 486 will definitely take ages to do so. To avoid this issue, we shall do the compilation on a modern PC using a USB card reader then move the CF card over to the ancient PC.

Specifications:

  • Intel Core i7-3520M (3.50 GHz, 4MB L3, 1333MHz FSB)
  • Intel HD Graphics 4000
  • 16GB DDR3 – 1600MHz
  • Gigabit Ethernet
  • Ultrabay DVD-RW
  • 2x USB 3.0, 2x USB 2.0
  • USB-CF adapter to compile on CF card
  • SSD removed to avoid corrupting it by accident during install

This Thinkpad T430 is a 6-year-old model by today’s standards but is still fast enough to do the compilation of everything in a reasonable amount of time (like a few hours).

Linux Installation

I’ve documented a detailed list of instructions here on what commands to use to install Gentoo on this ancient PC. This post will just focus on the key steps and issues I faced.

Step 1: Getting the install media and initial attempt

The Gentoo x86 minimal installation CD can be downloaded here still supports the 486 architecture. Out of curiosity, I booted my ancient PC with it to see if it is possible.

Turns out I’ll get a kernel panic. It is very likely this LiveCD kernel does not have the drivers needed to properly access the CD drive. Anyway, I got the CD started with my modern T430.

Step 2: Disk partitioning

These steps below are all done on the modern compilation PC except the last step.

Gentoo’s proposed partitioning scheme

This is what Gentoo recommends. Since this is an ancient PC, it does not use UEFI therefore there is no need for the bootloader partition. Ancient PCs also have a BIOS 504MiB barrier which means they can only access the first 504MiB in the disk. This can be seen in the BIOS setup below:

504MiB = 528MB

Linux can recognise the full 32GB capacity of my CF card only after the kernel and necessary drivers are loaded.

Actual partitioning scheme

Modern Linux distributions don’t always have a boot partition by default as its contents are now placed in the root partition. Since we have a 504MiB limit, we will need a small 128MB boot partition as the first primary partition to store the Linux kernel and other boot files.

Step 3: Install Gentoo Stage 3

Stage3 is a step unique only to the Gentoo distribution. Basically you have to download a tarball containing a bare minimal binaries and system directories.

You have to make sure to download the one that is named “i486”. Then uncompress it to form the base system.

For more information about the Gentoo Stages, you can take a look here.

Step 4: Verify compilation parameters

Portage is the package manager used in Gentoo and we have to make sure that its configuration will invoke the GCC compiler to emit packages that are 486 compatible. Ensure /etc/portage/make.conf has the following 486-specific options:

CFLAGS="-O2 -march=i486 -pipe"
CHOST="i486-pc-linux-gnu"
MAKEOPTS="-j5" # A good choice is the number of CPU cores in the system plus 1
USE="-kde -qt4 -qt5 ffmpeg mp3 alsa"

The USE flags are for any new packages not to include GUI support and add sound support (for my demo).

Step 5: Configure Linux kernel

This was a tough nut to crack and I needed countless tries to get it to a workable state.  To minimise kernel size, the default menu options may not enable support for ancient hardware components. However, support for them are still there.

The actual list of options I chose were very long so I’ll only show the key ones I selected.

Must disable 64-bit kernel for obvious reasons!

486 is the oldest option in this list!

ISA support has to be enabled to use the expansion cards.

ISA Plug and Play is required for autodetecting my SB16 and 3Com NIC as they are late generation ISA PnP cards.

Enable both Generic ATA support and Legacy ISA PATA support

My 3Com 3C509 NIC card is still supported!

Sound Blaster 16 is also supported!

Once done we just compile the Linux kernel!

Step 6: Install Bootloader

The usual bootloader used by Linux today is Grub2. I tried that but it did a reboot loop whenever I tried to start the system. Online research say I should use the older LILO bootloader instead. LILO is unsupported as of December 2015 but it is still able to load modern Linux kernels.

This a snippet of the /etc/lilo.conf Lilo configuration file:

image=/boot/vmlinuz-4.14.8-gentoo-r1
   label=gentoo
   read-only
   root=/dev/sda3
   vga=4 # This will set the VGA mode to 80x30

image=/boot/vmlinuz-4.14.8-gentoo-r1
   label=gentoo-ask-vga
   read-only
   root=/dev/sda3
   vga=ask # Linux will ask you to pick the VGA mode on startup

I didn’t install a GUI for obvious performance reasons so I have to rely solely on text mode. I set the mode vga=4 to increase “text resolution” to 80 columns x 30 rows of text. I also include a vga=ask in case the first option fails.

Step 8: Install additional software

Though not strictly necessary to do it right now, I felt it was better to leverage on the performance of the compilation machine before moving the CF card over.

If you have seen the video, I installed the latest versions (available in the Portage repository) of Git, Python, nginx, ALSA and MOC (console music player).

Step 9: Initial bootup!

Now we power down the compilation PC and move the CF card to the ancient PC for booting. Just pray and hope it works! 🙂

Problems Faced

There were several expected and unexpected problems I faced that made this project more time-consuming that it already was.

Cannot boot from CD

Due to the age of the PC, the BIOS only supports booting from the floppy drive or internal HDD. To boot from the CD, I used the Plop Boot Manager that booted off a floppy disk. This added extra inconveniences when it came to using CD-ROM based utilities.

To prevent wear on the already ancient mechanical floppy drive, I used the floppy disk emulator.

Cannot use 80-pin PATA cable

This problem caused me a huge amount of unexpected pain!!!

Left: 80-conductor PATA cable, Right: 40-conductor PATA cable

The 80-pin cable on the left is a more modern PATA cable with extra ground lines compared to the 40-pin ones. It supposedly allows the bus to transmit at higher speed by eliminating crosstalk while remaining backward compatible. Read this for more info.

When I assembled the PC, I initially started with the 80-conductor cable for the drives. I faced occasional intermittent problems. From the BIOS not being able to detect the drive, to Linux halfway getting disk access errors to outright disk corruption. It was hard to tell then was it a software fault or hardware fault?

Here are the list of steps I did to troubleshoot:

  1. Disconnect CD-ROM drive as primary slave
  2. Replace the CF card as I thought it was faulty
  3. Trying different 80-pin conductor cables
  4. Recompiling the Linux kernel many times with different SATA/PATA options in case I chose the incorrect one. This took hell a lot of time.

Finally, I swapped back to the original 40-pin PATA cable that came with the PC and the problems never came up. To double check my assumption, I tried the other 40-pin PATA cables I have in my personal stash and had no issue too.

Like WHAT THE HELL? I don’t think it is a fault of the cables themselves. I have dealt with many older PCs and none of them ever had problems when I switched to 80-pin cables so I assumed it should not be an issue at first. Probably the motherboard of this PC just does not like the 80-pin cable.

Tough Gentoo installation procedure

Installing Gentoo is tough and time-consuming under the best of times even for modern PCs. Doing it for an ancient PC like this further adds to the complexity.

To put things into perspective, this is how I would rate the relative difficulty in installing the different Linux distributions

Linux From Scratch > Gentoo > Arch Linux > Fedora/Debian/Ubuntu

  • Linux From Scratch: Compile every single thing from scratch. I have not tried this before.
  • Gentoo: Base system is ready. Just compile kernel, bootloader and extra packages. Then configure everything manually.
  • Arch Linux: Same as Gentoo just that everything already exists in precompiled binaries.
  • Fedora/Debian/Ubuntu: Distributions are based on point releases. Configuration is largely taken care off, just configure personal preferences.

This is compounded by the fact that this was the first time I installed Gentoo Linux and was unfamiliar with the install steps.

Long iteration cycle

Saying the ancient PC is slow is a huge understatement. It takes 11 minutes to boot up to the login prompt and 5.5 mins to shutdown. During the lengthy startup especially, I had to dutifully observe the status messages to ensure there are no issues.

If there were any issues, I have to move the CF card back to the compilation PC to modify the installation or worse start the installation from scratch. I did this countless times and spent many hours.

Faulty Power Supply Unit (PSU)

The PSU failed about 2 weeks after I wrote this post. Not unexpected for an old piece of hardware. For a typical modern PC, we just get a replacement! However, this PC uses the legacy LPX form factor for its PSU. Not only that, it does not use the modern ATX power connector. It uses the AT style P8/P9 connector.

LPX power supplies are not easily available this days and the ones that are being sold are decades old as well.

picoPSU with ATX-AT Converter

I used 2 products to replace the LPX PSU

  1. ATX-AT P8/P9 converter with -5V output I bought on Ebay
  2. picoPSU-150-XT with 12V AC-DC power adapter

Everything is tied down to the case

Small and neat and this power brick is 230V compatible too!

A cool LPX PSU replacement don’t you think?

Spectre and Meltdown

Given the age of the 486 (1989 technology), it does not support branch prediction.

The 486 does not implement any form of branch prediction.

Source 1: Pentium Pro and Pentium II System Architecture from Google Books

When the 486 microprocessor makes a decision that results in a jump to a different part of your program, there is often a delay as it gathers the instructions from the new area of memory. Pentium seeks to avoid this with a Branch Target Buffer (BTB). The BTB predicts the results of the decision-making instructions…
Source 2: Info World July 1993

Ironically this makes it safe from the Meltdown and Spectre attacks. If you want to be safe from those attacks, you can run your modern software on the 486! Of course this is not looking at the big picture, many other security features have been implemented on modern processors since then.

Concluding Remarks

Despite the many roadblocks I faced, I was impressed by the level of support Linux has for ancient hardware like this. I’ll not be surprised if somewhere out there, there is a tester making sure that stuff still works for old hardware.

Even though this involves ancient hardware, I have to admit I learned quite a lot about the components used in Linux by virtue of setting up Gentoo so I have some useful takeaways from this project.

You may wonder why did I title this post “A Science Project”. This was coined in a blog post by a Microsoft software engineer Raymond Chen to describe projects that fall into any of the following categories:

  1. A feature that is really cool and challenging from a technological standpoint but is overkill for the user-scenario.
  2. Requires hardware few people have.
  3. Trying to solve a problem that nobody really considers to be a problem. You’re doing it just for the Gee Whiz factor.

I believe my projects has all of these qualities.

  1. I went through a difficult process to give an ancient PC modern Linux and software features. It is overkill as no way one can do any useful work on this slow PC. It is much more appropriate to install a period-correct operating system like DOS and/or Win 3.x.
  2. How many people have a 486 PC today?
  3. Who has a problem of needing a modern OS on this ancient PC?

As mentioned earlier, if you want to replicate this project, you can consult the low-level detailed instructions I have documented on Github.

I have related projects as well, Windows 3.1 on a modern PC, Windows XP on a modern PC and the using the Covox Speech Thing with a modern pc. Everything so far involves getting old stuff to to work on a modern PC, this is my first blog post that does the opposite. Look out for more projects from me!

Clarification:

In response to questions or comments made by readers, here are some additional points I want to make

  1.  I did not show it in the video but the 486 is not powerful enough to play MP3 files in real time. It’ll stutter like crazy hence I stayed with WAV files.
  2. This machine has no slot for me to add any L2 cache memory. 🙁
  3. I have rebooted this machine several times before taking this video. So the boot times have stabilised.
  4. I did try to boot the Tiny Core Linux CD but it never fully loaded before rebooting.
  5. Given more time,  I could have optimised the bootup time or installed a GUI. However, the objective of this project is to explore the possibility of modern Linux in a 486 PC. Those are nice to have but given the time (many sleepless nights and weekends worth) and effort I had already spent on this project, I felt it was time to stop and document my work.
  6. 64MB RAM is not representative of 486-machines of that era. Sure I agree, but this machine came with this much and I don’t see any benefit of reducing the RAM other than to make it “more representative”.
  7. I did not go with the systemd as Gentoo by default uses init. Since this is the first time I’m actually installing Gentoo, I just went with the default instructions.
  8. Ext4 is used as the main filesystem to see if it is usable on this old system. I wanted as much modern features as I could. When I installed Damn Small Linux during the hackathon, the installer already warned us that the non-journaling Ext2 is more suitable for older CPUs.
  9. Why Linux and not BSD-based OSes? The point was to test if Linux and modern software still works on the 486 as claimed. Not really to make a usable PC out of it for day-to-day work. Besides, according to the FreeBSD’s website, the minimum requirement is 96MB of RAM. So although FreeBSD may support 486 CPUs, I really wonder what 486-era motherboard can take that amount of RAM?
  10. Why was PCI/USB/X option enabled in the kernel configuration (thus slightly slowing down boot time) even though the ancient PC does not have any PCI/USB/X? This was because I had a plan of making the same disk bootable and usable on my modern T430 as well should I need to compile and install additional packages. Disabling PCI might cause problems on my modern PC. I might just need USB on my compilation PC, who knows?

Comments

comments

Tags: 486, gentoo, linux

69 thoughts on “A Science Project: “Make the 486 Great Again!” – Modern Linux in an ancient PC”

  1. Pingback: New top story on Hacker News: Make the 486 great again – Modern Linux in an ancient PC – ÇlusterAssets Inc.,
  2. Pingback: A Science Project: “Salvage the 486 Big Again!” – Original Linux in an extinct PC – Top News
  3. martin says:
    January 7, 2018 at 13:57

    maybe it also suitable

    http://distro.ibiblio.org/tinycorelinux/welcome.html

    packages
    http://distro.ibiblio.org/tinycorelinux/8.x/x86/tcz/

    Reply
    1. Yeo Kheng Meng says:
      January 7, 2018 at 14:13

      I tried Tiny Core Linux during the hackathon for this PC. It kept doing the reboot loop.

      Reply
  4. vermaden says:
    January 8, 2018 at 02:32

    I always wonder … why ‘waste’ so much time with cross-compiling #Linux when #FreeBSD [1] supports such 486 computer out of the box along with binary packages even in latest to date 11.1-RELEASE version?

    [1] https://www.freebsd.org/releases/11.1R/announce.html

    Reply
    1. Yeo Kheng Meng says:
      January 8, 2018 at 19:46

      The point was to test if Linux and modern software still works on the 486 as claimed. Not really to make a usable PC out of it for day-to-day work.

      Reply
    2. tiao says:
      January 9, 2018 at 19:21

      You know the difference between “testing some to se its limits and figure out if actually works” and “use something that you know it will work” right? This makes all your FreeBSD advocacy pointless here… Take your time to READ things instead of being a “polite troll”

      Reply
  5. Pingback: Can You Install Linux On a 1993 PC? - R- Pakistan Daily Roznama
  6. Pingback: Can You Install Linux On a 1993 PC? – JeffPerales.com
  7. Pingback: Go Retro to Build a Spectre and Meltdown-Proof x86 Desktop | Premium Blog! | Development code, Android, Ios anh Tranning IT
  8. Pingback: Go Retro to Build a Spectre and Meltdown-Proof x86 Desktop - Big4All.Org
  9. Pingback: Go Retro to Build a Spectre and Meltdown-Proof x86 Desktop – High Tech Newz
  10. Pingback: Running the modern Linux kernel on 486 - Panda Posts
  11. Pingback: 玩家在486上运行现代Linux内核 兼容性令人印象深刻 - 丫丫头条
  12. Ivan says:
    January 8, 2018 at 16:40

    Cool project!
    I think using buildroot instead of gentoo could get you slightly more performance.

    Reply
    1. Yeo Kheng Meng says:
      January 8, 2018 at 18:53

      Something I can keep in mind in my next project. I actually wasn’t aware of build root and just wanted to use a modern Linux distribution.

      Reply
  13. yksoft1 says:
    January 8, 2018 at 17:50

    Why not just use an SCSI card and install OS on an SCSI HDD? This should eliminate the 504MiB barrier.

    Reply
    1. Yeo Kheng Meng says:
      January 8, 2018 at 18:55

      Well I do not have a SCSI card and HDD and buying them will incur more costs for me. The 504MiB barrier is only relevant for the initial bootloader stage, once Lilo loads the Linux kernel, the full 32GB CF card is accessible. You can see that in 12:14 of the video when I ran “df -h” where the full capacity of the card is used.

      Reply
  14. Pingback: Incognicast #4 | Incognitosis
  15. Anonymous says:
    January 9, 2018 at 05:57

    The “Caching service dependencies” step does not cache the stuff to disk, but to memory, to speed up the loading of services. It’s re-generated on every boot.

    Reply
    1. Yeo Kheng Meng says:
      January 9, 2018 at 21:49

      Ok noted. Thanks the clarification. I have adjusted the text.

      Reply
  16. Pingback: VIDEO: Esto es lo que pasa si intentas ejecutar un Linux moderno en una computadora antigua - NARRMA
  17. Pingback: VIDEO: Esto es lo que pasa si intentas ejecutar un Linux moderno en una computadora antigua | EL POLITIKO
  18. Henrik Uggla says:
    January 9, 2018 at 11:39

    In the video df shows that 4.3G is used on the cf. The installation surely can’t be that large?

    Reply
    1. Yeo Kheng Meng says:
      January 9, 2018 at 21:51

      The large size is due to the repeated builds I made and the many packages I have installed. Not all are demoed in the video.

      Reply
  19. Stevie says:
    January 9, 2018 at 22:00

    You mention that you used ext4. Did you see a substantial difference with the journal turned off? Any other file tweaks such as mounting with noatime and nodiratime?

    Reply
    1. Yeo Kheng Meng says:
      January 9, 2018 at 22:27

      It’s not shown in this post but I documented it in my Github instruction. https://github.com/yeokm1/gentoo-on-486/

      /dev/sda1 /boot ext2 defaults,noatime 0 2
      /dev/sda2 none swap sw 0 0
      /dev/sda3 / ext4 noatime 0 1
      /dev/cdrom /mnt/cdrom auto noauto,user 0 0

      So yes noatime but not nodiratime.

      I could technically remount the filesystem as ext2 to switch off the journal and see how it goes. Probably when I have the time for it.
      Anecdotally, DSL on Ext2 seemed a lot more responsive.

      Reply
  20. Pingback: Gentoo Linux on a 486 PC in 2018 | viditrend
  21. Matthew Whitehead says:
    January 10, 2018 at 04:08

    I have been doing exactly this project for more than a year: getting Gentoo Linux running on i486 processors. I can successfully boot Linux on an i486 laptop system with 28 MEGABYTES of memory (almost nothing).

    I have uncovered a few bugs and worked with the community to generate patches. These mostly are caused by missing support for the CPUID instruction on the very first generation i486 chips.

    I also build Gentoo in i586 and i686 systems, but they are comparatively easy to get going.

    The boot time with systemd is MUCH faster. I think my total boot time on an i486DX2 66MHz was 3 minutes. Very fast compared to OpenRC.

    It is nice to see other people share my interest in running Linux on ‘classic’ hardware. It is kind of like restoring a ‘classic’ automobile.

    Reply
    1. Yeo Kheng Meng says:
      January 10, 2018 at 22:22

      Hey, are you the “Theodore Head” user in the link I referenced. https://retrocomputing.stackexchange.com/a/4364

      If you are, I must say it was your link that actually prompted me to move from thought to action. Can you document your work like I did? I would very much like to learn what you did.

      For me my interest goes both ways, I like to see old stuff run with modern machines as well. You can see my retrocomputing projects. http://yeokhengmeng.com/category/retrocomputing/

      Reply
  22. Pingback: Gentoo Linux on a 486 PC in 2018 | VidShaker
  23. Pingback: Gentoo Linux on a 486 PC in 2018 - Trendz Pop
  24. Pingback: L’esperimento: Linux gira ancora sui vecchi pc? – Italia Notizie
  25. Kaz says:
    January 10, 2018 at 22:25

    I once had a 5×86 133MHz, with 32MB RAM and a Sound Blaster-16 AWE32 fitted. I found that while I had no hope of playing MP3 files under Windows because of the OS’ overhead, I could do so in DOS mode using damp (See http://www.damp-mp3.co.uk/). I never tried it under Linux, as I’d upgraded to a Cyrix 6×86 by then.

    Reply
    1. Yeo Kheng Meng says:
      January 13, 2018 at 22:13

      I believe Linux here is also imposing significant overhead to my system. Furthermore, I enable so many services. So yeah, playing MP3s well is pretty much impossible.

      Reply
  26. Matthew Whitehead says:
    January 11, 2018 at 00:04

    Yes, that Stack Exchange post was by me. Please contact me by private email. I would like to discuss cooperating.

    Reply
    1. Yeo Kheng Meng says:
      January 13, 2018 at 23:18

      Haha, I don’t have your email. Can you email me instead? Just look at my About Me page.

      Reply
  27. Anna says:
    January 11, 2018 at 04:34

    Hi! Nice project!
    Just a little thing: You don’t need EISA support on this board (and not on a modern PC either), as there are no EISA slots present.
    That could speed up the boot time a little and reduce kernel size.
    Greetings
    Anna

    Reply
    1. Yeo Kheng Meng says:
      January 13, 2018 at 22:14

      Noted. I edited my post.

      Reply
  28. Kevin says:
    January 11, 2018 at 05:08

    NetBSD would probably be much MUCH less painful than modern Linux on that machine. I ran Slackware on a 386DX/40 and a and NetBSD on a Mac IIci (25MHz 68030) for a long time before moving to FreeBSD 2.x on the Intel side when I upgraded to an AMD K5/133 back in the 90’s.

    –Kevin

    Reply
    1. Yeo Kheng Meng says:
      January 13, 2018 at 22:15

      I don’t disagree. Perhaps I should give NetBSD a shot next time. I’ve personally not use the BSD OSes before other than Macs.

      Reply
  29. Pingback: Así es correr Linux en un viejo PC de los 90 | Ubuntizando.com
  30. Pingback: A SCIENCE PROJECT: “MAKE THE 486 GREAT AGAIN!” – MODERN LINUX IN AN… | Dr. Roy Schestowitz (罗伊)
  31. Pingback: Gentoo Linux запустили на 25-летней машине — Типичный айтишник
  32. Emerson Moura says:
    January 12, 2018 at 00:20

    I really think the big problem with speed in the case of this computer is the absence of cache. Looking at the service manual (page 189 / 4-19) you can see that there are DIP sockets for SRAM chips (or the space for them) around the CPU, allowing up to 256k bytes of cache memory.

    With 256k bytes of cache memmory, the speed of this computer should double.

    Link to the service manual:

    greyghost.mooo.com/pccbbs/aptiva/63g2028.pdf

    Reply
    1. Yeo Kheng Meng says:
      January 13, 2018 at 22:17

      Many readers have pointed out the lack of a cache. I have already inspected the motherboard of this PC. It does not have any cache sockets. Quoting from the same service manual:

      “Note: Not all system boards have cache memory sockets. Some have 1 bank while others have 2 banks of cache memory.”

      Reply
  33. Pingback: Links 11/1/2018: City of Barcelona Moves to GNU/Linux, Julian Assange Becomes Ecuadorian | Techrights
  34. Pingback: Gentoo en un 486: Linux moderno sobre un ordenador antiguo
  35. LinEdx says:
    January 14, 2018 at 02:27

    yeah… but why?

    Reply
    1. Yeo Kheng Meng says:
      January 14, 2018 at 18:11

      Well because I can! Seriously, the rationale is the very first sentence of this post? “What is the oldest x86 processor that is still supported by a modern Linux kernel in present time?” I wanted to explore whether the answer 486 is true in theory as well in practice.

      Reply
  36. Johan Vandegriff says:
    January 16, 2018 at 14:57

    Take that dang Windows 7 sticker off the Thinkpad this moment!! It deserves better. Ugh. Upgrade to Windows 10 already! It’s so much faster and Edge is really the next innovation in web browsing history. I run Windows 10 on my machine and it boots in only 25 minutes with the latest hardware! They always provide updates for improved security features and performance improvements.

    Just kidding, I run Linux, and Windows stinks more than a skunk run over by a garbage truck. 😉

    Reply
    1. Yeo Kheng Meng says:
      January 16, 2018 at 23:01

      Haha. My Thinkpad indeed runs Windows 10. And multiboots with Windows XP, FreeDOS and Linux Mint for good measure. Personally for me, I use whichever OS suits my purpose better at the time.

      Reply
      1. D.O.N says:
        January 18, 2018 at 15:30

        Awesome work man.

        Reply
  37. D.O.N says:
    January 18, 2018 at 15:32

    Awesome!

    Reply
  38. Pingback: Lazy Reading for 2018/01/21 – DragonFly BSD Digest
  39. Aaron R. says:
    January 23, 2018 at 00:40

    This is truly amazing! You have almost the same IBM PS/1 that I have. Here is my spec:

    IBM PS/1 2133-174
    5×86 AMD 133Mhz
    32MB Ram (30-pin format)
    Creative Sound Blaster with IDE
    IBM 100Mb Ethernet
    4MB GXE 9 Graphics card
    IDE Blu-Ray
    256GB Kingston SSD with Sata to IDE bridge

    This has a soft bios layer Ontrack which writes to track 0 of the disk. This bypasses the 504mb issue and allows all OS’s after this Soft Bios boot to see the entire disk. I have these OS’s installed:

    Windows 3.1 with IBM DOS 5.0
    Windows 95
    Windows 98
    Windows 2000
    Windows 2000 Server
    DSL 4.3 (Damn Small Linux)

    To get these to boot side by side I used the floppy boot GAG which hides the partitions first then allows you to boot the desired OS on their respective partition.

    I am certainly going to try your modern Linux install with GUI. 🙂 Do you think it would be safe for internet banking?

    Oh and just to mention on Windows 3.1 you can use an MP3 player that plays the music files correctly. You set it at 486 class in the settings and out comes your fav MP3 awesomeness!

    Reply
    1. Yeo Kheng Meng says:
      January 28, 2018 at 08:58

      Oh wow! By using an SSD-IDE bridge, wouldn’t the SSD wear out quite fast as the OS does not have TRIM support?

      The soft BIOS layer is not necessary for Linux as the kernel can recognise the full disk. The LILO boot manager cannot though so the boot partition will have to stay within the 504 MiB limit.

      Safe for internet banking? Just hope the server does not time out your web browser first for being too slow 😛

      Reply
  40. GNUtoo says:
    January 28, 2018 at 06:05

    Really nice!

    Real uses cases for that is be able to use older peripherals and busses.
    It would be really nice not to require a host computer (that compiles everything).

    586 computers are more widespread that people might think:
    – Geode CPUs are i586 with (very slow) i686 emulation in software (through something called VSA). Theses can be found in network appliances like Alix boards from PCengines, and OLPCs.
    – Several embedded computers uses i586

    So it might be possible to find some GNU/Linux distributions that still support i586.
    OpenWRT might be one of such distribution. OpenWRT is also optimized to consume very few space.
    The advantage is that it has smaller binaries: this drastically lowers the RAM and disk space consumption.
    However some space obtimization such as XZ can require more than 64M of RAM.

    From xz manual:
    Preset DictSize CompCPU CompMem DecMem
    […]
    -9 64 MiB 6 674 MiB 65 MiB

    So here xz -9 requires 65M of RAM to decompress!

    For more information on the alix support in OpenWRT:
    https://wiki.openwrt.org/toh/pcengines/alix

    Also OpenWRT should have modern and graphical software like Xorg and even some desktop environments.

    Denis.

    Reply
    1. Yeo Kheng Meng says:
      January 28, 2018 at 14:58

      Cool to know about this! I did this more as a toy project and didn’t really think if there are practical uses cases behind this. Someday I might consider these options!

      Reply
    2. Lucas Ramage says:
      May 25, 2018 at 00:15

      You are right on target!

      At my previous job, I built PBX firmwares for geode hardware based on Astlinux and OpenWRT. I left that company in February due to healthcare and pay benefits, but there are still a couple hundred thousand PBX’s out there with that kind of hardware.

      As far as Xorg and desktop environments are concerned, most of those packages were pulled from the tree last I knew.

      Alpine Linux and Gentoo both still support this hardware and contain thousands of modern packages for a wide variety of tasks.

      Cheers,

      Reply
  41. GNUtoo says:
    January 28, 2018 at 06:31

    Here some more information on OpenWRT:
    https://downloads.openwrt.org/releases/17.01.4/packages/
    Here I can see the following folders:
    i386_geode/
    i386_i486/
    i386_pentium/
    i386_pentium4/
    So here i386 seem to be the global architecture, like ARM, MIPS, or x86_64. So they have software compiled for i486, which is up to date.

    Unfortunately the image generator (which doesn’t recompile things) requires a 64bit computer for now:
    https://wiki.openwrt.org/doc/howto/obtain.firmware.generate

    And the linux kenrel that is linked to from here:
    https://downloads.openwrt.org/releases/17.01.4/targets/x86/legacy/
    seems to use XZ:
    $ binwalk lede-17.01.4-x86-legacy-vmlinuz

    DECIMAL HEXADECIMAL DESCRIPTION
    ——————————————————————————–
    15458 0x3C62 xz compressed data
    3161124 0x303C24 xz compressed data

    So I wonder if there is a way to either:
    – remove the XZ compression inside the binary and make a script that runs when the kernel is replaced.
    – install another kernel that is not XZ compressed
    – contribute to OpenWRT and add support for uncompressed kernels or compressions that doesn’t require that much RAM.

    Denis.

    Reply
  42. Pingback: A SCIENCE PROJECT: “MAKE THE 486 GREAT AGAIN!” – MODERN LINUX IN AN ANCIENT PC – EBUT Laboratory
  43. Pingback: Most Expensive Linux Distro Ever | LUP 231 | Jupiter Broadcasting
  44. Pingback: Linux! – Johan V
  45. Pingback: Gentoo Linux on a 486 PC in 2018 – Tech XE
  46. Anonymous says:
    June 19, 2018 at 22:53

    The problem with your project is that you’ve used a piece of shit ready-made 486 instead of making one with a good PCI motherboard and avoid ISA alltogether. I have a 486/133 with 128MB RAM and modern PCI graphics, with Sata SSD that runs windows 98SE like a bat from hell.
    Take that piece of crap to the garbage and make a rig around the proper hardware FIRST, before choosing a distro.
    And you don’t have to use Gentoo to run it on 486, there are many distros that support 486, although I wouldn’t use Linux AT ALL, since the only thing that they offer for such old machines is the theoretical ability to run a modern browser, which is 100% USELESS anyway on such old and slow hardware. So stick with windows, especially NT 4.51 the best for that era, and solid as a rock.

    Reply
    1. Yeo Kheng Meng says:
      June 24, 2018 at 22:07

      Hi, I don’t disagree with your comment. However the point of this project is to see if modern Linux with the latest kernel can run properly on a 486-era machine. Other distros may run on the 486 but few if any uses extremely cutting edge Linux kernels.

      Reply
  47. Pingback: Damn Small Linux on the Raspberry Pi! Why did I do this?...
  48. Pingback: LXQt Review - the replacement for LXDE. Very, very fast, even on old hardware.

Leave a Reply to Stevie Cancel reply

Your email address will not be published.

  • « My First Conference Emcee Experience
  • Why I use the IBM Model M keyboard that is older than me? »

Recent Posts

  • I became a Private Pilot and this is my story: Part (1/2) in Singapore February 15, 2019
  • I became a Private Pilot and this is my story: Part (2/2) in San Diego February 15, 2019
  • Reflections after 2 weeks of PPL Training in the US December 1, 2018
  • Why I use the IBM Model M keyboard that is older than me? July 1, 2018
  • A Science Project: “Make the 486 Great Again!” – Modern Linux in an ancient PC January 6, 2018
  • My First Conference Emcee Experience November 19, 2017
  • X commandments before finding a tech-cofounder/engineer November 8, 2017
  • First Flight Experience in a light plane (Socata TB10) September 15, 2017
  • Repair Kopitiam specialty electrical tools (Part 2): Short Circuit Limiter July 24, 2017
  • CV of Dating Failures July 15, 2017

Recent Comments

  • I became a Private Pilot and this is my story: Part (2/2) in San Diego | YKM's corner on the web on I became a Private Pilot and this is my story: Part (1/2) in Singapore
  • I became a Private Pilot and this is my story: Part (1/2) in Singapore | YKM's corner on the web on I became a Private Pilot and this is my story: Part (2/2) in San Diego
  • I became a Private Pilot and this is my story: Part (1/2) in Singapore | YKM's corner on the web on First Flight Experience in a light plane (Socata TB10)
  • I became a Private Pilot and this is my story: Part (2/2) in San Diego | YKM's corner on the web on Reflections after 2 weeks of PPL Training in the US
  • Yeo Kheng Meng on Why I use the IBM Model M keyboard that is older than me?
  • Ander on Why I use the IBM Model M keyboard that is older than me?
  • Yeo Kheng Meng on Tech stuff I use
  • Yeo Kheng Meng on Why I use the IBM Model M keyboard that is older than me?

Archives

Categories

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
Proudly powered by WordPress