====== VirtualBox ======
FIXME [[https://kifarunix.com/upgrade-virtualbox-6-x-to-virtualbox-7-x-on-ubuntu-debian/|Upgrade VirtualBox 6.x to VirtualBox 7.x on Ubuntu/Debian]]
===== Host =====
* I recommend to install VirtualBox from the Oracle repository, as you get the latest version of VirtualBox
* Add "virtualbox.list" to /etc/apt/sources.list.dsudo deb http://download.virtualbox.org/virtualbox/debian stretch contrib
* Add Oracle VirtualBox public key:wget https://www.virtualbox.org/download/oracle_vbox_2016.asc
sudo apt-key add oracle_vbox_2016.asc
wget https://www.virtualbox.org/download/oracle_vbox.asc
sudo apt-key add oracle_vbox.asc
* Install Virtualbox:sudo apt-get update
sudo apt-get install virtualbox-6.0
* Download the [[https://www.virtualbox.org/wiki/Downloads|VirtualBox Extension Pack]]. Double click the file from within the GUI to install.
* [[https://www.virtualbox.org/manual/ch09.html#diskencryption|VirtualBox: Encryption of Disk Images]]
* [[https://pgaskin.net/linux-tips/configuring-virtualbox-autostart/|Configuring VirtualBox autostart on Linux]]
===== Guest =====
===== Guest Additions =====
* To upgrade the Guest Additions after upgrading the host version, download the guest additions pack, close all virtual machines, and start virtualbox as rootsudo virtualbox
* After installing the Guest Additions, close virtualbox and restart it as user
===== Guest Additions for a Debian 9 guest on a Debian 7 host =====
* Add the following line to /etc/apt/sources.list.d:deb http://ftp.debian.org/debian stretch-backports main contrib
* Install virtualbox-guest-dkms, kernel headers, and, optionally, virtualbox-guest-x11 (for the graphical guest utilities):sudo apt update
sudo apt install virtualbox-guest-dkms virtualbox-guest-x11 linux-headers-$(uname -r)
* Reboot the guest system.
* More info: [[https://unix.stackexchange.com/questions/286934/how-to-install-virtualbox-guest-additions-in-a-debian-virtual-machine|How to install VirtualBox Guest Additions in a Debian virtual machine]]
===== Autostart and Autostop =====
There are several options to autostart (and autostop) virtual machines. For a server environment with a Debian host the 1. option through rc.local is preferrable.
- through rc.local
- through X desktop
- through VirtualBox command line
==== through rc.local ====
=== startup ===
- install [[deb10:rclocal|rc.local]] as a systemd service on your debian server. This emulates the //SysVinit// behavior of rc.local as Debian changed the default init system to //systemd// with Debian Jessie 8
- mount encrypted file systems through rc.local as explained in [[deb9:encrypted|Encrypted partitions/folders with auto-mount]]
- start vms through rc.local headless. Since rc.local runs as root you need to use runuser to start the vm as the user who created the vm. You may also chose to put the startvm code into a script and add execution of the script to rc.local:runuser -l -c "vboxmanage startvm --type headless"
=== shutdown ===
- put a symlink to the following script into /lib/systemd/system-shutdown:runuser -l -c "ssh 'sudo systemctl poweroff /dev/null &'"
while [ "`runuser -l -c 'vboxmanage list runningvms'`" != "" ]
do
echo waiting for VMs to shutdown
sleep 5
done
- allow to execute command 'systemctl poweroff' in the vm (do not ssh into the VM as root - security!). Note that 'systemctl poweroff' is the systemd command, do not use //poweroff// or //shutdown// commands:sudo visudo
ALL=(root) NOPASSWD: /sbin/systemctl poweroff
- the scripts must be run as root so they can be executed through rc.local
- also, the server must be shut down with //systemctl// rather than //reboot// or //shutdown// for this to work
=== links ===
* Debian [[deb10:services|Services]]
==== through XFCE Desktop ====
=== startup ===
* On the host, open **Settings -> Session and Startup**, then add a new task under **Application Autostart** with the following command:VBoxManage startvm
=== shutdown ===
* On the client, open **Settings -> Power Manager**, then set the desired action under "When power button is pressed"
==== through VirtualBox command line ====
- Configurationsudo vim /etc/default/virtualbox
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
sudo vim /etc/vbox/autostart.cfg
default_policy = deny
# Create an entry for each user allowed to use autostart
username = {
allow = true
startup_delay = 10
}
sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox
sudo usermod -aG vboxusers username
- Choose VMs to automatically start and stopVBoxManage setproperty autostartdbpath /etc/vbox # first time a user configures autostart only
VBoxManage modifyvm --autostart-enabled
VBoxManage modifyvm --autostop-type
- Restart VirtualBox autostart servicesudo service vboxautostart-service restart
==== Start VM ====
vboxmanage startvm MachineName
==== Stop VM ====
vboxmanage controlvm MachineName acpipowerbutton
In xfce desktop, make sure the action on Power Button is set in Settings --> Power Manager
==== Stop VM before powering down host through NUT ====
Set different timeouts to the shutdown command used by NUT. For example, set +0 for the clients, and +1 for the host.
==== Check running VMs ====
One of the following commands:
VBoxManage list runningvms
vboxmanage list vms --long | grep -e "Name:" -e "State:"
==== Links ====
* [[https://superuser.com/questions/622024/how-can-i-tell-if-a-virtual-machine-is-up-from-the-command-line|How can I tell if a virtual machine is up from the command line?]]
* [[https://forums.virtualbox.org/viewtopic.php?f=7&t=61429|autostop-type]]
* [[https://pgaskin.net/linux-tips/configuring-virtualbox-autostart/|Configuring VirtualBox autostart on Linux]]
* [[http://techgenix.com/start-virtualbox-service/|How to start VirtualBox machines automatically as a service on Windows]]
===== Update VirtualBox =====
* Make sure to update the same way you installed the previous version, either from the Oracle repository, or from the Debian backports
* If you followed my guide, check the VirtualBox version.revision.build (e.g. 6.1.16)
* Updating the build is done by running "apt upgrade"audo apt update
sudo apt upgrade
* Updating to a new version or revision is done by running "apt install virtualbox-.", e.g.sudo apt update
sudo apt install virtualbox-6.1
==== Links ====
* [[https://www.linuxbabe.com/debian/install-virtualbox-debian-9-stretch|2 Ways to Install VirtualBox on Debian 9 Stretch]]
===== Manage VirtualBox through CLI =====
==== Extension Pack ====
* Remove old extension packsudo vboxmanage extpack uninstall "Oracle VM VirtualBox Extension Pack"
* Download current extension pack from [[https://www.virtualbox.org/wiki/Downloads|Download VirtualBox]] and installwget https://download.virtualbox.org/virtualbox/6.1.30/Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack
sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack
==== Run VM ====
* vboxmanage startvm "" --type headless
==== Hold back upgrade ====
* sudo apt-mark hold virtualbox-6.1
* sudo apt-mark unhold virtualbox-6.1
==== Links ====
* [[http://underpop.online.fr/v/virtualbox/vboxmanage-extpack-virtualbox.html.gz|VBoxManage extpack]]
* [[https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/vboxmanage-extpack.html|Oracle VirtualBox Extension Pack]]
* [[https://linoxide.com/exclude-specific-package-apt-get-upgrade/|How to Exclude Specific Package from apt-get Upgrade]]