Windows Hosts
Use the packing
target of kmk
to create out\win.(x86|amd64)\(debug|release)\bin\VirtualBox-*.msi
. Use this
MSI install package to do a normal install. If installation fails for any reason, use logging with the MSI installer:
msiexec /i VirtualBox-xxxxx.msi /l* install.log
During development it is probably much more useful to run directly from the output directory. In order to do that you need to load the drivers. (For only loading the support driver, substitute load.cmd
for loadall.cmd
.) Use the following commands with the windows host:
loadall.cmd
For uninstallation:
comregister.cmd -u loadall.cmd -u
Whenever changes are made to the main API or the driver, you need to repeat the registration and driver loading steps.
When changing files be sure to have first a look in taskmanager if the VBoxSVC and/or VBoxSDS servers are still running. This may happen if VBox didn't terminate correctly.
A quicker alternative is to get pskill from http://www.sysinternals.com/Utilities/PsKill.html and simply kill VBoxSVC and VBoxSDS when uncertain whether they are running or not:
pskill VBoxSVC pskill VBoxSDS
If you don't want to debug assertions, you can start VirtualBox with:
set VBOX_ASSERT=none set VBOX_LOG=... set VBOX_LOG_FLAGS=time thread buffered
Linux Hosts
If you want to get started up with a minimum of fuss and learning curve, execute ./loadall.sh
from the build folder. This will do the following:
- Put kernel modules using the current local source code in place so that they are automatically loaded at boot (for the current kernel only).
- Set up automatic device node creation, including ownership and permissions, using udev.
- Set up USB pass-through. To use this you need to be a member of the group vboxusers (log out and back in again after joining to make it effective).
You can update the minimal installation by repeating the procedure, or clean it up again by executing ./loadall.sh -u
.
Geting a minimal local build going without any form of installation can be done by executing ./load.sh
from the build directory. This loads the main support driver and nothing else. You can repeat this after changes or updates to the module source code. The module can be removed again with ./load.sh -u
. In this case you need to take care of udev rules and/or device nodes yourself.
SELinux hosts (e.g. Oracle Linux, Fedora): It might be necessary to disable SELinux if you see messages like nsNativeComponentLoader: SelfRegisterDll(VBoxC.so) Load FAILED with error: /root/src/vbox/out/linux.amd64/debug/bin/components/../VBoxVMM.so: cannot restore segment prot after reloc: Permission denied
Disable SELinux temporary on a running system by executing
/usr/sbin/setenforce 0
or disable it permanently by editing /etc/selinux/config and changing "enforcing" to "disabled".
Mac OS X Hosts
To get a local build going, load the kernel extensions:
cd VBox/out/darwin.x86/release/dist sudo ./load.sh
If you get code signing error while running above script execute following command and restart the machine.
sudo nvram boot-args=kext-dev-mode=1
Running the executables in VirtualBox.app/Contents/MacOS
works as usual.
Solaris Hosts
To get a local build going without using the install package is as follows:
Copy the VBI interfaces (not required for VirtualBox 3.1 and higher) from the source tree to the appropriate place. Copying both 32-bit and 64-bit doesn't hurt.
cp src/VBox/Runtime/r0drv/solaris/vbi/64/vbi /platform/i86pc/kernel/misc/amd64/vbi cp src/VBox/Runtime/r0drv/solaris/vbi/32/vbi /platform/i86pc/kernel/misc/vbi
Next, copy and install the appropriate vboxdrv
cp out/solaris.amd64/release/bin/vboxdrv /platform/i86pc/kernel/drv/amd64/vboxdrv cp out/solaris.x86/release/bin/vboxdrv /platform/i86pc/kernel/drv/vboxdrv
Copy the driver configuration file (no 64/32-bit differences here, the configuration file goes into the 32-bit location)
cp src/VBox/HostDrivers/Support/solaris/vboxdrv.conf /platform/i86pc/kernel/drv
If you have previous installed the module, remove it first before trying to load a new one
su rem_drv vboxdrv
Load the module(s)
add_drv -m'* 0666 root sys' vboxdrv
Create the devlink
ln -s /devices/pseudo/vboxdrv@0:vboxdrv /dev/vboxdrv
Check if the module is of the right revision using:
modinfo | grep vbox 237 fffffffff7a97748 2900 75 1 vboxflt (VirtualBox NetBow 3.2.1r61839) 238 fffffffff8771000 27e10 107 1 vboxdrv (VirtualBox HostDrv 3.2.1r61839) ...