Nouveau Trouve le job que tu mérites sur Les Joies du Code

Thème d'affichage

Wine débarque sur OpenBSD, et même The Witcher 3 (Remastered) tourne dessus

Nicolas Lecointre ·
Wine débarque sur OpenBSD, et même The Witcher 3 (Remastered) tourne dessus

OpenBSD affiche fièrement sur sa page d'accueil un bilan de deux failles exploitables à distance dans son installation par défaut "en un sacré bout de temps".

Soyons honnêtes : ce n'est pas franchement le genre d'OS sur lequel on s'attend à lancer des .exe Windows. C'est pourtant ce qu'il sait faire désormais, jusqu'au remaster de The Witcher 3 sorti fin septembre !

Thomas Frohwein, l'un de ses développeurs, a présenté dimanche ce qui est peut-être, selon lui, la proposition de port la plus surprenante de l'année : Wine, la couche de compatibilité qui fait tourner les programmes Windows sous Unix.

Un premier port avait été retiré en 2011 du catalogue des ports d'OpenBSD, qui rassemble les logiciels tiers adaptés au système. Le message de commit ne s'embarrassait pas de diplomatie : le développement était au point mort, et le port ne fonctionnait de toute façon pas.

Quinze ans plus tard, Wine y a fait son retour dans la foulée de l'annonce.

Planter pour mieux sauter

Pour lancer un programme Windows 64 bits sur OpenBSD, Wine bute d'abord sur un registre du processeur, %gs. Sous Windows, il pointe vers une structure qui décrit le thread en cours d'exécution, et que les programmes consultent régulièrement.

Sous Linux, où Wine et Proton font tourner la grande majorité des jeux Windows, Wine fait pointer ce registre vers sa propre version de cette structure.

OpenBSD ne le permet pas : le registre y reste à zéro, chaque instruction qui s'en sert va lire une adresse interdite, et le programme plante.

La parade d'Andrii Yukhymchak, l'un des deux développeurs qui ont abattu l'essentiel du travail, consiste justement à laisser le programme planter. Wine intercepte l'erreur, décode l'instruction fautive et en écrit ailleurs une version équivalente sans %gs, qui vise directement la bonne structure.

Quand la place le permet, l'instruction d'origine est ensuite remplacée par un saut vers sa doublure, pour ne pas planter deux fois au même endroit.

Ce seul correctif a suffi, selon lui, à faire tourner Notepad++ et toute une série de jeux, à commencer par Factorio (avec le son en vrac, mais on ne va pas chipoter).

Vue aérienne d'une usine dans Factorio, avec tapis roulants, bras robotisés et panneaux solaires sur un sol désertique

Le développeur ne s'en cache pas : une IA l'a aidé à trouver une approche qui marche et à apprendre à décoder ces instructions.

Le code final, il l'a écrit lui-même, par respect pour ce qu'il présente comme les règles de Wine et d'OpenBSD : pas de code généré par IA.

Le 32 bits peut aller se rhabiller

L'équipe dit avoir testé plusieurs dizaines de logiciels Windows 64 bits, la plupart avec succès. Le remaster de The Witcher 3 en fait partie, à condition d'installer en plus vkd3d-proton, qui traduit les appels Direct3D 12 du jeu en Vulkan.

Geralt en simple serviette dans les thermes, prêt à affronter des assassins, dans une capture de The Witcher 3 en français

Thomas Frohwein a même pris soin de préciser, dans le titre de sa vidéo, que ce n'est pas une blague. Hollow Knight a lui aussi eu droit à sa démonstration.

Les programmes 32 bits, en revanche, restent à quai : WoW64, le mécanisme qui permet à Windows comme à Wine de les faire tourner sur un système 64 bits, ne fonctionne pas sur OpenBSD.

Pour savoir à quoi s'en tenir avec un .exe, la commande file suffit : si elle répond quelque chose comme Intel 80386 32-bit, inutile d'insister.

L'absence du 32 bits gêne moins qu'il y a cinq ou dix ans : une bonne partie des logiciels Windows sont depuis passés au 64 bits, et Thomas Frohwein y voit la raison du regain d'intérêt pour Wine.

À consommer avec modération

Restent des soucis de stabilité sur les jeux 3D les plus gourmands, et des correctifs qu'OpenBSD devra sans doute maintenir seul, leur intégration dans Wine n'étant pas au programme.

D'après Andrii Yukhymchak, les mainteneurs de Wine hésitaient déjà à accepter de simples patchs pour compiler sur OpenBSD. Son correctif %gs, qui réécrit le code des programmes Windows en mémoire, n'a, lui, aucune chance d'être intégré.

Le développeur prévient aussi que Steam, qui vous regarde jouer pour compter vos heures, va complètement à l'encontre du modèle de sécurité d'OpenBSD.

Dernière recommandation de Thomas Frohwein : lancer Wine sous un utilisateur dédié, sans privilèges. L'équipe veut encore voir si elle peut mieux le cloisonner, par exemple avec unveil, l'appel système d'OpenBSD qui limite les fichiers auxquels un programme a accès.

La précaution n'a rien de superflu : la FAQ de Wine prévient elle-même qu'un malware Windows y tourne comme n'importe quel autre programme, avec accès à tous les fichiers de l'utilisateur qui le lance.

À propos de l'auteur

Nicolas Lecointre

Nicolas Lecointre

Fondateur des Joies du Code, je suis l'actualité et la culture des développeurs depuis 2012. Ancien développeur, je me consacre aujourd'hui entièrement au média.

Voir sa page auteur

Offres d'emploi

Voir toutes les offres

À lire également

Articles similaires