Install a virtual machine manager in Hyperbola GNU/Linux-libre

Your host may be Hyperbola GNU/Linux-libre x86_64 architecture, for example, but with enough memory and processing power you could run Trisquel and Dragora at the same time, on the same machine.

What is a virtual machine?

A virtual machine is software that simulates a computer system and can execute programs as if it were a real computer. This software was originally defined as "an efficient and isolated duplicate of a physical machine".

What programs allow me to run a virtual machine?

In totally free operating systems there is a program called qemu that allows us to virtualize.

Qemu works through the command line.

Enable virtualization

Check if your PC supports virtualization

$ LC_ALL=C lscpu | grep Virtualization

or run the command:

$ lsmod | grep kvm

If your computer supports virtualization, you should see the output as Virtualization: VT-x or Virtualization: AMD-V, otherwise your computer is not capable of virtualizing.

Qemu Installing

# pacman -Sy

# pacman -S qemu vde2 dnsmasq bridge-utils

# gpasswd -a <your-user> kvm

Enable kernel modules for virtualization

  • kvm_intel module (Intel processors)

    # modprobe kvm_intel
    
  • kvm_amd module (AMD processors)

    # modprobe kvm_amd
    

Enable nested virtualization in KVM

Nested virtualization allows you to run a virtual machine (VM) within another VM while still using host hardware acceleration.

Checking if nested virtualization is supported

For Intel processors, check the /sys/module/kvm_intel/parameters/nested file. For AMD processors, check the /sys/module/kvm_amd/parameters/nested. If you see 1 or Y, nested virtualization is supported; if you see 0 or N, nested virtualization is not supported.

For example:

$ cat /sys/module/kvm_intel/parameters/nested
Y

Enable nested virtualization for Intel processors:

  1. Turn off all running virtual machines and reload kvm_intel module:

    # modprobe -r kvm_intel
    
  2. Activate the nesting function

    # modprobe kvm_intel nested=1
    
  3. Nested virtualization is enabled until the host is restarted. To enable it permanently, add the following line to /etc/modprobe.d/kvm.conf file:

    # nano -w /etc/modprobe.d/kvm.conf
    ----------------------------------
    options kvm_intel nested=1
    

Enable nested virtualization for AMD processors:

  1. Turn off all running virtual machines and reload kvm_amd module:

    # modprobe -r kvm_amd
    
  2. Activate the nesting function

    # modprobe kvm_amd nested=1
    
  3. Nested virtualization is enabled until the host is restarted. To enable it permanently, add the following line to /etc/modprobe.d/kvm.conf file:

    # nano -w /etc/modprobe.d/kvm.conf
    ----------------------------------
    options kvm_intel nested=1
    

Qemu usage

Make virtual disk to use Virtual Machine.

$ qemu-img create hyper.qcow2 10G

Simple usage

#!/bin/bash
qemu-system-x86_64 \
  -monitor stdio \
  --enable-kvm -m 512 \
  -cpu host -smp 4 \
  -cdrom /path/to/hyperbola-milky-way-v0.4-dual.iso \
  -drive file=/path/to/hyper.qcow2,if=virtio \
  -boot c -rtc base=localtime \
  -device virtio-keyboard-pci \
  -net nic -net user \
  -vga virtio

-cpu host -smp 4 to use 4 cpus with original CPU-host name

-net user is important to have internet access within your new system. -m 512 is the set virtual RAM size (megabytes), default is 128 MB, I chose 512

You can set -vga virtio -display sdl,gl=on for 3D emulation support

Also you can set -device intel-hda -device hda-duplex for audio support on intel audio-card.

For audio support check https://wiki.archlinux.org/title/QEMU#Audio

Qemu + VNC as server

#!/bin/bash
qemu-system-x86_64 \
  -monitor stdio \
  --enable-kvm -m 512 \
  -cpu host -smp 4 \
  -cdrom /path/to/hyperbola-milky-way-v0.4-dual.iso \
  -drive file=/path/to/hyper.qcow2,if=virtio \
  -boot c -rtc base=localtime \
  -device virtio-keyboard-pci \
  -net nic -net user \
  -vga virtio -display none \
  -vnc :0

One can add the -vnc :X option to have QEMU redirect the VGA display to the VNC session. Substitute X for the number of the display (0 will then listen on 5900, 1 on 5901, 2 on 5902, etc).

Remember: Ctrl + Alt + G to exit capture, Ctrl + Alt + F to fullscreen!

Warning: The default VNC server setup does not use any form of authentication. Any user can connect from any host. Maybe check: https://wiki.archlinux.org/title/QEMU#Basic_password_authentication

Qemu screenshots

Hyperbola in Qemu
Screenshot of Hyperbola GNU/Linux-libre in Qemu
Trisquel in Qemu
Screenshot of Trisquel GNU/Linux in Qemu

Modules with security issues

The vhost_net module has CVE-2018-3646 security issues which is L1TF and SMT CPU error with possible data leak. It's recommended to disable it as follows:

# modprobe -r vhost_net

If you are in Hyperbola GNU/Linux-libre this module comes disabled.

Post a comment on "Install a virtual machine manager in Hyperbola GNU/Linux-libre"

You can format your comment with Markdown. Avatar from Libravatar