Comment installer Windows 10 on ARM sur un Raspberry Pi 3 (microSD et USB)
Ne soyez pas pressés !
Le 23 février 2019 à 14h30
14 min
Hardware
Hardware
Il y a quelques jours, plusieurs sites ont indiqué qu'il était désormais possible d'installer simplement la version classique de Windows 10 sur un Raspberry Pi. Sauf que cela n'avait rien de simple ou de complètement nouveau. Suite à l'arrivée de nouveaux outils et pilotes, on vous explique tout ce qu'il faut savoir à ce sujet.
Un Raspberry Pi peut être utilisé avec de nombreux systèmes d'exploitation. On pense rapidement à des dérivés de Debian comme la distribution officielle Raspbian ou encore Armbian, Ubuntu Core/MATE, etc. Il existe également des OS plus spécialisés comme LibreELEC/OSMC (multimédia), Kali (sécurité), PiNet/PrimTux (éducation), etc.
Microsoft publie une version spécifique de Windows 10 consacrée à l'internet des objets, compatible avec d'autres micro PC : IoT Core. Mais dans ce cas, c'est une part minimale du système qui est présente, permettant seulement d'interagir avec des éléments tiers en exploitant les outils du géant américain.
Avec le temps, mais aussi le travail acharné de bidouilleurs et d'une communauté active, il devient néanmoins possible d'installer Windows 10 on ARM (WoA) sur un Raspberry Pi 3. Cela fait des mois que certains y parviennent, mais c'est la mise en ligne de nouveaux pilotes et de mises à jour de certains outils ces derniers jours qui ont enfin rendu cela accessible à tous... tout du moins si vous êtes un minimum patient.
Récupérer l'ISO de Windows 10 on ARM
La première étape est la plus complexe : obtenir les fichiers d'installation de WoA. En effet, le système n'est présent que préinstallé sur quelques machines à base de SoC Qualcomm Snapdragon, il n'est donc pas distribué au format ISO facile à télécharger comme c'est le cas pour les moutures x86/x64.
Heureusement, Microsoft a migré son modèle de mise à jour fin 2016 vers un modèle plus modulaire : l'Unified Update Platform (UUP). Il est utilisé pour le canal Insiders depuis 2017 et permet de récupérer seulement les fichiers nécessaires lors de la publication d'une nouvelle version, plutôt qu'un gros bloc de données.
Une méthode différentielle plutôt bienvenue, surtout que ces fichiers sont librement accessibles. De quoi donner des idées à certains. Ainsi, on a vu émerger de petits outils permettant de télécharger ces fichiers et de les combiner afin de recréer les images ISO de n'importe quelle version de Windows 10.
Ici, nous utiliserons celui qui nous apparaît comme le plus simple (et open source) : UUP Dump. Il vous suffit de chercher la dernière Feature Update ARM64 (et non AMD64), la langue désirée (Français) puis l'édition (Famille ou Professionnelle). Vous pourrez alors télécharger le package en cliquant sur Download using aria2 and convert.
Il contient un script utilisable sous Linux (.sh) ou Windows (.cmd) consistant à télécharger tous les fichiers nécessaires puis à les assembler pour reconstituer l'ISO demandée. La procédure peut être assez longue, selon la puissance de votre machine et le débit de votre connexion internet. Une fois terminée, vous pourrez passer à la suite.
Pour notre test, nous avons utilisé la buid 17763.346.
Windows on Raspberry...
La possibilité d'installer WoA sur un Raspberry Pi a demandé le travail de nombreux contributeurs depuis l'année dernière. Il faut en effet adapter tant les pilotes que le firmware. La mise en ligne de pilotes réseau par Microchip fin décembre, puis de l'USB par MCCI, pour un usage non commercial, ont été déterminantes.
Réutiliser ceux de Windows 10 IoT était en effet impossible, puisqu'ils sont compilés uniquement pour ARM32, alors que Windows 10 on ARM n'est disponible qu'en version ARM64. Espérons que Microsoft finira par apporter son aide à ce projet. Dans tous les cas, il fallait ensuite que ces éléments puissent être mis en œuvre simplement.
C'est ici que le travail de Mario Bălănică a été important. Il a en effet travaillé sur un petit outil nommé Windows on Raspberry (WoR) permettant de transférer l'ISO sur un périphérique externe (microSD ou USB) en ajoutant les éléments tiers nécessaires au bon fonctionnement de l'ensemble.
L'application a largement évolué depuis la première version publique diffusée cet été. Sa mouture 1.0, mise en ligne le mois dernier, a apporté de grandes évolutions. La 1.0.1 diffusée en début de semaine apporte les dernières touches pour le rendre réellement exploitable.
Notez que des pilotes avec support du boot USB sont proposés, nous en reparlerons plus loin. Pour une installation sur carte microSD, contentez-vous de télécharger la version classique (ici en date du 20 février).
Il vous faudra également le firmware Tiano Core UEFI adapté au Raspberry Pi 3 par Andrei Warkentin : RPI_EFI.fd
. Là aussi, une mise à jour corrigeant quelques défauts a été mise en ligne dans la semaine.
Nous avons utilisé la dernière en date, la 2019Feb18-GCC5. Vous pouvez la récupérer dans le répertoire Release dans un dépôt GitHub, via le lien ci-dessous :
Une fois arrivée sur la page consacrée au fichier, cliquez sur Download :
Une fois toutes ces étapes franchies, vous pouvez lancer la procédure. Vous serez invité à préciser l'emplacement de tous les différents éléments. Laissez les paramètres de configuration par défaut (voir ci-dessus). Cela pourra être long, le débit d'une carte microSD étant assez faible. Comptez 40 minutes environ.
... ou WoA Deployer for Raspberry Pi
Un autre développeur, soutenu par MCCI, propose son propre outil : José Manuel Nieto Sánchez. Il avait créé WoA Installer pour déployer Windows 10 on ARM sur certains smartphones Lumia. Il avait été ensuite adapté pour suivre la tendance du Raspberry Pi. Désormais les deux outils sont séparés.
WoA Installer est devenu WoA Deployer for Lumia (bleu), WoA Deployer for Raspberry Pi (rouge) vient d'être mis en ligne. Il se veut plus simple que WoR, ne nécessitant pas le téléchargement de pilotes ou de firmware. Ils ont tout simplement été inclus dans le logiciel, ne laissant donc que le choix de la build à l'utilisateur.
Certains préfèreront cette approche « tout-en-un », d'autres non.
Une autre différence entre les deux outils est à noter. Ici, ce n'est pas l'ISO qui est utilisée comme base du déploiement, mais son fichier principal : install.wim
. Pour accéder à ce dernier, il suffit de double cliquer sur le fichier ISO dans l'explorateur de fichier Windows. Cela va le « monter » comme un lecteur optique.
Install.wim
est alors accessible dans le répertoire sources
. Notez qu'en plus de la version avec une interface graphique, WoA Deployer for Raspberry Pi existe dans une version utilisable en ligne de commandes.
Pour le moment, aucune alternative pour Linux n'est proposée.
La question de l'alimentation
Vous disposez d'une carte microSD contenant Windows 10 on ARM, c'est maintenant que les choses sérieuses commencent. Et autant vous dire que ceux qui expliquent que la procédure est simple parce qu'elle s'arrête à cette étape n'ont sans doute jamais tenté l'expérience.
Lors de nos différents essais, nous avons rencontré différents problèmes. La plupart avaient un point commun : l'alimentation du Raspberry Pi. Celle-ci passe par un connecteur micro USB et recommandée à 2,5A. C'est en général suffisant, mais avec WoA, on arrive aux limites de la machine.
Ainsi, de nombreux plantages peuvent être rencontrés. Si vous avez des écrans bleus à répétition, la cause est à chercher ici en premier. Optez donc pour le kit clavier/souris le plus basique possible (pas de LED, pas de sans fil), l'alimentation la plus véloce (certains recommandent des modèles grimpant à 3A).
L'idéal est d'utiliser un hub USB externe alimenté, surtout si vous comptez par la suite utiliser un périphérique USB pour stocker le système.
Premier démarrage
Placez la carte microSD dans votre Raspberry Pi 3. Notez qu'un modèle B ou B+ est recommandé car le Wi-Fi n'est pas encore fonctionnel. Ainsi, un modèle A+ n'aura pas d'accès direct au réseau.
Dans un premier temps, connectez uniquement le clavier et la sortie vidéo HDMI. Alimentez la machine pour qu'elle démarre. La première étape consiste à lui indiquer qu'elle doit démarrer sur le lecteur microSD et changer certains paramètres. Pour cela, il faut accéder à l'interface de gestion de l'UEFI.
Vous pouvez le faire en pressant la touche Échap au démarrage ou en tapant la commande exit
une fois le Shell UEFI lancé. Vous devrez alors suivre les étapes suivantes :
- Sélectionner Device Manager
- Sélectionner Raspberry Pi Configuration
- Sélectionner Chipset Configuration
- Sélectionner CPU Clock > Max
- Sélectionner uSD Routing > Arasan SDHCI
- Presser la touche F10 pour sauvegarder
- Valider avec la touche Y
Cela évitera que le SoC reste à 600 MHz, fonctionnant plutôt à sa valeur maximale. Vous utiliserez également un pilote du lecteur microSD Arasan plus lent, mais qui ne posera pas de problème au premier démarrage. On reviendra ensuite sur ce point pour utiliser la version Broadcom
Il faut ensuite redémarrer :
- Presser trois fois la touche Échap
- Sélectionner Reset
Retournez alors dans l'interface de gestion de l'UEFI puis :
- Sélectionner Boot Maintenance Manager
- Sélectionner Boot Options
- Sélectionner Change Boot Order
- Sélectionner Change the order
- Presser la touche - pour placer Arasan SDHCI en première position
- Presser la touche Entrée
- Presser la touche F10 pour sauvegarder
- Valider avec la touche Y
- Presser trois fois la touche Échap
- Sélectionner Reset
Il faut patienter le temps que la machine démarre et boucle la procédure. Cette période peut être assez longue. Une fois terminé, Windows vous demande votre pays. Déconnectez puis reconnectez l'alimentation. Rentrez à nouveau dans l'interface de configuration de l'UEFI.
Retournez dans Device Manager pour sélectionner le pilote Broadcom dans uSD Routing, sauvegardez, redémarrez, retournez dans la page de configuration. Cette fois retournez dans les paramètres de boot pour placer le lecteur microSD Broadcom en première position. Enregistrez et redémarrez.
Vous devriez alors retrouver la même fenêtre de configuration de Windows 10. Quelques bugs/erreurs sont parfois affichés : insistez, cela finira par marcher. On retrouve alors le fonctionnement classique de l'OS de Microsoft : choix de la langue, du compte utilisateurs, des paramètres relatifs à la vie privée, etc.
La mise à jour du système et des applications fonctionne comme avec n'importe quelle autre machine, via le Microsoft Store et Windows Update. Vous pouvez utiliser les applications de votre choix, même celles développées via Win32. Certaines refuseront néanmoins de se lancer sur WoA. D'autres sont spécialement développées pour ce système, avec une version compilée pour ARM64 rendue disponible. C'est le cas de Firefox (win64-aarch64) ou VLC par exemple.
Vous pouvez également miser sur la « Linuxception » en activant le sous-système Linux de Windows 10 afin d'accéder au bash Debian, Kali, Ubuntu, etc. Avec une petite surprise au passage.
Optimisation pour le Raspberry Pi
Aucun pilote graphique avec accélération matérielle n'étant disponible, la lenteur est de mise. Il en est de même du fait de l'utilisation d'une carte microSD comme périphérique de stockage, ou tout simplement parce que Windows 10 n'est pas pensé pour fonctionner sur une machine si peu puissante, même dans sa déclinaison ARM64.
Vous pouvez donc désactiver des services ou des options selon vos besoins, notamment au niveau du rendu graphique. Certains ont commencé à diffuser des scripts permettant d'automatiser tout cela. N'hésitez pas à les utiliser et à publier les vôtres si vous venez à les améliorer.
Quel intérêt ?
Une question se pose lorsque l'on arrive sur un système si lent, fermé, après quelques heures de travail : à quoi cela peut-il bien servir ? Est-ce bien utile ? La réponse est oui.
Tout d'abord, pour montrer que même si Microsoft pousse uniquement les SoC Snapdragon de Qualcomm avec son système ARM64, d'autres peuvent être utilisés. C'est avant tout une question de choix et de partenariats. Une position dont on espère qu'elle changera rapidement, notamment sous la pression de tels projets.
Pour une société qui vante ces dernières années une approche ouverte, l'échange avec les communautés et l'open source, notamment pour la conception de ses firmwares, ce serait après tout la moindre des choses.
Ensuite, pour montrer que c'est possible. Que la simple mise en commun de plusieurs passionnés et de sociétés apportant leur soutien permet de mettre en place des projets qui pouvaient pourtant sembler improbables. De la récupération de l'ISO aux pilotes en passant par les firmwares, toutes les étapes ont été progressivement franchies.
D'autres barrières doivent bien entendu être dépassées pour que l'expérience Windows 10 sur un Raspberry Pi soit meilleure, mais nous n'en sommes qu'aux débuts. Il faut d'ailleurs voir au-delà des Raspberry Pi puisque des micro-PC bien plus performants existent déjà : Tinker Board d'ASUS, Orange Pi/Odroid, etc. Il existe déjà tout un monde de solutions ARM qui pourraient être adaptées pour accueillir ce système de manière plus confortable.
Car côté performances, c'est assez limité pour le moment. Le simple lancement d'un CPU-Z, d'un CPUmark99 ou d'un test Javascript le montre. C'est au ras des pâquerettes. Mais qu'en sera-t-il avec des SoC avec plus de puissance de calcul, n'étant pas limités par les contraintes d'un ordinateur portable proposé par quelques rares constructeurs ?
Affaire à suivre.
Installation sur un périphérique USB : plus simple, plus rapide
Une manière d'améliorer la réactivité consiste à utiliser un périphérique USB plutôt qu'une carte microSD. Cela peut être une clé USB, mais aussi un HDD ou un SSD externe. Comme précisé précédemment, il faudra veiller à disposer d'une alimentation suffisante pour limiter les problèmes.
Ensuite, il faut préparer le Raspberry Pi pour le boot USB, une pratique que nous avions précédemment détaillée dans un article sur la procédure d'installation :
Une fois ceci fait, utilisez WoR (voir ci-dessus) avec les pilotes modifiés afin de gérer le boot USB. Le déploiement prendra moins de temps, tout comme le premier démarrage du système.
Une carte microSD reste nécessaire, celle-ci étant la seule à pouvoir accueillir une partition d'échange (swap). Elle doit simplement être formatée (NTFS) puis placée dans le Raspberry Pi au même moment que la clé USB, avant de démarrrer. Pour le reste, la procédure est identique à celle avec une carte microSD.
Ce sera néanmoins plus simple puisque vous n'aurez pas à vous casser la tête avec le pilote à utiliser dans l'interface de gestion de l'UEFI. La clé USB devra également être désignée premier périphérique de boot.
Si jamais l'écran reste noir quelques minutes pendant le premier démarrage, vous devrez simplement déconnecter l'alimentation puis la rebrancher pour que tout rentre dans l'ordre.
Un projet en pleine évolution
Comme nous l'avons évoqué au sein de cet article, les choses bougent vite. Ces derniers jours nous avons vu de nouveaux pilotes, firmwares et outils mis en ligne, cela va continuer.
Nous tenterons de mettre à jour régulièrement ce dossier et la procédure à suivre afin de coller au mieux aux dernières pratiques et ajouter des astuces. N'hésitez d'ailleurs pas à échanger sur le sujet et à partager vos problèmes et expériences au sein des commentaires ou de nos forums.
Comment installer Windows 10 on ARM sur un Raspberry Pi 3 (microSD et USB)
-
Récupérer l'ISO de Windows 10 on ARM
-
Windows on Raspberry...
-
... ou WoA Deployer for Raspberry Pi
-
La question de l'alimentation
-
Premier démarrage
-
Optimisation pour le Raspberry Pi
-
Quel intérêt ?
-
Installation sur un périphérique USB : plus simple, plus rapide
-
Un projet en pleine évolution
Commentaires (14)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 23/02/2019 à 16h39
alors là, ça m’en bouche un coin !
merci pour ce tuto !
Le 23/02/2019 à 19h16
Bon courage à ceux qui veulent s’y lancer, le tuto ici est juste énorme !
Ce que je vois plus loin, c’est que peut-être avec cet exemple sur un RPI, c’est qu’on pourra mettre l’OS que l’on veut sur appareil ARM (tablette, téléphone, mini PC). Et ça, c’est clairement l’élément qu’il manque en ce moment.
Le 23/02/2019 à 20h13
C’est forcément un doux rêve, y’a trop d’éléments à prendre en compte : firmware, OS, apps, pilotes… on ne peut pas avoir tout pour toutes les plateformes. Surtout sur mobile, les interfaces posent trop de souci pour qu’on adapte n’importe quoi.
Après W10 sur les plateformes ARM peut changer la donne, mais pas comme c’est vendu actuellement. Pour le reste, les distributions Linux intègrent de plus en plus ce qu’il faut pour gérer le plus possible de plateformes ARM sans tomber dans le “un OS par machine”.
La question c’est : qui sera le premier à proposer un Mini PC ARM sous WoA avec le support de MS. Et une fois que le ver sera dans la pomme, pour les machines d’entrée de gamme…
Le 23/02/2019 à 20h24
Je ne conteste pas le fait que l’explication du “Comment” présente un intérêt (merci pour l’article), et, comme le dit linkin623, si cela participe à un mouvement global en faveur d’ARM comme plateforme généraliste (voire générique), c’est bien.
Mais mis à part l’exploit technique, la question, pour moi, restera “Pourquoi” …
C’est comme installer Windows 95 sur une 3DSXL ou une Smartwatch :
https://www.generation-nt.com/microsoft-windows-95-installation-nintendo-3ds-actualite-1923290.html
https://www.generation-nt.com/windows-95-montre-smartwatch-samsung-gear-live-android-wear-actualite-1907133.html
Bravo, mais … useless
Le 23/02/2019 à 21h05
C’est exactement la raison pour laquelle j’ai consacré une partie de l’article à expliquer pourquoi je suis en désaccord avec ça ;)
Le 24/02/2019 à 02h32
étrange article ^^
Je garde ma recalbox :P
Le 24/02/2019 à 07h14
Mouais… Alors autant la bidouille en elle-même reste intéressante (même si je préfererai définitivement voir Windows mourir vu ce qu’il est devenu), autant j’ai du mal à croire à l’ouverture concernant les fabricants de SoC côté pilotes (en particulier GPU). C’est déjà le gros zbeul, sur les SoC smartphones les seuls pilotes dispos sont de blobs binaires qui sont taillés pour la version modifiée du noyau embarquée dans l’OS livré par le fabricant, et tu l’as dans le cul quand tu veux libérer le téléphone. On constate le même foutoir quand il s’agit du support graphique des solutions ARM sous Linux, si côté “archi”, la partie CPU est plutôt bien prise en charge, dès qu’on touche au graphique c’est une catastrophe, les fabricants sont tous aux abonnés absents et y’a que du code basé sur de l’ingénierie inverse ou presque.
A moins que Microsoft mette la main à la poche, je vois pas les constructeurs se palucher un driver Windows/ARM pour le plaisir. Bon après ils pourront filer des gros blobs binaires pourris comme ils aiment le faire, alors je me trompe peut-être…
Le 24/02/2019 à 07h23
Ca fait penser à ce qui se fait pour les Lumia 950(XL).
Actuellement, Windows 10 ARM64 tourne sur un Lumia 950XL quasiment parfaitement (avec accélération graphique, c’est très fluide). Il manque encore les pilotes GSM pour que la téléphonie soit possible.
Un petit aperçu qui date déjà de quelques semaines : YouTube
Le 24/02/2019 à 09h42
https://www.amazon.fr/Alimentation-15W-5V-MeanWell-RS-15-5/dp/B00MWQD43U/ref=sr_1_9?ie=UTF8&qid=1551001097&sr=8-9&keywords=alimentation+5V+3A
C’est un poil mieux pour l’intégration dans un boitier tout beau tout jolie (pis ca prend moin de place qu’une alim ATX
Le 24/02/2019 à 21h31
Il y a un peu de lumière au fond du tunnel, grâce aux “standards serveurs” que ARM et d’autres (Red Hat, Microsoft, …) poussent très fort. L’idée est de rendre le serveur ARM aussi “compatible” qu’un IBM PC: tu bootes l’ISO (flashdisk…) et ton OS va fonctionner. Alors oui, il faudra encore surement installer le driver pour la carte vidéo.
Le monde du Raspberry Pi n’est pas encore prêt pour ces standards, mais on peut espérer que des machines de bureau ou laptops respectant ces standards voient le jour bientôt. En attendant Linus marque un point.
Le 25/02/2019 à 08h20
Un petit Octane avec Edge pour comparer? étant donné qu’il est dispo en ARM, sur un Snapdragon 835 on passe de 3500 points sur Chrome (x86 émulé) à 10700 points sur Edge (ARM natif)
Lien du test pour la comparaison
Le 25/02/2019 à 08h21
C’est Edge sur la capture
Le 25/02/2019 à 08h23
My bad!
Je sais pas où j’ai lu Chrome pour le coup…
Les perfs sont vraiment pas jolies!
Le 25/02/2019 à 10h04
Sympa d’avoir fait un retour là dessus. En effet, j’avais vu pas mal d’article là dessus, mais personne ne donner de véritable retour d’expérience.
Bon, clairement, Win10, même ARM n’est pas (encore ?) tailler pour une telle machine. De plus comme du plus haut par @seboss666 les plateformes ARM sont encore loin de la compatibilité des ce qui se fait du coté du x86.
Pour la “lourdeur” de l’OS, à priori, MS se penche sérieusement sur la question d’un Windows Lite, mais pour l’instant au vu des performance sur un RPi, ça serait plus une mauvaise pub face à une rasbian.
Pour la compatibilité : si les plateforme ARM veulent se développer et concurrencer les plateforme x86, ils n’auront pas le choix que de s’ouvrir. En attendant, il faut faire avec.
Du coup, je peux comprendre pourquoi MS se focalise plutôt sur un partenariat avec Qualcomm pour la plateforme ARM : caractéristique technique et logiciel sont assuré. Autant commencer sur un environnement optimal pour développer la solution ARM avant d’attaquer les difficultés.