The trouble with 32 bit CPUs

dos2unix

Well-Known Member
Joined
May 3, 2019
Messages
4,408
Reaction score
4,601
Credits
41,638
Understanding 32-bit Linux: Why Some Distros Won't Run on Your Old CPU
A practical guide to x86 CPU generations and Linux compatibility

The Problem
You download a "32-bit" Linux distro, burn it to a CD or USB, boot your old PC... and it crashes immediately. Or maybe it worked last year, but the new version doesn't. What's going on?
The term "32-bit" is misleading. It's actually a spectrum of CPU architectures, and not all 32-bit distros run on all 32-bit CPUs.

The x86 CPU Hierarchy
The x86 architecture evolved over decades, with each generation adding new instructions:
ArchitectureCPUsKey Addition
i386 80386 Original 32-bit
i486 80486 CMPXCHG, XADD
i586 Pentium, Pentium MMXCPUID, RDTSC
i686 Pentium Pro, Pentium II/III/4, Core seriesCMOV, FCMOV

The Critical Rule: Compatibility Goes UP, Not Down
This is the key insight most people miss:

i386 code runs on everything (386 and newer)
i686 code runs on i686+ CPUs
i686 code CRASHES on i586 and older

When a distro is "built for i686," it uses the CMOV (conditional move) instruction throughout. If your CPU doesn't have CMOV, you get an illegal instruction error and the system halts.

What Distros Actually Target
Most "32-bit" distros today are actually i686 minimum:
DistroMinimum CPUNotes
Alpine 32-biti586Good for Pentium 1/MMX
Arch32i686Pentium Pro+ only
Void Linux i686 i686Pentium Pro+ only
Slackware i586 Still supports Pentium 1
Debian 32-biti686 (Dropped 32-bit entirely recently)

Additional Gotchas: PAE and SSE
Beyond the base architecture, some distros now require:
PAE (Physical Address Extension)
Allows 32-bit CPUs to address more than 4GB RAM. Some distros require PAE-capable CPUs for their 32-bit kernels.
CPUs WITHOUT PAE (won't boot PAE-required distros):

Some early Pentium M processors
Certain Intel Atom models (N2xx series)
AMD Geode

SSE/SSE2
Some userspace software now requires SSE or SSE2 instructions.

SSE: Pentium III and later
SSE2: Pentium 4 and later


Quick Reference: What Will My CPU Run?
Intel
CPUArchitectureWhat It Runs
80386i386Only i386-targeted distros
80486i486i386, i486 builds
Pentium (P5)i586i386, i486, i586 builds
Pentium MMXi586i386, i486, i586 builds
Pentium Proi686Everything 32-bit
Pentium II/IIIi686 + SSEEverything 32-bit
Pentium 4i686 + SSE2Everything 32-bit

AMD
CPUArchitectureWhat It Runs
Am386/Am486i386/i486Matching builds only
K5i586Up to i586 builds
K6/K6-2/K6-IIIi586Up to i586 builds
Athlon/Duroni686Everything 32-bit
Athlon XPi686 + SSEEverything 32-bit

Troubleshooting Guide
"Illegal instruction" on boot
Cause: Distro is i686, your CPU is i586 or older.
Fix: Use a distro that targets i586 (Alpine, Slackware) or build your own kernel.
"This kernel requires PAE"
Cause: Kernel requires PAE, your CPU doesn't have it.
Fix: Find a non-PAE kernel or use a distro with non-PAE support.
Worked before, new version crashes
Cause: Distro bumped minimum CPU requirements in an update.
Fix: Check release notes for minimum CPU changes; use older version or switch distros.
Random crashes in specific applications
Cause: Application compiled with SSE2, your CPU only has SSE (or none).
Fix: Compile from source with appropriate flags, or find older package versions.

Building Your Own Kernel for Old Hardware
If you have a modern machine, you can cross-compile a kernel for your old hardware:
 
Last edited:


I think Tiny Core still builds their kernel for 486, though I think none of the devs has a 486 on which to test that so even though the kernel is ok that way, sometimes a community-provided app will slip by with a "bad" instruction in it.

Apparently, its getting harder and harder to maintain a 486-capable kernel, so that may be phased out soon.
 
there's not a lot to worry about. because "new" releases of anything 32-bit anymore. will run only on "i686" platform. eventually that will be another flame. that will be put out.

whoever really really wants to keep going. say with intel486dx or something like that. will have to be stuck on operating systems. existing before there was such a thing as "systemd".

it reminded me. about the user who wanted to run linux. on mac g4/g5. then i had to tell them. that freebsd could work on that. intel486dx existed during that earlier time, right? so cannot really hope. for a nice, helpful, friendly gui anymore with it. try to keep going with a web browser. which has enough "security." but with technology it's always forward, if not also upward.
 
there's not a lot to worry about. because "new" releases of anything 32-bit anymore. will run only on "i686" platform. eventually that will be another flame. that will be put out.
I agree, the problem isn't can my i686 (Pentium Pro) run any flavor of 32 bit Linux.
This article was written, more in the spirit of.. why can't my 386, 486, or 586 system run some 32 bit distro?
 
Understanding 32-bit Linux: Why Some Distros Won't Run on Your Old CPU
A practical guide to x86 CPU generations and Linux compatibility

The Problem
You download a "32-bit" Linux distro, burn it to a CD or USB, boot your old PC... and it crashes immediately. Or maybe it worked last year, but the new version doesn't. What's going on?
The term "32-bit" is misleading. It's actually a spectrum of CPU architectures, and not all 32-bit distros run on all 32-bit CPUs.

The x86 CPU Hierarchy
The x86 architecture evolved over decades, with each generation adding new instructions:
ArchitectureCPUsKey Addition
i386 80386 Original 32-bit
i486 80486 CMPXCHG, XADD
i586 Pentium, Pentium MMXCPUID, RDTSC
i686 Pentium Pro, Pentium II/III/4, Core seriesCMOV, FCMOV

The Critical Rule: Compatibility Goes UP, Not Down
This is the key insight most people miss:

i386 code runs on everything (386 and newer)
i686 code runs on i686+ CPUs
i686 code CRASHES on i586 and older

When a distro is "built for i686," it uses the CMOV (conditional move) instruction throughout. If your CPU doesn't have CMOV, you get an illegal instruction error and the system halts.

What Distros Actually Target
Most "32-bit" distros today are actually i686 minimum:
DistroMinimum CPUNotes
Alpine 32-biti586Good for Pentium 1/MMX
Arch32i686Pentium Pro+ only
Void Linux i686 i686Pentium Pro+ only
Slackware i586 Still supports Pentium 1
Debian 32-biti686 (Dropped 32-bit entirely recently)

Additional Gotchas: PAE and SSE
Beyond the base architecture, some distros now require:
PAE (Physical Address Extension)
Allows 32-bit CPUs to address more than 4GB RAM. Some distros require PAE-capable CPUs for their 32-bit kernels.
CPUs WITHOUT PAE (won't boot PAE-required distros):

Some early Pentium M processors
Certain Intel Atom models (N2xx series)
AMD Geode

SSE/SSE2
Some userspace software now requires SSE or SSE2 instructions.

SSE: Pentium III and later
SSE2: Pentium 4 and later


Quick Reference: What Will My CPU Run?
Intel
CPUArchitectureWhat It Runs
80386i386Only i386-targeted distros
80486i486i386, i486 builds
Pentium (P5)i586i386, i486, i586 builds
Pentium MMXi586i386, i486, i586 builds
Pentium Proi686Everything 32-bit
Pentium II/IIIi686 + SSEEverything 32-bit
Pentium 4i686 + SSE2Everything 32-bit

AMD
CPUArchitectureWhat It Runs
Am386/Am486i386/i486Matching builds only
K5i586Up to i586 builds
K6/K6-2/K6-IIIi586Up to i586 builds
Athlon/Duroni686Everything 32-bit
Athlon XPi686 + SSEEverything 32-bit

Troubleshooting Guide
"Illegal instruction" on boot
Cause: Distro is i686, your CPU is i586 or older.
Fix: Use a distro that targets i586 (Alpine, Slackware) or build your own kernel.
"This kernel requires PAE"
Cause: Kernel requires PAE, your CPU doesn't have it.
Fix: Find a non-PAE kernel or use a distro with non-PAE support.
Worked before, new version crashes
Cause: Distro bumped minimum CPU requirements in an update.
Fix: Check release notes for minimum CPU changes; use older version or switch distros.
Random crashes in specific applications
Cause: Application compiled with SSE2, your CPU only has SSE (or none).
Fix: Compile from source with appropriate flags, or find older package versions.

Building Your Own Kernel for Old Hardware
If you have a modern machine, you can cross-compile a kernel for your old hardware:
Raspberry Pi Org have a 32 bit OS for older PC, it might be useful for some. https://www.raspberrypi.com/software/operating-systems/
 
I thought Raspberry's were all ARM, not x86? (I could be wrong).
 
It seems ARM CPUs have much same problems. 32bit vs 64bit sure, that's obvious.

But even in 32bit land, ATMv6, vs ARMv7, vs ARMv8, etc... all ARM OS's arn't compatible with all ARM CPUs.

Now some of you have no choice but to run 32bit systems. But even if your OS is 32bit, and it runs fine, certain apps are geetting harder and harder to run, docker has recently discontinued 32bit support.
 


Follow Linux.org

Members online


Top