在没有 GUI 或 Guest Additions 的情况下构建 VirtualBox

Building VirtualBox without GUI or Guest Additions

我正在尝试在 Ubuntu Server LTS 18.04 64 位上构建 VirtualBox 5.2.18。我想在没有任何 GUI 组件和 Guest Additions 的情况下构建它,因为我想避免安装任何不必要的依赖项。我在配置时使用了以下选项:

./configure --build-headless --disable-qt --disable-alsa --disable-pulse --disable-opengl --disable-sdl-ttf --disable-libvpx --disable-docs

虽然有一个选项可以只构建 Guest Additions (--only-additions),但似乎没有 configure 可以跳过构建 Guest Additions 的选项。有没有办法跳过构建 Guest Additions,或者忽略与构建 Guest Additions 相关的任何构建时错误?

我在 https://forums.virtualbox.org/viewtopic.php?t=33090&start=0 中找到了解决方案,其中包含更多有用的详细信息。通过将以下行添加到开发树根目录中的 LocalConfig.kmk,可以在没有 GUI 或 Guest Additions 的情况下构建 VirtualBox:

VBOX_WITHOUT_ADDITIONS = 1
VBOX_WITH_HEADLESS = 1
VBOX_WITH_VRDP=
VBOX_WITH_VRDP_VIDEO_CHANNEL=
VBOX_WITH_VRDP_AUTHMOD=
VBOX_WITH_VRDP_RDESKTOP=
VBOX_WITH_VBOXFB=
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_TESTSUITE=
VBOX_WITH_TESTCASES=
VBOX_WITH_SHARED_FOLDERS=
VBOX_WITH_SHARED_CLIPBOARD=
VBOX_WITH_VNC = 
VBOX_X11_SEAMLESS_GUEST=

然后可以通过在根文件夹中执行以下命令来构建 VirtualBox:

./configure --build-headless --disable-qt --disable-alsa --disable-pulse --disable-opengl --disable-sdl-ttf --disable-libvpx --disable-docs
source env.sh
kmk

尚不清楚哪些选项对于跳过来宾添加的构建是必需的(在 LocalConfig.kmk 或传递给 ./configure 的选项中)。

执行kmk packing时,可能会出现以下错误信息:

kmk: *** No rule to make target `.../out/linux.amd64/release/bin/additions/VBoxGuestAdditions.iso', 
needed by `.../out/linux.amd64/release/obj/Installer/linux/archive/additions/VBoxGuestAdditions.iso'.  
Stop.

可以通过在 kmk packing 之前执行 touch 命令来避免此错误(此修复是从 https://forums.virtualbox.org/viewtopic.php?f=10&t=41598&p=187420&hilit=VBoxGuestAdditions#p187420 获得的):

kmk
mkdir -p out/linux.amd64/release/bin/additions/
touch out/linux.amd64/release/bin/additions/VBoxGuestAdditions.iso
kmk packing

touch 之前添加了 mkdir 命令,因为如果目录 out/linux.amd64/release/bin/additions/ 不存在,touch 可能会失败。

安装VirtualBox-*.run时可能会出现一些错误,但应该完全成功。但是,如果您尝试执行 VBoxManage,您可能会收到以下错误:

Could not find VirtualBox installation. Please reinstall.

这很可能是因为在安装文件夹(通常是/opt/VirtualBox)中找不到可执行文件VirtualBox。文件 VirtualBox 是未构建的 GUI 组件。我们可以通过在安装文件夹中编辑 VBox.sh 并更改行

来绕过错误
elif test -f "${MY_DIR}/VirtualBox" && test -x "${MY_DIR}/VirtualBox"; then

elif test -f "${MY_DIR}/VBoxHeadless" && test -x "${MY_DIR}/VBoxHeadless"; then

VirtualBox 现在应该 运行 没有任何问题。