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 of hoger (http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x)
- het laden van zelfgebouwde kernelextensies (kexts) op recenter OS X kan wijzigingen in de systeemconfiguratie vereisen, tenzij u een kext-ondertekeningscertificaat hebt en 10.14 (High Sierra) of eerder draait.Voor 10.11 (El Capitan) en later opstarten naar de herstelpartitie en ofwel het laden van niet-ondertekende kexts inschakelen:
csrutil enable --without kext
of SIP all together uitschakelen:
csrutil disable
voor 10.,15 (Catalina) en later moet u ook de reboot requirement (ook van herstelpartitie) uitschakelen:
spctl kext-consent disable
Als u 10.10 (Yosemite) draait, is er een boot-args optie om het laden van niet-ondertekende kexts toe te staan. Voer het volgende uit en start opnieuw op:
sudo nvram boot-args="kext-dev-mode=1"
Building VirtualBox
- Verander naar de rootdirectory van de bronnen en voer het configure script uit:
./configure --disable-hardening
U kunt handmatig de doelarchitectuur instellen met –target-arch=x86 of amd64, als er zich architectuurgerelateerde problemen voordoen.,
als het alles vindt wat het nodig heeft, zal het een bestand aanmaken met de naam !AutoConfig.kmk met paden naar de verschillende tools op uw systeem. Ook, het zal een omgeving setup script genaamd creëren env.sh. deze stap hoeft maar één keer gedaan te worden (als er iets verandert in je build tool setup, moet je het misschien herhalen, maar houd er rekening mee dat beide uitvoerbestanden zullen worden overschreven).
- wanneer u VirtualBox wilt bouwen, moet u een shell openen en het gegenereerde omgevingsinstellingsscript sourceen env.sh, d.w.z., do
. ./env.sh
kmk
de standaard is voor een release build, Als u een debug of profielbouw wilt uitvoeren voeg BUILD_TYPE=debug of BUILD_TYPE=profile toe als argument voor kmk of exporteer het als een omgevingsvariabele in uw shell.
VirtualBox draaien
- laad alle kernel extensie modules. Deze zijn te vinden in out / darwin.x86/release / dist samen met een klein script (loadall.sh) om ze te laden. Voer uit en zorg ervoor dat de modules met succes worden geladen.
- Enter / darwin.x86 / release / Dist / VirtualBox.,app/inhoud/MacOS/.
- uitvoeren ./VirtualBox
bouwen van OSE-pakketten voor distributie
verharden nooit uitschakelen (zie vorige sectie) bij het maken van pakketten voor herverdeling.
Hardening heeft wat extra configuratie en post-build stappen nodig. De standaard installatiemap van VirtualBox is / Applications / VirtualBox.applicatie/. Als je dat wilt veranderen, zeg dan in /Applications/OpenSource/VirtualBox.app/, je moet het volgende toevoegen aan de LocalConfig.kmk:
het kan ook zinvol zijn om een aantal van de ontwikkeling alleen dingen uit te schakelen, zoals test cases., Voeg het volgende toe aan LocalConfig.kmk:
VBOX_WITH_TESTSUITE=VBOX_WITH_TESTCASES=
beginnend met VirtualBox 4.1, worden er extra debugsymbolen aangemaakt. U kunt dit voorkomen door het volgende toe te voegen aan LocalConfig.kmk:
kBuildGlobalDefaults_LD_DEBUG=
vervolgens VirtualBox opnieuw bouwen en installeren in / Applications / OpenSource/. Er is geen ondersteuning voor het installeren van VirtualBox in een doelmap. Kopieer de bestanden naar de bestemming. Zorg er nu voor dat de setuid stubs de juiste permissies hebben:
een andere vereiste voor verharding is dat elke path component van de bovenliggende map van VirtualBox.,app / is eigendom van root en niet wereld beschrijfbaar. Zorg ervoor dat dit het geval is.
relatieve vs. absolute paden in de gebruikte bibliotheken
Als u iets ziet als de volgende fout bij het starten van VirtualBox moet u de gebruikte bibliotheken veranderen in absolute paden.
op Mac OS X is het niet toegestaan om bibliotheken met relatieve paden te gebruiken om naar andere bibliotheken te verwijzen wanneer het uitvoerbare bestand setuid is. U kunt alle gekoppelde bibliotheken weergeven met het volgende commando:
otool -L /Applications/VirtualBox.app/Contents/MacOS/VirtualBox.dylib
volgende, aangenomen dat Qt is geïnstalleerd in /Applications/VirtualBox.,app / Contents / Frameworks/, u kunt het pad wijzigen door het volgende te gebruiken:
het eerste commando verandert de identifier van de bibliotheek zelf. De tweede wijzigt verwijzingen naar andere bibliotheken. Daar is het eerste pad het oude pad waarnaar verwezen wordt, het tweede is het nieuwe pad en het laatste pad is het te wijzigen bestand (zie man install_name_tool). Let op, je moet dit herhalen met elke bibliotheek die betrokken is (tenminste VirtualBox.dylib, QtCore, QtGui, QtNetwork, QtOpenGl).