CSMWrap - Un hack qui ressuscite le BIOS legacy sur les PC modernes
Vous voulez faire tourner Windows XP sur votre PC flambant neuf mais l’UEFI vous fait la zer-mi… impossible de faire fonctionner ce vieux logiciel industriel de 2003 qui tourne que là dessus, du coup, vous risquez de vous faire virer pour incompétence. Mais heureusement, moi j’suis là et surtout y’a un mec qui vient de sortir un truc de ouf qui s’appelle CSMWrap et qui va faire plaisir aux nostalgiques du BIOS !
Alors pour ceux qui n’avaient pas suivi l’histoire, je vous fais quand même un petit rappel : En 2017, Intel a annoncé qu’ils allaient virer le support du BIOS legacy (via le fameux CSM - Compatibility Support Module) de leurs plateformes d’ici 2020. Et effectivement, sur les chipsets Intel série 500 et plus récents, c’est mort, y’a plus de CSM ! Résultat, des cris, du sang, des larmes et surtout l’impossibilité de booter les vieux OS qui comprennent que dalle à l’UEFI. Vous voulez Windows XP ? Dans vos rêves ! FreeDOS pour faire tourner votre vieux jeu vidéo de quand vous êtiez petit avec de la morve collée partout sur le nez ? Oubliez. Même Windows 7 galère sa race sans le CSM activé.
Mais voilà que FlyGoat débarque avec CSMWrap, et là c’est le game changer total ! L’idée est géniale dans sa simplicité puisqu’au lieu d’attendre que les constructeurs rajoutent le CSM (spoiler : ils le feront jamais), on va allez créer notre propre couche de compatibilité qui émule un BIOS legacy directement depuis l’UEFI. Un peu comme si on installait un traducteur entre votre PC UEFI et vos vieux OS qui parlent que ce bon vieux patois BIOS des années 90. Bah alo’ la Ma’hie ?
Techniquement, le truc est malin comme un Darmanin. CSMWrap utilise le module CSM de SeaBIOS (le BIOS open source qu’on trouve dans QEMU et Coreboot) et le fait tourner comme une app UEFI normale. Ainsi, quand vous bootez CSMWrap, il déverrouille la région mémoire legacy (0xC0000-0xFFFFF), charge le module SeaBIOS dedans, configure tout le bazar pour que ça ressemble à un vrai BIOS d’époque, et hop ! Votre PC UEFI se transforme alors en machine à remonter le temps.
Le process est assez balèze quand on regarde sous le capot. D’abord, CSMWrap doit déverrouiller cette fameuse région mémoire legacy, et c’est pas toujours simple parce que l’UEFI la protège comme Fort Knox. Ensuite, il charge le VGA BIOS pour que votre écran affiche quelque chose (sinon c’est écran noir direct), construit une carte mémoire E820 à partir de la carte mémoire EFI (les vieux OS comprennent que ça), et configure tous les trucs chiants comme l’ACPI et le SMBIOS pour que Windows arrête de faire la gueule.
Alors attention, c’est pas parfait non plus. Déjà, faut désactiver le Secure Boot (logique, Microsoft ne va pas signer un truc qui contourne leurs protections) et surtout désactiver le “Above 4G Decoding” dans le BIOS. Pourquoi ? Hé bien parce que le BIOS legacy c’est du 32 bits et ça peut accéder qu’aux 4 premiers Go de RAM. Si votre carte graphique ou autre périphérique se retrouve mappé au-delà des 4 Go, c’est mort, le vieux BIOS pourra pas y accéder.
Les tests montrent que ça marche plutôt bien dans QEMU avec FreeDOS, Windows XP et Windows 7. Sur du vrai matos, c’est plus aléatoire… certaines machines acceptent, d’autres font la tronche. Windows a aussi tendance à avoir des problèmes vidéo, genre l’écran qui clignote ou qui reste noir. Mais bon, pour un projet aussi expérimental, c’est déjà énorme !
Ce qui est vraiment cool avec CSMWrap, c’est que ça ouvre plein de possibilités et c’est surtout une solution pour tous ceux qui sont coincés entre le marteau du progrès technologique et l’enclume des logiciels de l’ancien temps.
Maintenant pour l’utiliser, c’est simple comme bonjour : vous copiez csmwrap.efi
sur votre partition EFI, vous bootez dessus, et c’est parti ! Le projet utilise des technos bien connues comme SeaBIOS dont je vous ai parlé un peu avant pour le module CSM, Nyu-EFI pour le runtime C, et des bouts de code d’EDK2. Tout est open source sur GitHub, donc si vous êtes chaud pour contribuer ou juste comprendre comment ça marche, vous pouvez aller fouiller dans le code.
Bon après, Intel et les constructeurs n’ont pas eu complètement tort de virer le CSM car c’est vrai que niveau sécurité, le BIOS legacy c’était une passoire, et l’UEFI apporte plein de trucs cools comme le Secure Boot, le support des disques de plus de 2 To au démarrage, et tout un tas de fonctionnalités modernes. Mais des fois, on a juste besoin de faire tourner ce putain de Windows XP pour utiliser notre vieux scanner, et CSMWrap est là pour ça !
Merci à Lorenper de m’avoir fait découvrir ce projet de malade !