Windows XP fonctionne enfin sur un 486

Pierre Dandumont |

Certains ont du temps à perdre : Dietmar, un Allemand, a modifié le noyau de Windows XP — un système lancé en 2001 — pour qu'il puisse fonctionner sur un processeur 80486. Pour ceux qui ne connaissent que les systèmes d'Apple, la comparaison serait « Quelqu'un modifie Mac OS X Panther pour qu'il se lance sur un processeur Motorola 68040 ».

Windows XP sur un 486.

Windows XP, donc, nécessite officiellement un Pentium alors que Windows 95, lui, fonctionne même sur un simple 386. Pour bien placer les choses dans le temps, Windows XP a donc été lancé en 2001, les premiers 486 datent de 1989 et le Pentium a été introduit en 1993.

La modification nécessaire n'est pas énorme mais a demandé un peu de réflexion : le noyau de Windows XP emploie une instruction qui est apparue avec le Pentium, cmpxchg8b. Pour faire (très) simple, elle permet de comparer deux valeurs (le cmp dans son nom) et éventuellement de déplacer 8 bits en fonction du résultat (le xchg, pour eXCHanGes), comme l'explique Hack A Day. Dietmar a donc modifié le noyau de l'OS (plus exactement Windows XP Service Pack 3) pour remplacer l'instruction par un équivalent compatible avec les processeurs 486, évidemment plus lents.

Les versions modifiées sont disponibles sur archives.org pour les versions anglophones et germanophones du système d'exploitation. Une vidéo montre le résultat dans un émulateur réglé pour simuler un 486. Rappelons quand même que Windows XP nécessite 64 Mo de RAM — une valeur élevée, assez rare sur un 486 — et un processeur avec une fréquence nettement plus élevée. À l'époque, Microsoft recommandait une fréquence de 233 MHz au minimum, et les 486 fonctionnent habituellement entre 16 et 100 MHz (chez Intel).

Tags
avatar blogostef | 

Du temps à perdre à commenter un sujet sur le temps à perdre. C’est Proustien.

avatar KevinMalone | 

Il était temps, j'ai failli me résigner.

avatar radeon | 

Ha je me suis fait avoir par le titre, j’ai cru qu’il était enfin stable

avatar marc_os | 

@ radeon

> j’ai cru qu’il était enfin stable

Windows XP, héritier direct de Windows NT était stable.
Ne pas confondre avec Windows 3.x, 95, 98 ou Me qui n'avaient de commun avec Windows NT/XP quasiment que le nom Windows, Windows NT ne reposant pas sur MS-DOS, mais héritant plutôt du système VMS de DEC.

avatar radeon | 

@marc_os

On a pas eu la même expérience visiblement.

avatar Pierre.321 | 

@marc_os

D’ailleurs windows NT a été développé par des ingénieurs se chez DEC après l’abandon de VMS pour Unix préférant quitté DEC pour sortir lleur vision du futur de VMS chez Micro$oft, Windows NT.

avatar bozzo | 

Quand même 64 Mo de ram !
Mazette… à l’époque où tout ordinateur qui se respecte doit en avoir au minimum 16Go… soit 250 fois plus. 😇

avatar Matlouf | 

Ah, c'est pas 8 go ?

(Je sors, je sors...)

avatar raoolito | 

quittez ce pays, manant ! 😅

avatar Karamazow | 

Excellent cette bidouille !

Mon premier ordi : un 486 SX 33 MHz avec 4 Mo de RAM.

Et quelle émotion quand j’ai remplacé le CPU avec un DX2 à 66 MHz !
Pouvoir lancer Dune2, Warcraft 2 de façon fluide !

avatar MarcMame | 

@Karamazow

"Mon premier ordi : un 486 SX 33 MHz avec 4 Mo de RAM. "

———-
Moi c’était un ZX81.
1Ko de Ram.
L’extension à 16Ko a du attendre. Trop chère.

Mais j’ai longtemps rêvé du ZX80 qui était vendu en Kit à assembler soit même.

J’adorerais l’idée d’un iPhone Pro Max en kit.

avatar Adodane | 

@MarcMame

L'écran du ZX81 ne s'éteignait pas quand le CPU exécutait une instruction, c'était une grande evolution par rapport au ZX80.

avatar MarcMame | 

@Adodane

« L'écran du ZX81 ne s'éteignait pas quand le CPU exécutait une instruction, c'était une grande evolution par rapport au ZX80. »
————
Pas dans mes rêves où tout était parfait.

avatar scanmb | 

@MarcMame

Oric 1 🙋🏽‍♂️

avatar Pierre.321 | 

@MarcMame

Le ZX81 était aussi vendu en kit , pub sur SVM pour 690F en kit ou monté à 990F

avatar gbf | 

@Karamazow

❤️❤️❤️

avatar jerome74 | 

Une bidouille pour le faire tourner sur un vrai 486, je comprends, mais pour un émulateur qui tourne en fait sûrement sur un processeur bien plus puissant…

avatar marc_os | 

Deux commentaires pertinents trouvés sur le site du hackeur:

So, XP now works, but what about any programs designed to run on top of Windows XP that use this instruction…

Soit : « Donc XP fonctionne désormais, mais quid des programmes conçus pour fonctionner avec Windows XP et qui utilisent cette instruction [cmpxchg8b] ? »

I think using two “LOCK CMPXCHG” instructions (with other instructions in between as well) isn’t the same as a single atomic “LOCK CMPXCHG8B” and introduces a race condition. On a single core system with a single-threaded CPU like the 486 it’ll probably run OK most of the time, but an interrupt can come just the right time to cause subtle and random memory corruption and crashes.

Ce hack ne sert donc à priori à rien, si ce n'est faire de la pub pour celui qui l'a créé en montrant au monde ses capacités de bidouille. (Ce qui ne me dérange pas.)

avatar melaure | 

Je veux bien un Panther pour mon Quadra 660AV !

avatar BeePotato | 

@ melaure : Et moi je voudrais bien un Tiger sur mon MBA M1. 🙂

avatar DeaDPooL | 

@BeePotato

Pluch’un

avatar MarcMame | 

@melaure

"Je veux bien un Panther pour mon Quadra 660AV !"

———-
Il n’y a qu’un seul MacOs digne de ce nom : Snow Léopard.

avatar Jean-Jacques Cortes | 

La comparaison au début de l’article est mauvaise car le 486 et le Pentium sont des processeurs de la même famille. Panther était prévu pour des PowerPC et en interne chez Apple, pour Intel x86. Le 68040 n’a rien à voir avec ces deux processeurs.

avatar melaure | 

Nextstep tournait sur 68030 et 68040 ... on est parfaitement dedans.

avatar Pierre Dandumont | 
@Jean-Jacques Cortes : c'est pour des questions d'époque. Après, techniquement, Apple avait déjà une version x86 en 2001 dans les cartons.
avatar CyanRealDamselfly | 

Windows XP mon OS de cœur ❤️

avatar andr3 | 

J’adore ce genre d’article avec des challenges «  inutiles » mais beau.

avatar Karamazow | 

@andr3

👍🏻

CONNEXION UTILISATEUR