Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
tutos:vm:windows-mac [2025/06/20 12:33] – fix the structure GNUtoo | tutos:vm:windows-mac [2025/06/20 15:50] (Version actuelle) – [VMs sous ordinateur Apple ARM] Ajout WSL2 GNUtoo |
---|
| |
Sous GNU/Linux ça reste super simple à faire. Il y'a pas mal d'applications pour ça comme virt-manager ou gnome-boxes. Voir [[gnu-linux]] pour les VM GNU/Linux sous GNU/Linux. | Sous GNU/Linux ça reste super simple à faire. Il y'a pas mal d'applications pour ça comme virt-manager ou gnome-boxes. Voir [[gnu-linux]] pour les VM GNU/Linux sous GNU/Linux. |
===== Package managers ===== | |
| |
Ça peut servir à mettre QEMU facilement à jour. | |
| |
==== Windows ==== | ===== QEMU, GNU/Linux, MacOS et Windows ===== |
| |
Il y'a des packages managers libres avec des pratiques assez correctes (normalement la plus part des logiciels packagé sont libres) comme [[https://cygwin.com/|Cygwin]] ou [[https://www.msys2.org/|MSYS2]] mais j'ai pas pu tester car ça fait plus de release 32bit et la tablette Windows Parinux est 32bit et j'ai pas de Windows du tout nulle part. Pour chocolatery ça à l'air d'avoir tout et n'importe quoi et d'utiliser les installeurs standards au lieu de fournir des vrais paquets. | [[https://www.qemu.org/|QEMU]] est libre et est disponible pour |
| GNU/Linux, MacOS et Windows (y compris en 32bit). |
| |
==== MacOS ==== | Sous Windows il faut aussi installer un driver pour l'acceleration |
| matérielle, et sous MacOS et GNU/Linux l'acceleration matérielle est |
| déjà intégrée dans le système d'exploitation. C'est KVM sous GNU/Linux |
| et HVF sous MacOS. |
| |
Il y'a des packages managers comme [[https://brew.sh/|brew]] qui sont disponible, parreil avec la plus part des applications qui sont libres. Par contre faut sans doute bidouiller avec MacOS récent pour lancer les applications qu'on veut. J'ai du aider quelqu'un à faire ça et on est allé sur le site d'apple pour trouver comment lancer un terminal, et ensuite on à suivi les instructions pour désactiver ce qui faut pour lancer ce qu'on veut. | Pour Windows, les drivers suivants sont disponible (à installer): |
| |
===== Solutions libres de virtualizations ===== | |
| |
==== Windows ==== | |
| |
=== QEMU + acceleration + frontend === | |
| |
[[https://www.qemu.org/|QEMU]] est disponible pour Windows en 32 et 64bit. Avec ça il faut aussi installer un driver pour l'acceleration matérielle et un frontend (car la ligne de commande windows c'est pas terrible). | |
| |
Drivers pour l'acceleration (remplace KVM sous GNU/Linux): | |
| |
* WHPX: Supporté et conseillé par la documentation QEMU. Demande Windows 10 ou plus et assez peu de support matériel (vt-x+EPT+unrestricted guest/SVN, EPT, pas besoin d'iommu etc). Il y'a des instructions d'installation dans un tutoriel appelé [[https://developer.android.com/studio/run/emulator-acceleration|Configure hardware acceleration for the Android Emulator]]. A ne pas confondre avec HyperV qui demande beaucoup plus de resources. | |
| |
| * WHPX: Supporté et conseillé par la documentation QEMU. Demande Windows 10 ou plus et assez peu de support matériel (vt-x+EPT+unrestricted guest/SVN, EPT, pas besoin d'iommu etc). Il y'a des instructions d'installation dans un tutoriel appelé [[https://developer.android.com/studio/run/emulator-acceleration|Configure hardware acceleration for the Android Emulator]]. A ne pas confondre avec HyperV qui demande beaucoup plus de resources. |
* [[https://github.com/intel/haxm|HAXM]]: Plus maintenu mais encore disponible. Il faut installer HAXM d'abord puis qemu et redémarrer et ensuite installer QTEmu ou un autre frontend. Le support HAXM à été enlevé dans QEMU 8.2 (la dernière version de QEMU). | * [[https://github.com/intel/haxm|HAXM]]: Plus maintenu mais encore disponible. Il faut installer HAXM d'abord puis qemu et redémarrer et ensuite installer QTEmu ou un autre frontend. Le support HAXM à été enlevé dans QEMU 8.2 (la dernière version de QEMU). |
| |
* AEHD (Android Emulator Hypervisor Driver): Est utilisé par l'emulateur Android. Je sait pas si on peut utiliser ça facilement avec un QEMU standard. | * AEHD (Android Emulator Hypervisor Driver): Est utilisé par l'emulateur Android. Je sait pas si on peut utiliser ça facilement avec un QEMU standard. |
| |
Frontends: | Il y a des interfaces graphiques diverses pour GNU/Linux, MacOS et |
| Windows. Sous Windows et MacOS les interfaces gaphiques pour QEMU |
| intègrent souvent QEMU dedans, donc en général on à pas besoin |
| d'installer QEMU séparément. |
| |
* [[https://github.com/Tech-FZ/EmuGUI|EmuGUI]]: Le Projet à des release récentes (2024) mais par contre j'ai pas pu tester (j'ai pas Windows et la tablette Windows de Parinux n'a que Windows 32bit et ce projet ne fait pas de release 32bit). | Sous GNU/Linux en général c'est la distribution qui gère tout ça, donc |
* [[https://qtemu.org/|QTEmu]]: j'ai pu tester que des versions anciennes 32bit, les versions plus récentes sont bien mieux selon les vidéos qu'on trouve sur Internet. Les versions récentes supportent HAXM. Ça doit être possible d'utiliser ce qu'on veut comme aceleration quand même avec la version ancienne car on peut aussi passer des arguments à QEMU. | la aussi on peut en général juste installer l'interface graphique. |
| |
==== Libvirt + QEMU + acceleration + virt-manager / gnome-boxes ==== | Au niveau des interfaces graphiques qui marchent sur plusieurs système |
| d'exploitations: |
| |
Selon https://libvirt.org/windows.html libvirt ne marche que comme client sous windows et n'est pas super testé => Inutile de conseiller ça. | * Interfaces graphiques de libvirt (virt-manager, gnome-boxes, virt-viewer, etc): |
| * Selon https://libvirt.org/windows.html libvirt ne marche que comme client sous windows donc c'est pas très utile. |
| * Selon https://libvirt.org/macos.html libvirt marche bien sous MacOS. Brew.sh à virt-manager. Derrière ça utilise QEMU et HVF. virt-manager est aussi disponible dans la plus part des distributions GNU/Linux. |
| * [[https://86box.net/|x86box]]: Fonctionne aussi sur Windows, MacOS (y compris ARM) et GNU/Linux. Par contre il faut l'installer à part sous GNU/Linux. |
| * [[https://qtemu.org/|QTEmu]]: Ça marchait bien sous GNU/Linux et Windows, mais ça n'a pas l'air d'être disponible sous MacOS. Ça n'est plus dans les distributions GNU/Linux récentes. Sous Windows, les versions récentes supportent HAXM. Ça doit être possible d'utiliser ce qu'on veut comme aceleration quand même avec la version ancienne car on peut aussi passer des arguments à QEMU. |
| * [[https://github.com/Tech-FZ/EmuGUI|EmuGUI]]: Ça tourne sous GNU/Linux et Windows. A noter que ce projet ne fait pas de release 32bit). C'est à installer à part tout GNU/Linux. |
| * [[https://canonical.com/multipass|Multipass]]: Ça tourne sous GNU/Linux, MacOS et Windows. Par défaut ça fournit une VM Ubuntu et c'est plustôt bien intégré au système d'exploitation qui fait tourner Multipass. On à aussi un accès facile à la ligne de commande dans la VM à partir de n'importe quel terminal. Sous GNU/Linux c'est disponible via snap uniquement. |
| |
==== MacOS ==== | Les interfaces graphiques suivantes fonctionnent sous MacOS uniquement: |
| |
=== QEMU + Accéleration matérielle + Frontend === | * [[https://mac.getutm.app|UTM]]: Fonctionne aussi sur MacOS ARM, à l'air d'être la référence pour MacOS. Comme gnome-boxes on peut selectioner une distribution et UTM se débrouille. Ça à été testé lors d'une install party à Décartes: Une fois que l'on avait aidé une personne étudiante à installer ça, la personne à pu montrer comment faire aux autres personnes étudiantes et on avait plus à s'en occuper et donc on pouvait aider les personnes avec des cas plus compliqués. |
| |
Accélération matériel | ===== Virtualbox, GNU/Linux, MacOS et Windows ===== |
| |
* HVF: Intégré à MacOS => Rien à installer / configurer. | |
| |
Frontend: | |
| |
* [[https://mac.getutm.app|UTM]]: Fonctionne aussi sur MacOS ARM, à l'air d'être la référence pour MacOS. | |
| |
* [[https://86box.net/|x86box]]: Fonctionne aussi sur MacOS ARM. | |
| |
==== Solutions pas libres de virtualizations ==== | |
| |
=== VirtualBox === | |
| |
Selon Debian, et Parabola, Virtualbox à des sérieux soucis de liberté. Le problème majeur est que le BIOS fournis avec Virtualbox est considéré pas libre en pratique car il dépend d'un compilateur pas libre: | Selon Debian, et Parabola, Virtualbox à des sérieux soucis de liberté. Le problème majeur est que le BIOS fournis avec Virtualbox est considéré pas libre en pratique car il dépend d'un compilateur pas libre: |
non-free compiler (Open Watcom) to build the BIOS. | non-free compiler (Open Watcom) to build the BIOS. |
Upstream provides pre-built BIOS images which is used instead." | Upstream provides pre-built BIOS images which is used instead." |
| |
* Parabola est du même avis: "contains BIOS which needs a nonfree compiler to build from source (OpenWatcom compiler), [problème moin important] has nonfree user manual and [trucs spécifiques à parabola]." (https://git.parabola.nu/blacklist.git/tree/blacklist.txt). | * Parabola est du même avis: "contains BIOS which needs a nonfree compiler to build from source (OpenWatcom compiler), [problème moin important] has nonfree user manual and [trucs spécifiques à parabola]." (https://git.parabola.nu/blacklist.git/tree/blacklist.txt). |
| |
* [[https://packages.debian.org/bookworm/virtualbox-ext-pack|virtualbox-ext-pack]]: Pas libre (interdiction d'usage commercial, etc). | * [[https://packages.debian.org/bookworm/virtualbox-ext-pack|virtualbox-ext-pack]]: Pas libre (interdiction d'usage commercial, etc). |
* [[https://packages.debian.org/bookworm/virtualbox-guest-additions-iso|virtualbox-guest-additions-iso]]: Pas libre (interdiction d'usage commercial, etc). | * [[https://packages.debian.org/bookworm/virtualbox-guest-additions-iso|virtualbox-guest-additions-iso]]: Pas libre (interdiction d'usage commercial, etc). |
* [[https://packages.debian.org/sid/virtualbox-guest-utils|virtualbox-guest-utils]], [[https://packages.debian.org/sid/virtualbox-guest-x11|virtualbox-guest-x11]] ont l'air libre: ils sont basés sur le paquet virtualbox qui contient un BIOS non libre, mais j'immagine que les VM n'en ont pas besoin à l'intérieur de la VM (c'est normalement fournit par virtualbox lui même). | * [[https://packages.debian.org/sid/virtualbox-guest-utils|virtualbox-guest-utils]], [[https://packages.debian.org/sid/virtualbox-guest-x11|virtualbox-guest-x11]] ont l'air libre: ils sont basés sur le paquet virtualbox qui contient un BIOS non libre, mais j'immagine que les VM n'en ont pas besoin à l'intérieur de la VM (c'est normalement fournit par virtualbox lui même). |
| |
A noter que [[https://en.wikipedia.org/wiki/Virtualbox|selon Wikipedia]], VirtualBox ne supporte que x86_64 (donc ça marche pas sur un ordinateur ARM de chez Apple par exemple). | A noter que [[https://en.wikipedia.org/wiki/Virtualbox|selon Wikipedia]], VirtualBox ne supporte que x86_64 (donc ça marche pas sur un ordinateur ARM de chez Apple par exemple). |
| |
=== WSL2 === | ===== WSL2 ===== |
| |
TODO: trouver les pré-requis. | WSL2 ne marche que sur des Windows récents en 64bit. Il faudrait se |
| renseigner sur combien de resources ça prend. |
| |
===== VMs ===== | ===== Considérations pour créer des VMs ===== |
| |
==== UTM ==== | ==== VMs sous VirtualBox ==== |
| |
UTM à l'air de vraiment bien marcher. Comme gnome-disks on peut selectioner une distribution et UTM se débrouille. Ça à été testé lors d'une install party à Décartes: Une fois que l'on avait aidé une personne étudiante à installer ça, la personne à pu montrer comment faire aux autres personnes étudiantes et on avait plus à s'en occuper et donc on pouvait aider les personnes avec des cas plus compliqués. | Si on télécharge l'iso de Debian sur le site de Debian (le bouton "Download" sur https://www.debian.org uniquement, pas une netinstall, etc), ça sait installer Debian automatiquement et VirtualBox permet de configurer le mot de passe, etc. |
| |
=== VMs sous ordinateur Apple ARM === | Du coup il ne faut pas utiliser VirtualBox si on veut avoir exactement ce que fournit Debian. |
| |
Pour booter une VM ARM sous UTM on devrait normalement avoir de l'UEFI[1]. Dans le cas contraire c'est possible de fournir un 'BIOS' comme [[https://packages.guix.gnu.org/packages/u-boot-qemu-arm64/|u-boot-qemu-arm64]] et booter avec ça mais la fonction risque d'être enlevé dans le futur (voir [[https://docs.getutm.app/settings-qemu/drive/drive/#image-type|Image Type]] dans le manuel de UTM). Le reste (boot de kernel direct, etc) n'est vraiment pas pratique car le kenrel est dans l'image et il faut sans doute le copier en dehors de l'image. | Par contre si on utilise l'ISO de Debian (le bouton "Download" sur https://www.debian.org uniquement, pas une netinstall, etc), ça peut accélérer et simplifier énormément l'installation. |
| |
| ==== Multipass ==== |
| |
| Voir https://github.com/canonical/multipass/issues/307 pour comment installer une autre distribution que Ubuntu. Ça demande d'avoir une image d'installation avec cloud-init. |
| ==== VMs sous ordinateur Apple ARM ==== |
| |
| Pour booter une VM ARM sous UTM on devrait normalement avoir de |
| l'UEFI[1]. J'ai pas regardé avec les autres interfaces graphiques de |
| QEMU. |
| |
| Avec UTM c'est aussi possible de fournir un 'BIOS' comme |
| [[https://packages.guix.gnu.org/packages/u-boot-qemu-arm64/|u-boot-qemu-arm64]] |
| et booter avec ça mais la fonction risque d'être enlevé dans le futur |
| (voir |
| [[https://docs.getutm.app/settings-qemu/drive/drive/#image-type|Image |
| Type]] dans le manuel de UTM). Le reste (boot de kernel direct, etc) |
| n'est vraiment pas pratique car le kenrel est dans l'image et il faut |
| sans doute le copier en dehors de l'image. |
| |
Sinon sur les Mac ARM, les pages tables font 16K. Il y'a moyen de faire tourner des applications avec 4k mais ça risque d'être super lent. Certaines applications risquent aussi de ne pas marcher si les versions sont anciennes du à un manque de support pour les page tables qui font 16k. Voir [[https://github.com/AsahiLinux/docs/wiki/Broken-Software|la documentation de Asahi]] pour plus de détails. | Sinon sur les Mac ARM, les pages tables font 16K. Il y'a moyen de faire tourner des applications avec 4k mais ça risque d'être super lent. Certaines applications risquent aussi de ne pas marcher si les versions sont anciennes du à un manque de support pour les page tables qui font 16k. Voir [[https://github.com/AsahiLinux/docs/wiki/Broken-Software|la documentation de Asahi]] pour plus de détails. |
Configuration/UTMQemuConfigurationQEMU.swift: templateVarsURL = resourceURL.appendingPathComponent("edk2-i386-vars.fd")" dans le code source de UTM | Configuration/UTMQemuConfigurationQEMU.swift: templateVarsURL = resourceURL.appendingPathComponent("edk2-i386-vars.fd")" dans le code source de UTM |
Du coup on devrait avoir UEFI même sous ARM. | Du coup on devrait avoir UEFI même sous ARM. |
| |
| ==== VMs sous WSL2 ==== |
| |
| La distribution doit être préparée spécialement et/ou modifiée pour pouvoir tourner sous WSL2. Par exemple Guix peut faire des images pour WSL2, mais les images ne contiennent pas de kernel, l'init démarre d'une façon bizzare, etc. |
===== License ===== | ===== License ===== |
En plus de la license du wiki (http://creativecommons.org/licenses/by-sa/2.0/fr/) Ces instructions sont aussi disponibles sous les licenses suivantes: | En plus de la license du wiki (http://creativecommons.org/licenses/by-sa/2.0/fr/) Ces instructions sont aussi disponibles sous les licenses suivantes: |