.. _kvm:
Run Clear Linux as a KVM guest OS
#################################
This section explains how to run |CLOSIA| in a virtualized environment using
:abbr:`KVM (Kernel-based Virtual Machine)`.
Install QEMU-KVM
================
#. Enable the `Intel® Virtualization Technology`_ (Intel® VT) and the
`Intel®Virtualization Technology for Directed I/O`_ (Intel® VT-d) in the
host machine’s BIOS.
#. Log in, open a terminal emulator, and get root privilege on the host
machine:
.. code-block:: console
$ sudo -s
#. Install `QEMU*-KVM` on the host machine. Below are some example distros.
* On |CL|:
.. code-block:: console
# swupd bundle-add desktop-autostart kvm-host
* On Ubuntu\* 16.04 LTS Desktop:
.. code-block:: console
# apt-get install qemu-kvm
* On Mint\* 18.1 “Serena” Desktop:
.. code-block:: console
# apt-get install qemu-kvm
* On Fedora\* 25 Workstation:
.. code-block:: console
# dnf install qemu-kvm
Download and launch the virtual machine
=======================================
#. Download the latest pre-built |CL| KVM image file from
the `image `_ directory. Look for
``clear--kvm.img.xz``. You can also use this command:
.. code-block:: bash
curl -O https://download.clearlinux.org/image/clear-$(curl https://download.clearlinux.org/latest)-kvm.img.xz
#. Uncompress the downloaded image:
.. code-block:: console
# unxz clear--kvm.img.xz
#. Download the `OVMF file`_ file that provides UEFI support for
virtual machines from the `image `_
directory.
#. Download the sample `QEMU-KVM launcher`_ script from the
`image `_ directory. This script
will launch the |CL| VM and provide console interaction within the same
terminal emulator window.
#. Make the script executable:
.. code-block:: console
# chmod +x start_qemu.sh
#. Start the |CL| KVM virtual machine:
.. code-block:: console
# ./start_qemu.sh clear--kvm.img
#. Log in as ``root`` user and set a new password.
SSH access into the virtual machine
===================================
To interact with the |CL| VM through SSH instead of the console it was
launched from, follow these steps.
#. Enable SSH in the |CL| VM:
.. code-block:: console
# cat > /etc/ssh/sshd_config << EOF
PermitRootLogin yes
EOF
#. From the host, SSH into the |CL| VM. The port number ``10022`` is defined
in the ``start_qemu.sh`` script.
.. code-block:: console
# ssh -p 10022 root@localhost
Add the GNOME Display Manager (GDM)
===================================
To add :abbr:`GDM (GNOME Display Manager)` to the |CL| VM, follow these steps:
#. Shutdown the active |CL| VM.
.. code-block:: console
# shutdown now
#. Install a VNC viewer on the host machine. Below are some example distros.
* On Clear Linux:
.. code-block:: console
# swupd bundle-add desktop-apps-extras
* On Ubuntu\* 16.04 LTS Desktop:
.. code-block:: console
# apt-get install vncviewer
* On Mint\* 18.1 “Serena” Desktop:
.. code-block:: console
# apt-get install vncviewer
* On Fedora\* 25 Workstation:
.. code-block:: console
# dnf install tigervnc
#. Modify the :file:`start_qemu.sh` script to increase memory (``-m``), add
graphics driver (``-vga``), and add VNC (``-vnc``, ``-usb``, and
``-device``) support.
.. code-block:: console
qemu-system-x86_64 \
-enable-kvm \
-bios OVMF.fd \
-smp sockets=1,cpus=4,cores=2 -cpu host \
-m 4096 \
-vga qxl \
-vnc :0 -nographic \
-usb \
-device usb-tablet \
-drive file="$IMAGE",if=virtio,aio=threads,format=raw \
-netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
-device virtio-net-pci,netdev=mynet0 \
-debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
#. Due to changes in the :file:`start_qemu.sh` script from the previous step,
the UEFI :file:`NvVars`
information for the previously-booted |CL| VM will need to be reset.
#. Relaunch the |CL| VM. The UEFI shell will appear.
.. code-block:: console
# ./start_qemu.sh clear--kvm.img
#. At the UEFI shell, delete the :file:`NvVars` file:
.. code-block:: console
Shell> del FS0:\NvVars
#. Exit out of the UEFI shell:
.. code-block:: console
Shell> reset -s
#. Relaunch the |CL| VM:
.. code-block:: console
# ./start_qemu.sh clear--kvm.img
#. From the host machine, open a new terminal emulator window and VNC into the
|CL| VM:
.. code-block:: console
# vncviewer 0.0.0.0
#. Log in as ``root`` user into the |CL| VM.
#. Add GDM to the |CL| VM:
.. code-block:: console
# swupd bundle-add desktop-autostart
#. Reboot the |CL| VM to enable GDM:
.. code-block:: console
# reboot
#. Go through GDM's out-of-box experience (OOBE).
#. The default aspect ratio of the GDM GUI for the |CL| VM is 4:3. To change
it, use GDM's ``Displays`` setting tool (located at the top-right corner).
.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html
.. _Intel®Virtualization Technology for Directed I/O: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices
.. _QEMU-KVM launcher: https://download.clearlinux.org/image/start_qemu.sh
.. _OVMF file: https://download.clearlinux.org/image/OVMF.fd