Virtualbox

Fra pc-aid wiki

1 Installation of VirtualBox in Debian 12

1.2 Install virtualbox 7.1 i Debian 12 bookworm

Put the repo, signature and install in one command, by copying and pasting into konsole:

sudo touch /etc/apt/sources.list.d/virtualbox.list && echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bookworm contrib' | sudo tee /etc/apt/sources.list.d/virtualbox.list && wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg --dearmor && sudo apt update && sudo apt install virtualbox-7.1

virtualbox 7.1 is now installed in Debian 12

2 Install VBoxGuestAdditions in virtualbox

VBoxGuestAdditions provides the following features:

  • Host/Guest clock synchronization
  • Seamless window support
  • Shared folders
  • Shared clipboard
  • Mouse pointer improvements
  • Improved video support

2.1 On the Host Machine: Download VBoxGuestAdditions.iso

Dowload for the version you are running of Virtualbox. In the example we use VirtualBox7.1 as we installed in section 1. Therefore we download VBoxGuestAdditions_7.1.0.iso with wget to a folder on the host machine, for example:

wget https://download.virtualbox.org/virtualbox/7.1.0/VBoxGuestAdditions_7.1.0.iso

2.2 Start up the relevant virtual machine (Guest) running Debian 12

2.2.1 Mount the iso inside the virtual Debian install

Press Devices -> Optical Drives -> Then press Chose a disk file and scroll to where you downloaded the iso file to, press the iso file

You will get a pop-up message in the bottom right corner:

Press «Mount and open»

2.2.2 Open Terminal

Right-click in the window that pops up and press on "Open terminal here"

2.2.3 Install kernel header and build tools

Install kernel header for running kernel and build tools and press enter -> enter the password and press enter again:

sudo apt install linux-headers-amd64 build-essential -y
2.2.4 Install the VBoxLinuxAdditions

Run the following command to install the virtualbox add-on and press enter:

sudo sh VBoxLinuxAdditions.run

Enter the password of the user and press enter again if prompted.

2.2.5 Log out and in or restart the virtual machine to complete installation

Log out and log in again or:

restart the virtual machine by pressing;

Start button at bottom left -> Exit ->  

Press OK or wait 30 seconds

2.2.6 Enable biderectional clipboard

Once the virtual machine has restarted, in virtualbox press: Devices -> Shared Clipboard -> Bidrectional

Note: With Bidirectional, you can copy to and from the virtual machine 🙂

3 Get virtual machine accessable from the internet

3.1 Set up network bridge

In virtualbox, tap the virtual machine in the list on the that you want to reach from the internet

Press the yellow gear symbol Settings (top right)

In the left menu, select Network. In Adapter 1 -> go to Attached to: and select "Bridged Adapter" In Name: it should say the same network interface as the host computer.

Then press OK

Now start the virtual machine by pressing -> start

3.2 Find the local IP address of the virtual machine

Find the ip address of the virtual machine so we can expose it to the internet

type in Konsole:

ip-a

Extract of what you get by running the command above:

enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:53:e3:d1 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.135/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3

Highlighted is the local ip address of the virtual machine.

Note: Your IP address may be different

3.3 Open the port in the router

In your router, visit the place where you open up ports. Where you do this on your router varies from manufacturer to manufacturer. In this example the web service we want to access is on port 8080

On an ASUS GT-AC2900 router, it is done this way:

Select WAN in the left menu -> Virtual Server / Port Forwarding -> scroll down and select "Add profile". Fill in the following:

Protocol: TCP

External Port: 8080

Internal IP Address: 192.168.0.135

NOTE. The IP address of the virtual machine may be different for you.

Press OK

Go to https://whatismyip.com to find your external IP address

Open a browser on the host, or on another computer and go to: http://<your external ip>:8080/path/to/service

Troubleshooting (FIXME fix formatting)

After cloning a virtual disk, the memory buffer can become so full that you get the following error message: Out of memory condition when allocating memory with low physical backing. (VERR_NO_LOW_MEMORY).

malinux@debian:~$ free -h            total used free shared buff/cache available. Go: 31Gi 9.3Gi 880Mi 415Mi 21Gi 21Gi Växl.:          15Gi       256Ki        15Gi To solve this: Either restart the machine or run this command on the host machine: sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches" source: https://bbs.archlinux.org/viewtopic.php?id=298056 https://unix.stackexchange.com/questions/109496/echo-3-proc-sys-vm-drop-caches-permission-denied-as-root

malinux@debian:~$ free -h

total used free shared buff/cache available. Memory: 31Gi 9.4Gi 20Gi 421Mi 2.3Gi 21Gi Växl.:          15Gi       256Ki        15Gi

Virtualbox can't enable the AMD-V extension

Error message:

VirtualBox can't enable the AMD-V extension. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_SVM_IN_USE).

Solution 1 temporary solution stops working after reboot:

open konsole and remove the module from the running kernel:

sudo rmmod kvm_amd

Solution 2 permanet disable kvm_amd module works after reboot

edit /etc/default/grub

pico /etc/default/grub

find this line:

GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"

add kvm.enable_virt_at_load=0 so the line looks like this:

GRUB_CMDLINE_LINUX_DEFAULT="splash quiet kvm.enable_virt_at_load=0"

Note: keep other kernel parameters you might have added for whatever reason :)

save the text file and exit pico, then run the following command:

sudo update-grub