Dev/VirtualBox

From Kicksecure
< Dev

VirtualBox versus Other Virtualizers[edit]

TODO: expand

Not fully applicable to Kicksecure ™ but Whonix ™ has a chapter on this: https://www.whonix.org/wiki/Dev/VirtualBox#VirtualBox_versus_Other_Virtualizers

VirtualBox missing features[edit]

Tickets:

VirtualBox Unavailable in Debian stable and backports due to Debian Stable Security Maintenance Issues[edit]

Quote https://people.debian.org/~lucas/virtualbox-buster/

Virtualbox is not available in Debian 10 (nor in backports). The reasons are discussed at length in https://bugs.debian.org/794466 and various other mailing list threads, but can be summarized as:

  • Virtualbox is not suitable for Debian stable releases because of the lack of cooperation of Oracle on security support (that’s the Debian security team decision).
  • Since it is not suitable for stable releases, it cannot be included in the testing suite (that’s the Debian release team decision).
  • It also cannot be included in official backports, as packages must be in testing before they get backported (that’s the Debian backports team’s decision).

There is hope this will improve in future: please add VirtualBox to fasttrack

VirtualBox Unavailable in Debian main due to Licensing Issues[edit]

Quote Whonix KVM:

The VirtualBox developer team have recently taken the decision to switch out the BIOS in their hypervisor. However, it now comes with one that requires compilation by a toolchain that does not meet the definition of Free Software as per the guidelines of the Free Software Foundation. This move is considered problematic for free and open source software projects like Debian, on which Kicksecure ™ is based. The issues of the Open Watcom License are explained in this thread on the Debian Mailinglist. In summary, there are issues surrounding the contradictory language of the license, the assertion of patents against software that rely upon it, and the placing of certain restrictions on software uses. For these reasons, those who care about running FOSS and appreciate its ethical views are recommended to avoid running VirtualBox; also see avoid non-freedom software.

References:

  • VirtualBox Guest Additions and VirtualBox Oracle VM VirtualBox Extension Pack are different things.
  • This is unrelated to VirtualBox Oracle VM VirtualBox Extension Pack, which is proprietary, and which was never in Debian.

Does Debian build VirtualBox using Open Watcom? No. Quote debian/copyright file from Debian VirtualBox Repository:

This package is not part of the Debian operating system.
It is in the "contrib" area of the Debian archive because it requires a
non-free compiler (Open Watcom) to build the BIOS.
Upstream provides pre-built BIOS images which is used instead.

Debian is already using VBoxBiosAlternative:

Quote https://bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1605337 / https://bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1605337/comments/3

<oracle> LocutusOfBorg: btw, there are no BIOS binaries in the vbox source tree. only the VBoxBiosAlternative.* files, which are used if you don't have OpenWatcom.

VirtualBox Guest Additions ISO Freedom vs Non-Freedom[edit]

A part of Guest Additions source code is the part of OSE repository and licensed under GPLv2. Guest Additions build also includes big list of 3rd party files under various permissive licenses

At the same time VirtualBox binary packages which are distributed freely includes Guest Additions ISO, and Licensing FAQ (https://www.virtualbox.org/wiki/Licensing_FAQ) clearly states: Yes. The GPLv2 allows you to distribute the VirtualBox Guest Additions, in modified or unmodified form, as long as you adhere to the terms and conditions of the GPLv2.

I hope that answers your question.

VirtualBox Open Source vs Closed Source[edit]

  • VirtualBox is Open Source.
  • VirtualBox Guest Additions are Open Source.
  • VirtualBox Oracle VM VirtualBox Extension Pack is proprietary.
    • Not installed by default in Kicksecure ™ VirtualBox.
    • Neither used nor required by most users.

Open Source here means, the full corresponding source code is released under Free Software Foundation (FSF), Open Source Initiative (OSI) and The Debian Free Software Guidelines (DFSG) approved licenses.

However the is a build toolchain issue elaborated in chapter VirtualBox Unavailable in Debian main due to Licensing Issues.

VirtualBox Integration[edit]

VirtualBox and guest additions in Kicksecure ™ 16 and above are acquired from fasttrack.debian.net.

This heavily simplifies the Previous VirtualBox Integration.

Fasttrack[edit]

Arguments for keeping VirtualBox Support[edit]

  • KVM is not available to Windows users.
  • Simplicity, as in: VirtualBox has a VM import GUI feature.
  • Available to users not owning computer providing hardware virtualization. (KVM requires that. QEMU may or may not but it is unsupported.)
  • Due to Windows users and simplicity it leads to greater popularity, which in theory attracts more users, developers, auditors, payments, etc and is therefore good for the overall health of the project.
  • Some Windows/VirtualBox users experimenting with their first Linux (Kicksecure ™) will one day become users who mainly use Linux as their host operating system.

VirtualBox Oracle VM VirtualBox Extension Pack[edit]

  • VirtualBox Guest Additions and VirtualBox Oracle VM VirtualBox Extension Pack are different things.
  • VirtualBox Oracle VM VirtualBox Extension Pack:
    • Is proprietary, nonfreedom software.
    • Was never in packages.debian.org.

Quote https://www.oracle.com/uk/virtualization/technologies/vm/downloads/virtualbox-downloads.html

Free for personal, educational or evaluation use under the terms of the VirtualBox Personal Use and Evaluation License on Windows, Mac OS X, Linux and Solaris x-86 platforms:

Quote https://www.virtualbox.org/wiki/Downloads

Support for USB 2.0 and USB 3.0 devices, VirtualBox RDP, disk encryption, NVMe and PXE boot for Intel cards. See this chapter from the User Manual for an introduction to this Extension Pack. The Extension Pack binaries are released under the VirtualBox Personal Use and Evaluation License (PUEL).

Quote https://www.virtualbox.org/manual/ch01.html#intro-installing

The extension pack provides the following added functionality:

Storage Controller Setting[edit]

Since Kicksecure ™ version 15.0.1.7.3: AHCI

Reasons:

Reason why Kicksecure ™ previously used a different setting LsiLogic SAS was avoidance of VirtualBox host software bug, High I/O causing filesystem corruption. See also old Whonix ™ issue tracker discussion, VirtualBox AHCI.

The current default setting AHCI might lead to the issue High Disk Usage Causing Filesystem Corruption on some (slower) hardware configurations due to VirtualBox host software bug, High I/O causing filesystem corruption. It's speculation and unavoidable. There is no other solution at the moment. Wiki chapter High Disk Usage Causing Filesystem Corruption already contains approaches which might fix this issue in case it manifests.)

Bugs[edit]

[drm:vmw_host_log [vmwgfx]] ERROR Failed to send log[edit]

Confusing message but no bad effects.

https://www.virtualbox.org/ticket/19168

[sda] Incomplete mode parameter data / Assuming drive cache: write through[edit]

Confusing error message due to our use of a SAS virtual hard drive controller no bad effects. Error message doesn't happen with SATA controller but we can't use that one

Core Dump[edit]

Quote https://www.virtualbox.org/wiki/Core_dump

VirtualBox core dump:

Note that this core dump can contain a memory dump of your guest which can include sensitive information.

Kernel core dump:

Privacy information: Also be aware that the above kernel dumps could contain unrelated sensitive and private information about you and your system, e.g. stored passwords in memory. Unfortunately this is unavoidable in those situations, as a kernel dump essentially is an unmodified and unfiltered part of your computer's RAM (main memory).

VirtualBox Bug Reports[edit]

VirtualBox (Guest Additions) have various issues. Often copy/paste from host to VM does not work or VMs are not automatically reized to optional size.

The internet is full of discussions that lead to no solution. Hard to find good information. It is unhelpful to ask in arbitrary places about it as this only leads to more discussions which go nowhere. The only option is to find out what information VirtualBox developers are asking for, to write a good bug report and to report to virtualbox.org developers.

  • Step 1) Research what information VirtualBox developers would be asking for.
  • Step 2) Write a good bug report.

What Should Be Included In Bug Report[edit]

Include as many information as possible.

Resize Issues[edit]

Notes[edit]

Non-Issues[edit]

  • https://www.virtualbox.org/ticket/17777
    • (EE) Failed to load module "vboxvideo" (module does not exist, 0)

    • As of X.Org server 1.19 we use a kernel driver and the X.Org modesetting driver. See the log section you attached.

Bug Report Draft[edit]

user@host:~$ dpkg -l | grep x11
ii  libqt5x11extras5:amd64                        5.11.3-2                     amd64        Qt 5 X11 extras
ii  libva-x11-2:amd64                             2.4.0-1                      amd64        Video Acceleration (VA) API for Linux -- X11 runtime
ii  libx11-6:amd64                                2:1.6.7-1                    amd64        X11 client-side library
ii  libx11-data                                   2:1.6.7-1                    all          X11 client-side library
ii  libx11-xcb1:amd64                             2:1.6.7-1                    amd64        Xlib/XCB interface library
ii  libxkbcommon-x11-0:amd64                      0.8.2-1                      amd64        library to create keymaps with the XKB X11 protocol
ii  virtualbox-guest-x11                          6.1.4-dfsg-2                 amd64        x86 virtualization solution - X11 guest utilities
ii  x11-common                                    1:7.7+19                     all          X Window System (X.Org) infrastructure
ii  x11-utils                                     7.7+4                        amd64        X11 utilities
ii  x11-xkb-utils                                 7.7+4                        amd64        X11 XKB utilities
ii  x11-xserver-utils                             7.7+8                        amd64        X server utilities
ii  xserver-xorg                                  1:7.7+19                     amd64        X.Org X server
ii  xserver-xorg-core                             2:1.20.4-1                   amd64        Xorg X server - core server
ii  xserver-xorg-input-all                        1:7.7+19                     amd64        X.Org X server -- input driver metapackage
ii  xserver-xorg-input-libinput                   0.28.2-2                     amd64        X.Org X server -- libinput input driver
ii  xserver-xorg-video-fbdev                      1:0.5.0-1                    amd64        X.Org X server -- fbdev display driver
ii  xserver-xorg-video-qxl                        0.1.5-2+b1                   amd64        X.Org X server -- QXL display driver
ii  xserver-xorg-video-vesa                       1:2.4.0-1                    amd64        X.Org X server -- VESA display driver

Bug descriptions:

Broken:

1) Power off the VM. 2) Restart the VM. 3) Maximize the VM window after start of the VM as soon as possible. 4) VirtualBox VM Window → View → Virtual Screen 1 → Choose any, resize to another resolution 5) VirtualBox VM Window → View → Auto-resize Guest Display / Adjust Window Size

Also broken:

XFCE Start Menu → Settings → Display → Resolution: → Choose a higher resolution resolution → Apply

TODO: manual resize functional using xrandr

Previous VirtualBox Integration[edit]

Archived. For current implementation, see chapter VirtualBox Integration.

Issue[edit]

Goal: Installation of the VirtualBox host software with functional VirtualBox guest additions.

This was previously very difficult due to many issues of which none is caused by Kicksecure ™. The purpose of this chapter is to document the current implementation for those wondering why it has been implemented this way and perhaps hearing if there are any better alternatives. Here is a summary of these issues:

VirtualBox is unavailable in Debian stable and backports due to Debian stable security maintenance Issues.

Custom Debian backport building failing due to dependency issues. Very difficult. Even if that was solved, there would still be the broken compilation from source code issue.

The Lucas Nussbaum Debian buster backport repository was not an option either at time of initial implementation. [2] In 23 July 2020 VirtualBox latest version in Lucas Nussbaum repository was
virtualbox_6.1.4-dfsg-1~~bpo10+1_amd64.deb 2020-02-22 07:52 while upstream virtualbox.org was at
virtualbox-6.1_6.1.12-139181~Debian~buster_amd64.deb.

VirtualBox was not available from Debian fasttrack at time of initial implementation during Kicksecure ™ 15. VirtualBox from Debian fasttrack is used since Kicksecure ™ 16.

VirtualBox Guest Additions Debian Packages are unavailable from upstream virtualbox.org Debian repository.

Previous call for help:

What was the importance VirtualBox in Debian buster? It was the base distribution which Kicksecure ™ 15 was based on and the distribution used to build Kicksecure ™ for VirtualBox for Linux, Windows and macOS from source code.

Related:

Implementation[edit]

TODO: update for Kicksecure ™ which uses Debian fasttrack repository to acquire VirtualBox.

To be able to continue providing Kicksecure ™ for VirtualBox, from Kicksecure ™ 15.0.1.4.8 and above the following implementation is in use:

  • VirtualBox Guest Additions
    • Kicksecure ™ build script will download package virtualbox-guest-additions-iso from Debian sid (unstable) and upload to Kicksecure ™ APT repository. That package provides file /usr/share/virtualbox/VBoxGuestAdditions.iso.
    • At time of initial implementation contained VirtualBox guest additions ISO version 6.1.12-1. In short, 6.1.12. Ignore the -1 which is a Debian package revision number and not the upstream (virtualbox.org) version number.
    • virtualbox.org homepage also advertised version 6.1.12.
    • Package virtualbox-guest-additions-iso will be installed by default in new Kicksecure ™ VirtualBox builds.
    • Related: VirtualBox Guest Additions ISO Freedom vs Non-Freedom
    • Documented here: VirtualBox/Guest_Additions#VirtualBox_Guest_Additions
  • This is
    • to allow Kicksecure ™ developers test newer versions of VirtualBox host software before these are installed on user's computer and,
    • to allow updating VirtualBox host software and VirtualBox guest additions at the same time, using compatible versions.
  • Package vm-config-dist will run vbox-guest-installer (by Kicksecure ™ developers) during upgrade (vm-config-dist.postinst) and therefore also during the Kicksecure ™ VirtualBox ova build process.
  • Package vm-config-dist has a dpkg trigger since Kicksecure ™ 15.0.1.5.1 vm-config-dist.triggers which results in running vbox-guest-installer when package virtualbox-guest-additions-iso is upgraded.
  1. vbox-guest-installer (by Kicksecure ™ developers) will check if any of the packages virtualbox-guest-x11, virtualbox-guest-utils or virtualbox-guest-dkms are still installed and recommend to uninstall those if still installed.
  2. And also check if package virtualbox-guest-additions-iso is installed and recommend to install it if not yet installed.
  3. If these two conditions are met it will continue.
  4. Next is deletion of folder /var/cache/vm-config-dist/vbox-guest-additions-extracted-iso and /var/cache/vm-config-dist/vbox-guest-additions-extracted-makeself if these are already existing from a previous run.
  5. It then follows extraction of /usr/share/virtualbox/VBoxGuestAdditions.iso to folder /var/cache/vm-config-dist/vbox-guest-additions-extracted-iso.
  6. Making /var/cache/vm-config-dist/vbox-guest-additions-extracted-iso/VBoxLinuxAdditions.run executable.
  7. Change directory into /var/cache/vm-config-dist/vbox-guest-additions-extracted-iso.
  8. Executing ./VBoxLinuxAdditions.run --check.
  9. Extracting ./VBoxLinuxAdditions.run to folder /var/cache/vm-config-dist/vbox-guest-additions-extracted-makeself.
  10. Change directory into folder /var/cache/vm-config-dist/vbox-guest-additions-extracted-makeself.
  11. Executing ./install.sh force force.
  12. Installation of VirtualBox guest additions from package virtualbox-guest-additions-iso should now be completed.
  13. Installation using this method also ships required hooks in folder /etc/kernel to rebuild VirtualBox guest additions during kernel upgrade thanks to VBoxGuestAdditions.iso.

Credits: Gratitude is expressed to VirtualBox developers for providing VBoxGuestAdditions.iso and to Debian Developers for providing package virtualbox-guest-additions-iso. The script to improve usability of this named vbox-guest-installer was created by the Kicksecure ™ project.

Forum discussion: https://forums.whonix.org/t/challenges-upgrading-virtualbox-to-6-1-12-on-debian-buster-installation-from-upstream-virtualbox-org-apt-repository/9984

Related: VirtualBox Generic Bug Reproduction

See Also[edit]

References[edit]

  1. VirtualBox bug report: clarify license of VBoxGuestAdditions ISO OSE or PUEL (free vs nonfree) VirtualBox forums question: Is VBoxGuestAdditions_6.1.10.iso OSE or PUEL?
  2. manual instructions


Unfinished: This wiki is a work in progress. Please do not report broken links until this notice is removed, use Search Engines First and contribute improving this wiki.