Windows débarque enfin sur Apple TV !
Ce qui est cool quand on a un max de temps libre et des compétences en développement, c’est qu’on peut se lancer à corps perdu dans des projets très cons. Con dans le sens sympa mais inutile, je précise, car il en faut du talent pour faire tourner Windows sur une Apple TV.
Hé oui, c’est l’essence même du projet NTATV qui a réussi l’impensable, à savoir installer Windows XP sur l’Apple TV de première génération. Et le dev du projet n’a pas réalisé cet exploit en quelques jours, non, non, non… DistroHopper39B y a passé plus de 700 jours de sa vie !
D’ailleurs, si Steve Jobs voyait ça, il ferait probablement une crise cardiaque. Bon, techniquement, il peut pas, mais vous voyez l’idée.
Alors, pour les “sans dents” (je plaisante, rooooh) qui n’ont jamais eu cette petite boîte entre les mains, l’Apple TV première génération, c’est en gros un Pentium M à 1 GHz avec 256 Mo de RAM et une puce graphique NVIDIA GeForce Go 7300. Un vrai petit bolide… mais qui date quand même de 2007. Le truc, c’est que cette machine utilise un firmware EFI, alors que Windows XP exige absolument un bon vieux BIOS traditionnel. Donc, ça cause pas bien.
Surtout qu’Apple a complètement abandonné cet appareil. Et quand je dis abandonné, c’est pas juste “plus de mises à jour”. Non, Apple a carrément supprimé le support dans iTunes, rendant la bestiole totalement inutile. Même l’iPod original de 2001 n’a pas subi un tel sort. Je trouve ça vachement cruel quand même…
Mais bon, revenons à notre héros du jour. Inspiré par une vidéo YouTube de The 8-Bit Guy, il s’est demandé si ce petit boîtier pourrait faire tourner Windows XP. Alors pourquoi XP et pas Linux qui est déjà compatible ? Et bien parce que Linux est devenu trop lourd (comme ses fans finalement… roooh ça va, et l’humour, il est où hein ??) pour ce vieux matériel quand même assez limité, et parce que XP offre une bibliothèque massive de logiciels, certes anciens mais toujours utiles et rigolos.
Si je vous en parle, c’est parce que j’ai trouvé la bidouille vraiment élégante. Au lancement, l’Apple TV vérifie que son bootloader est bien signé par Apple, mais, et c’est là l’astuce, elle ne vérifie pas le noyau du système qui est chargé juste après. Notre développeur a donc utilisé FreeLoader, un bootloader open-source du projet ReactOS, qu’il a converti au format Mach-O utilisé par macOS pour tromper la vigilance de l’Apple TV.
Le processus de démarrage ressemble alors à ça : l’EFI charge un fichier Apple officiel, qui charge ensuite l’exécutable Mach-O personnalisé, qui à son tour lance FreeLoader, qui configure l’environnement nécessaire à Windows et charge enfin le noyau Windows. C’est un peu des poupées russes, mais ça fonctionne.
L’une des difficultés majeures a été de faire fonctionner le disque dur. L’Apple TV utilise en effet un contrôleur IDE en mode natif PCI, alors que la plupart des systèmes utilisent le mode de compatibilité ISA. Pour résoudre ce problème, notre bidouilleur a dû modifier les bits de configuration du contrôleur IDE. C’est du chipotage de registres à un niveau qui donnerait, je pense, des sueurs froides à la plupart des dev.
Ajoutez à ça la nécessité de développer 2 pilotes vidéo personnalisés (un pour l’écran de démarrage et un pour l’interface graphique), de choisir le bon Hardware Abstraction Layer, et de modifier manuellement le registre Windows pour que le système reconnaisse correctement le matériel… Franchement, c’est un miracle que ça fonctionne. NON, LE TALENT DU GARS !!
Maintenant après tout ce travail acharné (700 jours, n’oubliez pas !!), qu’est-ce qui fonctionne réellement ?
Eh bien, vous avez un Windows XP ou Windows Server 2003 complet avec support PCI, USB (clavier, souris), vidéo accélérée via pilote NVIDIA, Ethernet, WiFi (via pilotes Boot Camp), et qui supporte même la télécommande Apple.
Pas mal, non ?
Concrètement, vous pourrez alors lancer d’anciens jeux comme Age of Empires II, le Démineur ou Pinball 3D sur votre télé, utiliser d’anciennes applications qui n’existent plus sur les systèmes modernes, ou simplement vous offrir une séance de nostalgie avec le son de démarrage de Windows XP à fond dans votre salon.
Par contre, l’audio HDMI ne fonctionnera probablement jamais, car sur l’Apple TV, c’est le chipset Intel et non la carte NVIDIA qui s’en occupe. L’émulation MS-DOS ne marche pas non plus. La sortie vidéo en composante est problématique (seul le canal bleu fonctionne), et l’arrêt / redémarrage propre du système est cassé.
Il y a aussi quelques bugs amusants. Par exemple, avec le pilote NVIDIA installé, si l’écran se met en veille, il faut débrancher et rebrancher le câble HDMI pour récupérer l’image. La solution, c’est de configurer Windows pour ne jamais éteindre l’écran.
Snif.
Maintenant, si l’aventure vous tente, vous avez deux options : la facile et la difficile.
La méthode facile consiste à télécharger une image pré-installée sur Archive.org (environ 30 Go), à connecter le disque dur de votre Apple TV à un PC via un adaptateur USB-IDE, puis à restaurer l’image, et remettre le disque dans l’Apple TV. Et bam ! Windows XP est maintenant sur votre TV.
La méthode difficile (pour les vrais barbu.e.s) c’est : créez une image disque avec QEMU, installez Windows XP dedans (en activant PAE/NX, très important !! Le dev a perdu plusieurs mois avant de découvrir ce détail), créez une petite partition FAT32 pour les fichiers de démarrage, installez les pilotes vidéo et les entrées de registre nécessaires, modifiez manuellement le registre pour la reconnaissance matérielle, et installez les pilotes audio et WiFi depuis Boot Camp 3.1.1.
Pour optimiser votre expérience, réinitialisez également la PRAM en maintenant Command-Option-P-R du clavier pendant 50 secondes au démarrage pour accélérer le boot, désactivez TurboCache NVIDIA pour économiser la RAM système déjà limitée, et configurez Windows pour ne jamais éteindre l’écran pour éviter les problèmes de mise en veille.
Pour info, le guide complet et tous les fichiers nécessaires sont disponibles sur le GitHub du projet. C’est gratuit, c’est open-source, et ça permet de recycler une vieille Apple TV de manière trop cool !
Bref, ça marche ! Alors perso, je suis très content avec mon Apple TV, donc je ne vais pas me lancer là dedans, mais si vous le faites, prévenez-moi !