Search code examples
virtualboxheadlessubuntu-18.04

Building VirtualBox without GUI or Guest Additions


I'm trying to build VirtualBox 5.2.18 on Ubuntu Server LTS 18.04 64-bit. I want to build it without any GUI components and without Guest Additions, as I want to avoid installing any unnecessary dependencies. I am using the following options when configuring:

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

Although there is an option to only build the Guest Additions (--only-additions), there doesn't seem to be an option passable to configure to skip building Guest Additions. Is there a way to skip building Guest Additions, or perhaps to ignore any build-time errors related to building Guest Additions?


Solution

  • I found a solution in https://forums.virtualbox.org/viewtopic.php?t=33090&start=0, which contains more useful details. One can build VirtualBox without GUI or Guest Additions by adding the following lines to LocalConfig.kmk in the root of the development tree:

    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 can then be built by executing the following in the root folder:

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

    It is unclear which of the options is necessary for skipping the building of the guest additions (in either LocalConfig.kmk or those passed to ./configure).

    When kmk packing is executed, the following error message might appear:

    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.
    

    This error can be avoided by executing a touch command before kmk packing (this fix was obtained from 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
    

    The mkdir command was added before touch because touch might fail if the directory out/linux.amd64/release/bin/additions/ did not exist.

    Some errors might come up during installation of VirtualBox-*.run, but it should successfully completely. However, if you try to execute VBoxManage, you might get the following error:

    Could not find VirtualBox installation. Please reinstall.
    

    This arises most probably because the executable file VirtualBox was not found in the installation folder (usually /opt/VirtualBox). The file VirtualBox is the GUI component which was not built. We can bypass the error by editing VBox.sh in the installation folder, and changing the line

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

    to

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

    VirtualBox should now run without any problems.