• Please review our updated Terms and Rules here

Has anyone booted a recent Linux kernel on a 486?

TheLazy1

Experienced Member
Joined
Jun 2, 2009
Messages
370
Location
Toronto, Ontario, Canada
I've been trying to build one for the past 2 days but I'm beginning to think it's impossible.

Of all my attempts it either:
Instantly reboots
Hangs at a blinking cursor
Hangs at "Booting the kernel"

I built a uClibc based userspace which runs fine under Qemu at least, but it's all moot if I can't get the kernel to start.
:D

I've tried grub4dos and loadlin, both have the same end result so I think I can rule that out.
The kernel config is set to 486 and I'm using an i486 toolchain, I have no idea what else I can check.

Any thoughts?
 
Last edited:
I'm not sure, my 486 has 40MB RAM and so far all of the kernels I've compiled have run under qemu with that amount.
Perhaps I need to learn kernel debugging and try to figure out where it's hanging, though it's quite a bit of work for just screwing around.
 
I doubt RAM is a problem. Linux never needed much RAM to boot, I don't think that has changed much for modern kernels.
386 support was removed from the code base recently, maybe something was thrown out with the bathwater so to speak? On the other hand there must be others using newer kernel sources with a 486..
What's the Linux kernel version? Have you tried 'bisecting' back to some older versions which might work?j

-Tor
 
The earliest kernel I've tried is 2.6.32.60 (earliest in gentoo's portage), and that didn't work either but I'm going to try again with a fresh config and i386 compiler.
I'll have to look into bisecting since I have no idea, oddly enough all of my main kernels ran fine so I've never needed to go further.

Edit:
Well, that's odd...
2.6.32 Seems to be booting fine now, well at least the kernel loads.

:D

Edit #2:
Perhaps it was the compiler?
I get a panic with do_invalid_op listed in the stack trace.

I'm going to assume that even with -march=i486 an i686 compiler will somehow sneak in i686 code.
 
Last edited:
I have booted the latest 3.9-rc7 on a Pentium 1, which is i586 and NOT i686 which is what most Linux kernels require these days. Debian builds a kernel for 486 and Pentium 1 systems called linux-image-2.6.32-5-486.

I think the generic Debian installer disk will boot, but you have to tell it to chose the 486 kernel package, otherwise it'll install the wrong one.
 
Interestingly enough the real problem was uClibc.
By default it will be built for i686 regardless of the CFLAGS you set, so it did eventually work but I just got bored and moved on.

:P
 
Linux coders are lazy as hell now. The last time I tried somehting on a 486 which was about six years ago it was barely useable. Today it will require probably far more kernel customization to make it behave which seems like a waste of time when you realize that a lot of linux apps probably would run due to version issues.
 
Links in graphics mode ran fairly decently, though I was using the FB console instead of X.
I used it to test my null-modem serial mouse simulator, which sort of worked except for the lagginess.
 
TheLazy1,
Instead of trying to build as the first step, download some ISO's of various choices, and burn them to cdrw, then boot and test them. After they work and you are
satisfied, you can install, or build a minimum system and add only the items you want.

There are several Linux Distro's that still support the 486 or greater CPU. For instance I have an OLD Compaq 1672 - K6-2 Laptop that was built for Win 98, Not Win98SE.
I've Installed Crunch Bang 8.04 and it runs well on my AMD K6-2 CPU, with 192 Meg RAM.

If you go to http://distrowatch.com, you can search for all the Distro's that meet your search specifications. I searched for "Linux", "486" and came up with the following eight:

1. CrunchBang Linux
2. Slackware Linux
3. Gentoo Linux
4. TinyCore Linux
5. Salix OS
6. Semplice Linux
7. Vector Linux
8. Slackel

It's wierd that Debian 7 isn't listed as working on the 486, because Debian clearly states it supports the 486:

http://www.debian.org/releases/stable/i386/ch02s01.html.en#idp5522608

2.1.2.1. CPU

Nearly all x86-based (IA-32) processors still in use in personal computers are supported, including all varieties of Intel's "Pentium" series. This also includes 32-bit AMD and VIA (former Cyrix) processors, and processors like the Athlon XP and Intel P4 Xeon.

However, Debian GNU/Linux wheezy will not run on 386 or earlier processors. Despite the architecture name "i386", support for actual 80386 processors (and their clones) was dropped with the Sarge (r3.1) release of Debian[2]. (No version of Linux has ever supported the 286 or earlier chips in the series.) All i486 and later processors are still supported[3].


Another Distro that works well with a 486 is Porteus, and it has the most up to date Kernel, although the search parameters didn't locate it.

http://www.porteus.org/info/features.html
32 Bit
Memory
------
36 MB to boot porteus.
256 MB to run Xwindow with Razor or Xfce
512 MB to be able to use copy2ram cheatcode

Processor
---------
i486 or better, Pentium or AMD are both OK.


64 Bit

Memory (it is not expected that a 64-bit systems will have less than 512MB)
------

512 MB to run Xwindow with KDE-4
768 MB to be able to use copy2ram cheatcode with KDE-4

256 MB to run Xwindow with Xfce
512 MB to be able to use copy2ram cheatcode with Xfce

Lxde requirements are lower - 256MB schould be enough for all modes.




Processor
---------
Any processor with support for 64-bit instructions. Pentium or AMD are both OK.



Dam Small Linux wasn't located either by the search on DistroWatch, but DSL hasn't been updated in a couple of years.

http://www.damnsmalllinux.org/wiki/minimum_hardware_requirements.html

CLI (non-graphical Linux) Minimum Requirements

486dx or 100% compatible processor
8mb ram (16mb recommended)
CDROM drive
1.44mb floppy drive (for boot floppy, if needed)
Monochrome (2 color) monitor

[edit]
Minimum Requirements for DSL with X-window

486dx or 100% compatible processor
16mb ram (24mb recommended)
dual-speed CDROM (quad-speed or better recommended)
1.44mb floppy drive (for boot floppy, if needed)
VGA monitor and video card
a mouse (serial, ps/2, usb)
and a higher level of computer processor

And I'd bet there are several more that I haven't installed and played with.


One of these is Slitaz.

http://en.wikipedia.org/wiki/SliTaz

SliTaz GNU/Linux is supported on all machines based on the i486 or x86 Intel compatible processors.[2] The Live CD has four variants of SliTaz, requiring from 192 MB of RAM for the Core system to 48 MB for a text mode and X Window System.[2] Slitaz can even run in 16 megabytes of RAM and a little swap memory. [4] SliTaz can be booted from a Live CD, Live USB, floppy disk, or a local area network,[5] or can be installed, requiring approximately 100 MB of hard disk space.[6]


AntiX M11 IceWM Rox Default (Fluxbox, wmii and dwm also installed)
Arch Linux (XFCE) i686
Puppy
Zenwalk Linux
CRUX i686

You might also check out Mephis, but I'm not sure about the Minimum specifications for Mephis right now.


There are numerous possibilities. Download some LiveCD's and give them a try. Or do a Minimum Install and build the system you want.

Thanks.

Larry
 
Last edited:
So it turns out that the Linux kernel has been broken on i80486 machines for about two years now, since the 3.4 kernel all the way up to 4.8. It is likely going to be fixed in 4.9. The problem was because the 486 pushes garbage in the upper 16 bits of the code segment register onto the stack when saving it. More recent processors zero-extend the high bits, and the kernel expected that.

Here is an archive of the post : http://www.spinics.net/lists/stable/msg151820.html

I also have problems with GRUB (aka GRUB-2, not legacy GRUB). It loads the kernel and initial ramdisk, and upon booting them, it reboots the 486.
 
Back
Top