Prerequisites on Mac OS X
- 10.10.x (Yosemite) or later running on Intel hardware (PowerPC hardware is not supported nor is building an X11 variant).
Then perform the following command:
sudo port install libidl acpica yasm subversion doxygen texlive texlive-latex-extra texlive-fonts-extra x86_64-elf-gcc
Doxygen, texlive* and x86_64-elf-gcc are optional (first two for documentation, latter for the validation kit).
- Qt/Mac 5.,6 ou version ultérieure (http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x)
- Le chargement des extensions de noyau auto-construites (kexts) sur OS X Plus Récent peut nécessiter des modifications de la configuration système, sauf si vous avez un certificat de signature kext et que vous exécutez 10.14 (High Sierra) ou une version antérieure.Pour 10.11 (El Capitan) et plus tard, démarrez sur la partition de récupération et activez le chargement de kexts non signés:
csrutil enable --without kext
ou désactivez SIP tous ensemble:
csrutil disable
pour 10.,15 (Catalina) et plus tard, vous devez également désactiver l’exigence de redémarrage (également à partir de la partition de récupération):
spctl kext-consent disable
si vous utilisez 10.10 (Yosemite), il existe une option boot-args pour permettre le chargement de kexts non signés. Exécutez ce qui suit et redémarrez:
sudo nvram boot-args="kext-dev-mode=1"
Building VirtualBox
- passez au répertoire racine des sources et exécutez le script configure:
./configure --disable-hardening
vous pouvez définir manuellement l’architecture cible avec target target-arch=x86 ou amd64, si des problèmes liés à l’architecture se produisent.,
S’il trouve tout ce dont il a besoin, il créera un fichier appelé !AutoConfig.KMK contenant les chemins d’accès aux différents outils de votre système. En outre, il créera un script de configuration d’environnement appelé env.sh. cette étape ne doit être effectuée qu’une seule fois (si quelque chose change dans la configuration de votre outil de génération, vous devrez peut-être le répéter, mais gardez à l’esprit que les deux fichiers de sortie seront écrasés).
- chaque fois que vous voulez construire VirtualBox, vous devez ouvrir un shell et source le script de configuration de l’environnement généré env.sh, c’est-à-dire, do
. ./env.sh
- To build Type
kmk
la valeur par défaut est une version release, si vous souhaitez faire une version debug ou profile, ajoutez BUILD_TYPE=debug ou BUILD_TYPE = profile comme argument à kmk ou exportez-la en tant que variable d’environnement dans votre shell.
exécuter VirtualBox
- charger tous les modules d’extension du noyau. Ceux-ci peuvent être trouvés dans/darwin.x86 / release / dist avec un petit script (loadall.sh) pour les charger. Exécutez et assurez-vous que les modules se chargent correctement.
- Entrée/sortie de darwin.x86/presse/dist/VirtualBox.,application / contenu / MacOS/.
- Exécuter ./ VirtualBox
construire des paquets OSE pour la distribution
ne désactivez jamais le durcissement (voir section précédente) lors de la création de paquets pour la redistribution.
Le durcissement nécessite des étapes de configuration et de post-construction supplémentaires. Le répertoire d’installation par défaut de VirtualBox est /Applications / VirtualBox.App/. Si vous aimez changer cela, disons dans / Applications / OpenSource / VirtualBox.app/, vous devez ajouter ce qui suit Au LocalConfig.kmk:
Il peut également être judicieux de désactiver certains éléments de développement uniquement, comme les cas de test., Ajoutez ce qui suit à LocalConfig.kmk:
VBOX_WITH_TESTSUITE=VBOX_WITH_TESTCASES=
à partir de VirtualBox 4.1, des symboles de débogage supplémentaires sont créés. Vous pouvez empêcher cela en ajoutant ce qui suit à LocalConfig.kmk:
kBuildGlobalDefaults_LD_DEBUG=
ensuite, reconstruisez VirtualBox et installez-le dans/Applications/OpenSource/. Il n’y a pas de support pour installer VirtualBox dans un répertoire cible. Copiez simplement les fichiers vers la destination. Maintenant, assurez-vous que les stubs setuid ont les autorisations correctes:
Une autre exigence de durcissement est que chaque composant path du répertoire parent de VirtualBox.,app / appartient à root et n’est pas accessible en écriture dans le monde. Assurez-vous que c’est le cas.
chemins relatifs vs absolus dans les bibliothèques utilisées
Si vous voyez quelque chose comme l’erreur suivante lors du démarrage de VirtualBox, vous devez modifier les bibliothèques utilisées pour utiliser des chemins absolus.
sous Mac OS X, il n’est pas permis d’utiliser des bibliothèques avec des chemins relatifs pour le référencement vers d’autres bibliothèques lorsque l’exécutable est setuid. Vous pouvez afficher toutes les bibliothèques liées par la commande suivante:
otool -L /Applications/VirtualBox.app/Contents/MacOS/VirtualBox.dylib
suivant, en supposant que Qt est installé dans/Applications / VirtualBox.,app / Contents/ Frameworks/, vous pouvez changer le chemin en utilisant ceci:
la première commande change l’identifiant de la bibliothèque elle-même. La seconde modifie les références à d’autres bibliothèques. Là, le premier chemin est l’ancien chemin Référencé, le second est le nouveau chemin et le dernier chemin est le fichier à changer (voir man install_name_tool). Notez que vous devez répéter cela avec chaque bibliothèque impliquée (au moins VirtualBox.dylib, QtCore, QtGui, QtNetwork, QtOpenGl).