Windows 主机
使用 kmk
的 packing
目标来创建 out\win.(x86|amd64)\(debug|release)\bin\VirtualBox-*.msi
。使用此 MSI 安装包进行正常安装。如果安装因任何原因失败,请使用 MSI 安装程序进行日志记录
msiexec /i VirtualBox-xxxxx.msi /l* install.log
在开发过程中,直接从输出目录运行可能更有用。为此,您需要加载驱动程序。(如果仅加载支持驱动程序,请用 load.cmd
替换 loadall.cmd
。)在 Windows 主机上使用以下命令:
loadall.cmd
对于卸载
comregister.cmd -u loadall.cmd -u
每当对主 API 或驱动程序进行更改时,您都需要重复注册和驱动程序加载步骤。
更改文件时,请务必先查看任务管理器,确认 VBoxSVC 和/或 VBoxSDS 服务器是否仍在运行。如果 VBox 未正确终止,可能会发生这种情况。
一个更快的替代方法是,从 http://www.sysinternals.com/Utilities/PsKill.html 获取 pskill,并在不确定 VBoxSVC 和 VBoxSDS 是否正在运行时直接将其终止
pskill VBoxSVC pskill VBoxSDS
如果您不想调试断言,可以使用以下方式启动 VirtualBox:
set VBOX_ASSERT=none set VBOX_LOG=... set VBOX_LOG_FLAGS=time thread buffered
Linux 主机
如果您希望以最少的麻烦和学习曲线开始,请从构建文件夹执行 ./loadall.sh
。这将执行以下操作:
- 将使用当前本地源代码的内核模块放到位,以便它们在启动时自动加载(仅适用于当前内核)。
- 使用 udev 设置自动设备节点创建,包括所有权和权限。
- 设置 USB 直通。要使用此功能,您需要是 vboxusers 组的成员(加入后请注销并重新登录以使其生效)。
您可以重复此过程来更新最小安装,或通过执行 ./loadall.sh -u
再次清除它。
通过从构建目录执行 ./load.sh
,可以在不进行任何形式安装的情况下启动最小的本地构建。这会加载主支持驱动程序,仅此而已。在模块源代码更改或更新后,您可以重复此操作。该模块可以通过 ./load.sh -u
再次移除。在这种情况下,您需要自行处理 udev 规则和/或设备节点。
SELinux 主机(例如 Oracle Linux、Fedora):如果您看到类似以下的消息,可能需要禁用 SELinux: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
通过执行以下命令在运行的系统上临时禁用 SELinux:
/usr/sbin/setenforce 0
或者通过编辑 /etc/selinux/config 文件并将 "enforcing" 更改为 "disabled" 来永久禁用它。
macOS 主机
要启动本地构建,请加载内核扩展:
cd VBox/out/darwin.x86/release/dist sudo ./load.sh
如果在运行上述脚本时遇到代码签名错误,请执行以下命令并重新启动机器。
sudo nvram boot-args=kext-dev-mode=1
运行 VirtualBox.app/Contents/MacOS
中的可执行文件照常进行。
Solaris 主机
要在不使用安装包的情况下启动本地构建,步骤如下:
将 VBI 接口(VirtualBox 3.1 及更高版本不需要)从源代码树复制到适当的位置。同时复制 32 位和 64 位版本也无妨。
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
接下来,复制并安装相应的 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
复制驱动程序配置文件(此处无 64/32 位差异,配置文件存放在 32 位位置):
cp src/VBox/HostDrivers/Support/solaris/vboxdrv.conf /platform/i86pc/kernel/drv
如果您之前安装过该模块,请在尝试加载新模块之前先将其移除:
su rem_drv vboxdrv
加载模块:
add_drv -m'* 0666 root sys' vboxdrv
创建 devlink:
ln -s /devices/pseudo/vboxdrv@0:vboxdrv /dev/vboxdrv
使用以下命令检查模块是否为正确的修订版本:
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) ...