macos-guest-virtualbox.sh est un script bash qui crée un invité de machine virtuel MacOS sur VirtualBox avec des fichiers d'installation MacOS non modifiés téléchargés directement à partir des serveurs Apple.
Une installation par défaut nécessite uniquement l'utilisateur de s'asseoir patiemment et, moins de dix fois, appuyez sur Entrée lorsque vous êtes invité par le script, sans interagir avec la machine virtuelle.
Testé sur bash et zsh sur Cygwin. Fonctionne sur MacOS, CentOS 7 et Windows sur X86 CPU avec VT-X ou AMD-V. Devrait travailler sur la plupart des distros Linux modernes.
MacOS Catalina (10.15), Mojave (10,14) et High Sierra (10.13) sont actuellement pris en charge.
Si vous souhaitez devenir le mainteneur de ce référentiel, veuillez consulter le numéro 645 - le mainteneur recherché.
La documentation peut être consultée en exécutant la commande ./macos-guest-virtualbox.sh documentation
La majorité du script est soit la documentation, les commentaires ou les messages d'erreur exploitables, ce qui devrait rendre le script simple pour inspecter et comprendre.
ICloud, iMessage et d'autres services Apple connectés nécessitent un nom de périphérique et un numéro de série valide, un identifiant de carte et un numéro de série, et d'autres paramètres Apple authentiques (ou authentiques). Ceux-ci peuvent être définis dans EFI et NVRAM en modifiant le script. Voir la commande de documentation pour plus d'informations.
Le script par défaut attribue une taille de stockage de disque virtuel virtuel cible de 80 Go, qui est remplie d'environ 25 Go sur l'hôte lors de l'installation initiale. Une fois l'installation terminée, la taille du stockage peut être augmentée. Voir la commande de documentation pour plus d'informations.
Les résolutions d'affichage primaire suivantes sont prises en charge par MacOS sur VirtualBox: 5120x2880 2880x1800 2560x1600 2560x1440 1920x1200 1600x1200 1680x1050 1440x900 1280x800 1024x768 640x480 . Voir la commande de documentation pour plus d'informations.
La portée du script termine un processus d'installation de macOS par défaut sur VirtualBox sur le matériel pris en charge. L'ordre fonctionnant plus approfondie de VirtualBox ou de MacOS dépasse le cadre de ce script. Certaines fonctionnalités peuvent se comporter de façon inattendue, telles que la prise en charge des périphériques USB, la prise en charge de l'audio, la prise en charge de l'invite de mot de passe de démarrage FileVault et d'autres fonctionnalités, y compris les fonctionnalités critiques.
Le script est conçu pour le matériel MAC x86 CPU. Les invités macOS sur VirtualBox sont généralement incompatibles avec d'autres modèles CPU. Si le processus de démarrage MacOS invité s'accroche à "LoadKerNelfromStream", "Endrandomseed" ou "EXITBS", consultez la commande de documentation concernant les profils CPU VirtualBox et les paramètres CPUID. Certains modèles de processeur publiés en 2020 et ultérieurement peuvent ne pas démarrer ou terminer l'installateur, et peuvent nécessiter un ajustement manuellement des paramètres du CPUID.
La machine virtuelle peut être mise à niveau vers les dernières versions MacOS Big Sur (11) et MacOS Monterey (12) via la mise à jour logicielle. Big Sur peut être installé sur place. Monterey peut nécessiter de fixer un autre volume à la machine virtuelle et de sélectionner le volume comme cible d'installation, sinon la mise à niveau est sujette à l'échec et à la saisie d'une boucle de démarrage.
Après avoir réussi à créer une machine virtuelle MacOS fonctionnelle, envisagez de l'importer dans un logiciel de virtualisation plus performant ou de l'emballage pour des plateformes de gestion de configuration pour un déploiement automatisé. Ces applications de virtualisation et de déploiement nécessitent une configuration supplémentaire qui dépasse la portée du script.
QEMU avec KVM est capable de fournir une passe de matériel de machine virtuelle pour des performances presque natives. Qemu prend en charge le format de stockage d'image de disque virtuel VMDK , qui peut être configuré pour être créé par le script. Voir la commande de documentation pour plus d'informations. Qemu et KVM nécessitent une configuration supplémentaire qui dépasse le cadre du script.
Le VirtualBox Native Execution Manager (NEM) est une fonctionnalité VirtualBox expérimentale. VirtualBox utilise NEM lorsque l'accès à VT-X et AMD-V est bloqué par des logiciels de virtualisation ou des fonctionnalités de protection de l'exécution telles que Hyper-V, WSL2, WSLG, Sandbox Windows, protection contre l'intégrité de la mémoire, garde d'application, garde des informations d'identification, garde de périphérique et autres fonctionnalités et logiciels. MacOS et le programme d'installation de macOS ont des problèmes de corruption de la mémoire dans le cadre de la virtualisation NEM. Le script vérifie NEM et sort avec un message d'erreur s'il est détecté.
VirtualBox peut fonctionner sur WSL2 et WSLG avec une compilation de modules de noyau, bien que les performances soient extrêmement faibles. Au moment où la compilation du module du noyau est requise, il peut être préférable d'utiliser QEMU / KVM sur WSL2 et WSLG, qui est des ordres de grandeur plus rapidement que VirtualBox sur WSL2 et WSLG. WSL2, WSLG, QEMU et KVM nécessitent une configuration supplémentaire au-delà de la portée du script.
L'invité MacOS VirtualBox est chargé sans chargeurs de démarrage supplémentaires, mais il est compatible avec OpenCore. OpenCore nécessite une configuration supplémentaire au-delà de la portée du script.
MacOS peut prendre en charge les contrôleurs audio VirtualBox intégrés. L'OpenCore de bootloader peut être en mesure de charger des pilotes audio open-source ou intégrés dans VirtualBox, fournissant la configuration de STAC9221 (Audio Intel HD) ou Sigmatel STAC9700,83,84 (ICH AC97) est disponible.
VirtualBox ne fournit pas un EDID pour son affichage virtuel, et MacOS n'activait pas la mise à l'échelle de l'affichage (PPI élevé) sans edid. L'openCore de chargeur de démarrage peut injecter un edid qui permet l'échelle d'affichage.
L'implémentation VirtualBox EFI ne charge pas correctement l'invite de mot de passe de cryptage de disque complet FileVault lors du démarrage. L'OpenCore de Bootloader est capable de charger l'invite de mot de passe avec le paramètre ProvideConsoleGop définis sur true . Voir exemple de config.plist
Les dépendances suivantes doivent être disponibles via un gestionnaire de packages:
bash coreutils gzip unzip wget xxd dmg2img virtualbox
Les packages optionnels suivants fournissent une reconnaissance de caractères optiques qui réduit l'interaction requise avec le script:
tesseract-ocr tesseract-ocr-eng
Versions prises en charge:
Bash ≥ 4.3, sur les fenêtres, passant par cygwin ou wsl "1", voir NEMcoreutils ≥ 8,22, GNU gzip ≥ 1,5, info-zip unzip ≥ V6.0, GNU wget ≥ 1,14, xxd ≥ 1,11dmg2img ≥ 1,6,5, sur Cygwin, le package n'est pas disponible via le gestionnaire de packages, le script le télécharge automatiquement.tesseract-ocr ≥ 4