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
blob: bb365475a88fc48d1c2132dd7789deed33918b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
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/