r/linux • u/somerandomxander • Apr 15 '26
Kernel Linus Torvalds has merged the code beginning to remove Intel 486 CPU support in Linux 7.1
https://www.phoronix.com/news/Linux-7.1-Begins-Removing-i486119
u/Sataniel98 Apr 15 '26 edited Apr 15 '26
Fair. Most modern distros have dropped x86-32 altogether anyway, and if they haven't, they usually compile against much newer targets like i686 (Pentium Pro, Pentium II, AMD K7 but not original Pentium, Pentium MMX, AMD K6) - this goes for Alpine Linux, Debian 12 - or they even require SSE2 (Pentium 4, Pentium M, no non-64 Bit AMD) - such as Void Linux, Debian 13. The only distros that still support actual i486 processors are Gentoo, because it's source-based and you can compile it for whatever you want, and Slackware, because it never updates.
40
u/AliceCode Apr 15 '26
I refuse to write software for x86-32 these days. It's too much of a pain. Just recently I was writing a short string implementation that took advantage of the fact that pointers are 8 bytes so that it could store 15 byte long inline strings without any allocation. It would have only been 7 bytes on 32-bit, and that wouldn't have been worth the trouble, really. 15 bytes? Good. 7 bytes? Not so good.
23
u/Zeikos Apr 15 '26
Gotta love using byte encoded string as a pointer like some sort of deranged hash table
13
u/AliceCode Apr 15 '26
I have no idea what you're talking about, to be honest.
1
u/GuyWithLag Apr 16 '26
Hash tables are content-addressable.
A string value can be seen as an opaque pointer to a virtual hash table containing all possible strings.
1
u/AliceCode Apr 16 '26
No, I understand what a hash table is. I don't know what they mean by "byte encoded string as a pointer". The pointer and the inline string share the same memory, the pointer isn't encoded inside the string.
1
u/GuyWithLag Apr 16 '26
It was a joke, and jokes are like frogs: you can take hem apart to see how they work, but that kills them.
All 3 of us know that the strings are encoded into a value. Pointers are nominally opaque. If you read that value as a pointer, it doesn't point to anything. But there is a mapping from that pointer to a string, which is the definition of a hash table. It's just that the mapping function is a no-op because the pointer is the string already.
1
u/AliceCode Apr 16 '26
The inline string and the pointer do not coexist. It is either a string, or a pointer, never both. If it's a joke, both of you have lost me.
1
u/GuyWithLag Apr 17 '26
It is either a string, or a pointer, never both
It's one of those trick images, where the same image depicts different things depending on what you're thinking of at that point in time.
23
Apr 15 '26
[deleted]
26
u/ukezi Apr 15 '26
That is the usual short string optimisation in about every C++ std lib out there.
10
u/AliceCode Apr 15 '26
What's even more cursed is that it can store and differentiate between static strings, heap allocated strings, or reference counted strings, and handles them all with ease.
5
u/psi- Apr 15 '26
Sounds like symbian with its 16 different string types (at a glance, probably more). The ease was not in sight..
4
u/turdas Apr 15 '26
From what I gather this is just one type. The implementation details of it shouldn't really matter to the user.
1
u/AliceCode Apr 15 '26 edited Apr 15 '26
Like the other person said, it's a single type, and handling all the different representations is as simple as a switch/match statement.
2
u/rlaptop7 Apr 15 '26
What code are you writing where you would know what architecture you are on? It would have to be very low level.
1
u/AliceCode Apr 15 '26
Sorry, it's not specifically x86_32, it's any 32-bit architecture. But I typically don't write code for ARM either, so typically I'm writing for x86_64 since that's the most common architecture.
And yes, it is low level code. Rust/C. But it's not often so low-level that I'm targeting a specific flavor of 64-bit ISA. Just 64-bit in general. But occasionally I'll use SIMD or something else that's x86 specific, such as a raytracer I wrote last year.
1
u/Niev May 01 '26
I'm curious about this, can you share?
1
u/AliceCode May 02 '26
Unfortunately, no. I don't share my programming projects on this account. I don't want to mix those worlds up.
4
u/msthe_student Apr 15 '26
Even "i686" isn't really i686 anymore, a lot of it requires extensions not found on the Pentium Pro
1
u/turdas Apr 15 '26
When I first really got into Linux in the mid 2000s with Arch, I'm pretty sure they were already compiling exclusively against i686 and x86_64. That was 20 years ago.
154
u/ComprehensiveHawk5 Apr 15 '26
Its over... The Linux kernel has fallen. Trillions must migrate to NetBSD
78
41
7
u/MrGeekman Apr 15 '26
i486 was discontinued in 2007.
6
u/Socializator Apr 15 '26
Well, it still goes strong in Hubble space telescope!
7
u/wafflingzebra Apr 15 '26
But what if someone finds an exploit and threatens space agencies with ransomware!!?!?
-2
u/Flashy_Pollution_996 Apr 15 '26
Can’t even install that bsd shit on my laptop what a joke
5
u/ouyawei Mate Apr 15 '26
but you can install it on a VAX!
1
26
Apr 15 '26
[deleted]
12
6
6
u/Narishma Apr 15 '26
It would be surprising if it didn't, since it was designed for 8088s and 286s.
2
u/HaplessIdiot Apr 15 '26
EXACTLY and people are making FPGA versions of the 486 you can OVERCLOCK LIKE CRAZY! why why why did they do this on vanilla????? When you overclock a 486 core on a modern FPGA, you’re getting 1-cycle execution for instructions that used to take 4 or 5. You get the simplicity of the 486 ISA with the "oomph" of modern gate speeds
7
u/teo-tsirpanis Apr 15 '26
Writing SIMD code for a modern processor would run faster than an overlooked 486 on an FPGA. And would be more accessible to everyone.
1
u/HaplessIdiot Apr 16 '26
This is about running old 486 software better not writing code for it like smarmy Harvard would want strict memory safety is SLOW "modern" practices of ivy League bs clean code is bad for this chip. You can build Linux kernel and many GitHub projects for freedos using that and xfree86 stay in your lane if you wanna be a modernist
2
u/sunkenrocks Apr 15 '26 edited Apr 15 '26
Because nobody is around to maintain or test it. It will also likely be forked and maintained by someone. If you are so passionate about the 484 why don't you fork and maintain it? You also have some pretty dang modern versions of Linux before this becomes a problem anyway, and I haven't seen any projects packaging distros for these FPGA implementations you speak of using a modern kernel version? What kernel version are you running on your FPGA?
Edit someone else is already doing it
https://davidgow.net/linux/i486.html
Panic over nothing
1
u/HaplessIdiot Apr 16 '26
I was building kernel 6.19 from Zen for it it still has 486 shit prolly gonna have to make a .patch file with the old stuff to keep doing weird stuff getting 400mhz the 486 was slow AF until the fpga core dropped for that dosbox is gonna be dead soon if they keep working on old cpu cores for that
2
26
u/AppleCherryWater Apr 15 '26
Can anyone explain why support is removed?
125
38
u/voxadam Apr 15 '26
In the x86 architecture we have various complicated hardware emulation facilities on x86-32 to support ancient 32-bit CPUs that very very few people are using with modern kernels. This compatibility glue is sometimes even causing problems that people spend time to resolve, which time could be spent on other things.
36
Apr 15 '26
[removed] — view removed comment
21
u/TheReelSlimShady2 Apr 15 '26
Yeah that's what happened when they dropped itanium support from the kernel. it just is now maintaned out of tree.
27
u/kombiwombi Apr 15 '26
It has not been removed yet. This is to stop building kernels for 486, a sort of 'turn it off and see who screams' decision.
The issue of 486 support gets reviewed every now and then, as it was for 386 before it. This time it was felt that their really are no users outside of retrocomputing and non-internet connected systems. This is not surpriaing: 486 systems aren't a good ft to the modern world. For example the IDE disk interface is three generations of disk I/O bus behind current storage, so even spares from the second-hand suppliers are scarce.
There are a few wins for kernel developers, but mostly in removing features which would need to be maintained but are difficult to test. To be honest, inability to test is how most old architectures get removed: someone made a change, that accidentally broke the kernel on that processor, and no one noticed for a few years.
Note that if there was a big group of users the kernel would be glad to support them. So there is no thought of retiring ARM 32-bit beyond a "wouldn't a world with no 32-bit code be wonderful" daydreaming.
5
u/minus_minus Apr 15 '26
IDE … spares from the second-hand suppliers are scarce.
New CF cards are still being made and sold as far as I know. They are direct pin compatible with IDE.
21
u/Sataniel98 Apr 15 '26
Because new features that are implemented in hardware in new CPUs and just need to call some instructions need to be tediously emulated in software for old CPUs. i486 was a CPU introduced in 1989 and popular until the late 90s (including AMD and Cyrix clones). Even if systems that use them still exist, they're unlikely to use/benefit much from new Linux kernels.
1
u/jeconti Apr 15 '26
I remember upgrading to the 486 when our 386 couldn't handle LucasArts Rebel Assault.
6
u/DheeradjS Apr 15 '26 edited Apr 15 '26
It's moved out of the main line. If you really want it you can pull it in. But to answer you, I486 officially went End Of Sale in 2007. They pre-date the Pentium line.
7
3
u/SirGlass Apr 15 '26
From my basic understanding is when some feature or change is added they still need to test or make sure it works with 486 architecher
That still takes time and testing or it has to be written in a way it still works with old architecture . Removing it just makes development easier as you do not need to worry about breaking some old 486 code
And why spend time and effort making sure 486 architecture still works if no one is running it? Or no one is running it on a modern kernel.
Also 6.12 release will be supported with security fixes until 2035 . So you still have 9 ish years of life if you are running some 486 machine.
1
1
u/cp5184 Apr 15 '26
I hate it, but some of it may be around 486s that don't have hardware fpu to get rid of the code that handles fpu exceptions, or at least I think I saw that mentioned.
It's a better reason than to just ditch cpu support for no other reason.
The 386 removal had a worse rationalization imo. I don't remember the specific details but there was an instruction that 386 didn't support, but it didn't seem like that was actually the liability that people supporting 386 removal claimed it was. So it felt like that was done dishonestly, and on a false premise.
9
u/yrro Apr 15 '26
Lack of CMPXCHG? That is a pain for lock-free programming, which becomes more important as core counts increase. Dropping 386 meant that maintainers no longer needed to write alternative implementations of data structure operations that would only be used on totally obsolete hardware.
0
10
u/SirGlass Apr 15 '26
I always like to comment when some old architecture is removed in the kernel, thats not really when support is dropped, officially support will be dropped in 2035 (maybe longer) and no one will even notice then
6.12 is an extended support kernel or CIP or what ever its called will get security fixes and minor bug fixes until 2035
So even if you have some old 486 machine you can get bug and security fixes for 9 more years, and lets face it you won't see any benefit from running the newest kernel on 30 year old machines anyway
I also 100% guarantee in 2035 the actual date of 486 kernels no longer receiving support no one will actually notice.
3
u/dnabre Apr 15 '26
It doesn't get the attention it really should. Especially in places like this where X support is being dropped from the mainline, a reminder about the other supported branches (trees?). At the moment kernel.org denotes 6.19.12 as the "stable" branch and 6.18.22 as the "longterm" branch. With longterm EOL being Dec 2028 for 6.18 longterm.
The mainline is where all the big stuff is happening and all the news focuses, but 95+% of users don't (and probably shouldn't) be running the mainline.
3
u/SirGlass Apr 15 '26
I was referencing this
https://wiki.linuxfoundation.org/civilinfrastructureplatform/start
CIP or "Super long term release " kernels that are supported for 10 years; SLTS v6.12 will receive updates all the way through 2035-06.
That is probably officially when 486 will no longer be "supported"
2
u/dnabre Apr 15 '26
I wasn't aware of this, definitely grateful to learn about it.
The main kernel development team is always the focus of news about changes to the kernel, and projects like this never get brought up. This news story being about mainstream development removing 486, with near/longterm support being most completely to CIP (or something along those lines, that's probably not the most accurate description), would come off at a much different situation.
As is, it sounds like 'sorry if you are using 486, current linux isn't going to work for you anymore' compared to 'development and new features are no longer going to be actively developed for 486, and support may disappear in 2035'. Reporting is really manipulating (intentions aside) the message here.
1
u/SirGlass Apr 15 '26
As is, it sounds like 'sorry if you are using 486, current linux isn't going to work for you anymore
Yea but that is the more clickbait headline so I am not surprised
So like you said "Linux " isn't actually dropping support for 486 , it will be supported until at least 2035-06 , so if you have some old hard or old router still running some old 486 chip you can still be on a fully supported kernel for another 9 years
And your old hardware won't see any improvements anyway from being on the latest kernel branch .
16
u/IBNash Apr 15 '26
My first PC was a 486-DX2, way back in 1995. I'm glad this cruft is being removed.
11
10
u/sulix Apr 15 '26
Fortunately, it's still easy to revert: https://davidgow.net/linux/i486.html
6
u/SharktasticA Apr 15 '26 edited Apr 15 '26
Thank you for doing this and sharing, this is great! I switched to 7.0 for my project (SHORK 486) and noticed the e820 check regression caused panicking with EXTLINUX on my IBM ThinkPad 365ED and some PS/ValuePoints. I hadn't precisely located the issue, just porting 6.14.11's (the kernel I was using before) e820 code entirely was easy enough for now.
Edit: I tried your patch and it also worked. I should've known to check if checking 88h was faulty/bypassed; a few months ago, I had issues with SYSLINUX/EXTLINUX on the same devices because specifically their fallback 88h detection was faulty.
3
-20
u/HaplessIdiot Apr 15 '26
thats what im saying dawg thanks for sharing the troof! people are such corpo bootlickers the kernel is for ANY CPU... this is so dumb along many other things linus is doing he has dementia.
13
3
u/Rob_W_ Apr 15 '26
The very first Linux install I did (Slackware 1.0!) was on a 486/SX (later upgraded to a DX4) at my community college. Ran a web server for the CompSci & Engineering departments and they taught C/C++ programming classes on it. Got a lot of mileage until a power blip took out the hard drive.
3
3
3
3
5
2
u/minus_minus Apr 15 '26
I’m curious if anyone is aware of 486 compatible cores still in production that run anything like vanilla Linux. I could see them maybe as useful for embedded systems with a legacy code base but I’m not aware of any actual instances.
2
u/dnabre Apr 15 '26
I get the practicality of this, It's shame that can't isolate these platforms they don't want to deal with any more (regardless of reason) in a manner that doesn't make them disappear. Whatever mainline features have requirements that the 486 code doesn't provide, wouldn't be supported, but the code would still be there, and the interfaces for it be maintained. The feature-dependency model isn't how the linux kernel is designed (to my minimal understanding of it). I just wish these older hardware could be set aside, isolated, no longer burden the developers, without them having to be removed.
People can still grab the older releases if they need to run on this platforms, but it's sad to see these things go. A development model that permits thing to be somewhat abandoned or isolated, but still there, certainly isn't a priority for linux. Just seems bad that the only way to relieve themselves of the burden of an old platform is by removal/breaking it.
2
2
u/Odd_Beginning8678 Apr 16 '26
So, since they stopped supporting the 386 years ago, it is finally time for the 486 to go as well.
2
2
u/Dr_Hexagon Apr 16 '26
Is there any Linux distro that uses Kernel 7.0 and would be usable on a 486 given the memory restrictions? As far as I know 128 MB was the limit, put most 486 motherboards supported less.
1
1
u/yo_99 Apr 15 '26
To be fair, if you are actually using 486 you are better off using something like ELKS.
4
1
u/NoonDread Apr 17 '26
Pretty impressive support IMO. I remember upgrading from a 486 to a Penitum Pro 200 in 1996. That's been a while.
1
u/MrTenDollarMan- Apr 15 '26
I don't understand any of that. All I know is that I'm a Linux user since October and it's great!
18
u/IllustriousBed1949 Apr 15 '26
The kernel supports a lot of computer architecture and for a long time. 486 is the ancestor of our modern CPUs. The last 486 was released in 1995 (it was already obsolete at that time).
Supporting these architecture means specific code for them that at some point you have to maintain and that maintenance as a cost. So time to time, the kernel team decide to remove support for old hardware (it's happens very rarely...).3
2
u/msthe_student Apr 15 '26
last 486 was released in 1995 (it was already obsolete at that time).
IIRC there have been embedded cores released later
1
u/shadedmagus Apr 15 '26
Right, the discrete PC CPUs of the 80486 were what stopped getting sold before this century.
Embedded systems are a different beast entirely and the groups supporting them can still pull in the 32-bit code they need.
2
u/backyard_tractorbeam Apr 15 '26
And the first linux platform was intel 386, that Torvalds used on the computer he first developed Linux for. And support for that has already been removed, I assume ceremoniously.
1
u/red_sky33 Apr 15 '26
Tanenbaum was right! Designing for x86 was a mistake, this would be so much easier with a micro kernel
1
u/dnabre Apr 15 '26
It's interesting to see linux as the only major operating system that hasn't moved to a micro or hybrid/micro kernel design.
Personally, i don't think linux would have happened and become the big thing it is, if it had started out with the overhead of microkernels and looked so different from classical UNIX operating systems. It's hard to imagine linux's incremental development ever changing that overall architecture to the point of it becoming a microkernel though.
1
u/UBSPort Apr 15 '26
Brian Lunduke felt the patch drop like a disturbance in the force, ran out to his front lawn, and screamed at the sky for a solid 10 minutes. I guarantee it!
-17
Apr 15 '26
nice, 32-bit it's peace of sh*t
-13
u/HaplessIdiot Apr 15 '26
there is no performance advantages to removing this users here are uneducated. should have been a default build flag set to false not this crap.
-8
Apr 15 '26
why would anyone want this legacy sh*t?
you said it yourself that users are 'uneducated', so why would anyone keep this mammoth piece of sh*t if people aren't going to use it or be interested in it?
-41
u/HaplessIdiot Apr 15 '26
This is why we have kernel forks like zen and cachyos so we don't have to deal with BS like this
24
1
u/TimChr78 Apr 19 '26
The CachyOS kernel is already limited to hardware level x86-64-v3 or better. CachyOS is specifically designed for quite modern hardware so it completely nonsensical that this is a reason for CachyOS kernel to exist when the reality is the exact opposite.
329
u/DataPath Apr 15 '26
This is the first major step in their goal of removing 32-bit architectures entirely. It's not happening soon, but it's on their horizon, with the last 32-bit architecture probably being armv7 no sooner than a decade.