Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2022-09-02 09:18:52 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2022-09-02 09:18:52 +0200
commit52be99d8c0862ff87db9a4f9ccec1ac4b5f7caed (patch)
tree1a1a1c98090afd8459cc8f045f9de2d4a7cba5ab /floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
parent15adaba9eaa6a98c8b55bc5c5f73c3a9e0e55e7a (diff)
added a quite unsorted first version of a floppy boot loader
Diffstat (limited to 'floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt')
-rw-r--r--floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt747
1 files changed, 747 insertions, 0 deletions
diff --git a/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt b/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
new file mode 100644
index 0000000..bb36547
--- /dev/null
+++ b/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
@@ -0,0 +1,747 @@
+ [1]post
+
+ [2]Home [3]Aviation [4]Retrocomputing [5]Categories [6]Favourite Quotes
+ [7]About
+
+ [8]en
+ [9]English (en) [10]­ (zh)
+
+ [11]Kheng Meng profile pic
+
+Yeo Kheng Meng
+
+ Maker, Coder, Private Pilot, Retrocomputing Enthusiast
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+
+[12]A Science Project: "Make the 486 Great Again!" - Modern Linux in an
+ancient PC
+
+ January 6, 2018
+
+ 17 minutes read
+
+ 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 [13]Geekcamp tech conference
+ in Nov 2017 during [14]my emcee role. The theoretical answer as you can
+ glean from the title of this post is the [15]486 which was first
+ released in 1989. I determined that fact from this article where
+ [16]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.
+
+ IFRAME: [17]https://www.youtube.com/embed/4qSziR6sD8Q
+
+ 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!
+
+Prior work and research
+
+ Last month, I took part in a [18]Super Silly Hackathon with my teammate
+ [19]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 [20]here.
+
+ The version 4.4.10 of DSL we used was released in Nov 2008. It used the
+ kernel version [21]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 [22]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 [23]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 [24]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: [25]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:
+
+ * [26]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 [27]SIMM-72 RAM
+ * 48x IDE CD ROM Drive
+ * [28]Gotek 1.44MB floppy emulator
+ * CompactFlash-IDE adapter + 32GB Sandisk Extreme CF card
+ * 10Mbps 3Com Etherlink III [29]3c509B (ISA)
+ * [30]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 [31]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 [32]ISA slots placed on the riser card in this
+ PC. It does not even have the newer but also legacy [33]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 [34]online managed to go up
+ to 128MB RAM.
+
+Expansion cards
+
+ The 3 ISA slots are fully filled with the following
+
+ A [35]Sound Blaster 16 CT2950 PnP, 10Mbps 3Com Etherlink
+ III [36]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: [37]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 [38]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 [39]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:
+
+ 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
+ [40]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!
+
+ Once done we just compile the Linux kernel!
+
+Step 6: Install Bootloader
+
+ The usual bootloader used by Linux today is [41]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 [42]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 7: 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 8: 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 [43]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 [44]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
+
+ [45]Linux From Scratch > Gentoo > [46]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 [47]LPX form factor for
+ its PSU. Not only that, it does not use the modern ATX power connector.
+ It uses the [48]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. [49]ATX-AT P8/P9 converter with -5V output I bought on Ebay
+ 2. [50]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![/caption]
+
+ 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.
+
+ [51]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... [52]Source 2:
+ Info World July 1993
+
+ Ironically this makes it safe from the [53]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 [54]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 [55]low-level detailed instructions I have documented on
+ Github.
+
+ I have related projects as well, [56]Windows 3.1 on a modern PC,
+ [57]Windows XP on a modern PC and the [58]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 [59]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?
+
+Presentation
+
+ I gave a talk about my project at the [60]Hackware v3.8 meetup. Here is
+ the video and the slides.
+
+ IFRAME: [61]https://www.youtube.com/embed/1dgc1oq5br8
+
+ *
+ + [62]retrocomputing
+ + [63]hacks
+ *
+ + None
+
+ Please enable JavaScript to view the [64]comments powered by Disqus.
+ [65]comments powered by Disqus
+ My First Conference Emcee Experience
+ Why I use the IBM Model M keyboard that is older than me?
+
+Recent posts
+
+[66]How do I produce my flight videos?
+
+ November 6, 2021
+
+[67]Review, usage and repair of the Framework laptop
+
+ September 21, 2021
+
+[68]Birthday 2021: Year in Review and going forward
+
+ September 5, 2021
+
+[69]My Dos and Don'ts when trying to convince the unvaccinated
+
+ August 17, 2021
+
+[70]My First Helicopter Ride
+
+ July 21, 2021 [71]See more
+
+[72]Categories
+
+ * [73]singapore25
+ * [74]hacks19
+ * [75]personal18
+ * [76]aviation14
+ * [77]politics14
+ * [78]school9
+ * [79]book-reviews8
+ * [80]retrocomputing8
+ * [81]teardowns8
+ * [82]hackathon4
+ * [83]admin3
+ * [84]product-reviews3
+ * [85]repair-kopitiam3
+ * [86]keyboards2
+ * [87]quiz2
+ * [88]dvorak1
+ * [89]flight-sim1
+ * [90]vaccination1
+
+ © 2021 YKM's Corner on the Web .
+ Theme: [91]Hugo Future Imperfect Slim
+ A [92]HTML5 UP port | Powered by [93]Hugo
+ [94]free hit counter
+
+References
+
+ Visible links:
+ 1. https://yeokhengmeng.com/
+ 2. https://yeokhengmeng.com/
+ 3. https://yeokhengmeng.com/categories/aviation
+ 4. https://yeokhengmeng.com/categories/retrocomputing
+ 5. https://yeokhengmeng.com/categories/
+ 6. https://yeokhengmeng.com/favourite-quotes/
+ 7. https://yeokhengmeng.com/about-me/
+ 8. https://yeokhengmeng.com/2018/01/make-the-486-great-again/#lang-menu
+ 9. https://yeokhengmeng.com/2018/01/make-the-486-great-again/
+ 10. https://yeokhengmeng.com/zh
+ 11. https://yeokhengmeng.com/
+ 12. https://yeokhengmeng.com/2018/01/make-the-486-great-again/
+ 13. https://geekcamp.sg/
+ 14. https://yeokhengmeng.com/2017/11/my-first-conference-emcee-experience/
+ 15. https://en.wikipedia.org/wiki/Intel_80486
+ 16. https://www.pcworld.com/article/2020196/linux-3-8-will-drop-support-for-intel-386-chips.html
+ 17. https://www.youtube.com/embed/4qSziR6sD8Q
+ 18. https://supersillyhackathon.sg/
+ 19. https://www.chenhuijing.com/
+ 20. https://www.chenhuijing.com/blog/hardware-hacks-super-silly-hackathon/
+ 21. https://www.kernel.org/pub/linux/kernel/v2.4/
+ 22. https://retrocomputing.stackexchange.com/a/4364
+ 23. https://en.wikipedia.org/wiki/Gentoo_Linux
+ 24. https://distrowatch.com/dwres.php?resource=showheadline&story=406
+ 25. https://en.wikipedia.org/wiki/IBM_PS/1
+ 26. https://en.wikichip.org/wiki/amd/am5x86
+ 27. https://en.wikipedia.org/wiki/SIMM#72-pin_SIMMs
+ 28. https://www.philscomputerlab.com/gotek-floppy-emulator.html
+ 29. https://en.wikipedia.org/wiki/3Com_3c509
+ 30. https://en.wikipedia.org/wiki/Sound_Blaster_16
+ 31. https://www.philscomputerlab.com/gotek-floppy-emulator.html
+ 32. https://en.wikipedia.org/wiki/Industry_Standard_Architecture
+ 33. https://en.wikipedia.org/wiki/Conventional_PCI
+ 34. http://www.vogons.org/viewtopic.php?t=28748
+ 35. https://en.wikipedia.org/wiki/Sound_Blaster_16
+ 36. https://en.wikipedia.org/wiki/3Com_3c509
+ 37. http://www.thinkwiki.org/wiki/Category:T430
+ 38. https://github.com/yeokm1/gentoo-on-486
+ 39. https://www.gentoo.org/downloads/
+ 40. https://wiki.gentoo.org/wiki/Stage_tarball
+ 41. https://wiki.gentoo.org/wiki/GRUB2
+ 42. https://en.wikipedia.org/wiki/LILO_(boot_loader)
+ 43. https://www.plop.at/en/bootmanager/intro.html
+ 44. http://www.pcguide.com/ref/hdd/if/ide/confCable80-c.html
+ 45. http://www.linuxfromscratch.org/
+ 46. https://www.archlinux.org/
+ 47. http://www.pcguide.com/ref/power/sup/formLPX-c.html
+ 48. https://www.computerhope.com/jargon/p/p8.htm
+ 49. http://www.ebay.com.sg/itm/ATX-20-PIN-to-AT-P8-P9-CONVERTER-WITH-5V-ON-OFF-SWITCH-DUMMY-LOAD-USA-MADE/251025150787
+ 50. http://www.mini-box.com/picoPSU-150-XT
+ 51. https://books.google.com.sg/books?id=MLJClvCYh34C&pg=PA122&lpg=PA122&dq=486+branch+prediction&source=bl&ots=gcMvZFz2Pz&sig=FJ9fEmH426N7eoHxLupu5x2ZrdQ&hl=en&sa=X&ved=0ahUKEwi7k5aCucXYAhUHQY8KHcgACkUQ6AEILjAB#v=onepage&q=486%20branch%20prediction&f=false
+ 52. https://books.google.com.sg/books?id=QzsEAAAAMBAJ&pg=PA59&lpg=PA59&dq=486+branch+prediction&source=bl&ots=LCXnhUpS83&sig=g59BBBuiCx-qM6bOjRW5mkq1Nug&hl=en&sa=X&ved=0ahUKEwi7k5aCucXYAhUHQY8KHcgACkUQ6AEIPDAD#v=onepage&q=486%20branch%20prediction&f=false
+ 53. https://meltdownattack.com/
+ 54. https://blogs.msdn.microsoft.com/oldnewthing/20130319-00/?p=4913
+ 55. https://github.com/yeokm1/gentoo-on-486/
+ 56. https://yeokhengmeng.com/2016/09/windows-for-workgroups-3-11-on-vintage-and-modern-hardware-in-2016/
+ 57. https://yeokhengmeng.com/2016/04/installing-windows-xp-on-a-modern-unsupported-haswell-system-in-2016/
+ 58. https://yeokhengmeng.com/2017/01/a-science-project-bringing-the-covox-speech-thing-to-2017/
+ 59. https://www.freebsd.org/doc/handbook/bsdinstall-hardware.html
+ 60. https://www.facebook.com/events/200105140541056/
+ 61. https://www.youtube.com/embed/1dgc1oq5br8
+ 62. http://yeokhengmeng.com/categories/retrocomputing
+ 63. http://yeokhengmeng.com/categories/hacks
+ 64. https://disqus.com/?ref_noscript
+ 65. https://disqus.com/
+ 66. https://yeokhengmeng.com/2021/11/how-do-i-produce-my-flight-videos/
+ 67. https://yeokhengmeng.com/2021/09/review-usage-and-repair-of-the-framework-laptop/
+ 68. https://yeokhengmeng.com/2021/09/birthday-2021-year-in-review-and-going-forward/
+ 69. https://yeokhengmeng.com/2021/08/my-dos-and-donts-when-trying-to-convince-the-unvaccinated/
+ 70. https://yeokhengmeng.com/2021/07/my-first-helicopter-ride/
+ 71. https://yeokhengmeng.com/post/
+ 72. https://yeokhengmeng.com/categories
+ 73. https://yeokhengmeng.com/categories/singapore/
+ 74. https://yeokhengmeng.com/categories/hacks/
+ 75. https://yeokhengmeng.com/categories/personal/
+ 76. https://yeokhengmeng.com/categories/aviation/
+ 77. https://yeokhengmeng.com/categories/politics/
+ 78. https://yeokhengmeng.com/categories/school/
+ 79. https://yeokhengmeng.com/categories/book-reviews/
+ 80. https://yeokhengmeng.com/categories/retrocomputing/
+ 81. https://yeokhengmeng.com/categories/teardowns/
+ 82. https://yeokhengmeng.com/categories/hackathon/
+ 83. https://yeokhengmeng.com/categories/admin/
+ 84. https://yeokhengmeng.com/categories/product-reviews/
+ 85. https://yeokhengmeng.com/categories/repair-kopitiam/
+ 86. https://yeokhengmeng.com/categories/keyboards/
+ 87. https://yeokhengmeng.com/categories/quiz/
+ 88. https://yeokhengmeng.com/categories/dvorak/
+ 89. https://yeokhengmeng.com/categories/flight-sim/
+ 90. https://yeokhengmeng.com/categories/vaccination/
+ 91. https://github.com/pacollins/hugo-future-imperfect-slim
+ 92. https://html5up.net/future-imperfect
+ 93. https://gohugo.io/
+ 94. https://statcounter.com/
+
+ Hidden links:
+ 96. https://yeokhengmeng.com/2018/01/make-the-486-great-again/#site-nav
+ 97. https://github.com/yeokm1
+ 98. https://linkedin.com/in/yeokhengmeng
+ 99. https://facebook.com/yeokhengmeng
+ 100. https://youtube.com/yeokm1
+ 101. https://instagram.com/yeokm1
+ 102. https://twitter.com/yeokm1
+ 103. https://telegram.me/yeokm1
+ 104. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-capabilities.jpg
+ 105. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/super-silly-hackathon-team486.jpg
+ 106. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-logo.png
+ 107. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-original-spec.jpg
+ 108. https://yeokhengmeng.com/2018/01/make-the-486-great-again/gentoo-486-innards-front.jpg
+ 109. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-slots.jpg
+ 110. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-cards.jpg
+ 111. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-innards.jpg
+ 112. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-back.jpg
+ 113. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-t430.jpg
+ 114. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-livecd-boot.jpg
+ 115. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-gentoo-default-partitioning.png
+ 116. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-bios.jpg
+ 117. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-disk-layout.png
+ 118. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-stage3.png
+ 119. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-64bit.png
+ 120. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-486.png
+ 121. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-isa.png
+ 122. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-pnp.png
+ 123. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-isa-ata.png
+ 124. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-3com-support.png
+ 125. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-sb16.png
+ 126. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-ide.jpg
+ 127. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-at-converter.jpg
+ 128. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-at-converter-assembled.jpg
+ 129. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-brick.jpg
+ 130. https://yeokhengmeng.com/2017/11/my-first-conference-emcee-experience/
+ 131. https://yeokhengmeng.com/2018/07/why-i-use-the-ibm-model-m-keyboard-that-is-older-than-me/
+ 132. https://yeokhengmeng.com/2021/11/how-do-i-produce-my-flight-videos/
+ 133. https://yeokhengmeng.com/2021/09/review-usage-and-repair-of-the-framework-laptop/
+ 134. https://yeokhengmeng.com/2021/09/birthday-2021-year-in-review-and-going-forward/
+ 135. https://yeokhengmeng.com/2021/08/my-dos-and-donts-when-trying-to-convince-the-unvaccinated/
+ 136. https://yeokhengmeng.com/2021/07/my-first-helicopter-ride/
+ 137. https://yeokhengmeng.com/2018/01/make-the-486-great-again/