Clear Linux* OS on KVM

This page explains how to run Clear Linux* OS in a virtualized environment using KVM.

Install QEMU-KVM

  1. 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.

  2. Log in and open a terminal emulator.

  3. Install QEMU*-KVM on the host machine. Below are some example distros.

    • On Clear Linux OS:

      sudo swupd bundle-add kvm-host
      
    • On Ubuntu* 18.04 LTS Desktop:

      sudo apt-get install qemu-kvm
      
    • On Mint* 19.1 “Cinnamon” Desktop:

      sudo apt-get install qemu-kvm
      
    • On Fedora* 30 Workstation:

      sudo dnf install qemu-kvm
      

Download and launch the virtual machine

  1. Download the latest pre-built Clear Linux OS KVM image file from the image directory. Look for clear-<version>-kvm.img.xz. You can also use this command:

    curl -O https://cdn.download.clearlinux.org/image/$(curl https://cdn.download.clearlinux.org/image/latest-images | grep '[0-9]'-kvm'\.')
    
  2. Uncompress the downloaded image:

    unxz -v clear-<version>-kvm.img.xz
    
  3. Download the 3 OVMF files (OVMF.fd, OVMF_CODE.fd, OVMF_VARS.fd) that provides UEFI support for virtual machines.

    curl -O https://cdn.download.clearlinux.org/image/OVMF.fd
    curl -O https://cdn.download.clearlinux.org/image/OVMF_CODE.fd
    curl -O https://cdn.download.clearlinux.org/image/OVMF_VARS.fd
    

    Note

    The default OVMF files from Clear Linux OS may not work for some distro version(s). You may get an ASSERT in the debug.log file when starting the VM. If that is the case, use the distro-specific-OVMF files instead. For example, the Clear Linux OS OVMF files work for Ubuntu 18.04 LTS, but not for Ubuntu 19.04 LTS. Installing and using the OVMF files for Ubuntu 19.04 LTS resolved the ASSERT issue.

  4. Download the start_qemu.sh script from the image directory. This script will launch the Clear Linux OS VM and provide console interaction within the same terminal emulator window.

    curl -O https://cdn.download.clearlinux.org/image/start_qemu.sh
    
  5. Make the script executable:

    chmod +x start_qemu.sh
    
  6. Start the Clear Linux OS KVM virtual machine:

    sudo ./start_qemu.sh clear-<version>-kvm.img
    
  7. Log in as root user and set a new password.

SSH access into the virtual machine

To interact with the Clear Linux OS VM through SSH instead of the console it was launched from, follow these steps.

  1. Configure SSH in the Clear Linux OS VM to allow root login:

    cat > /etc/ssh/sshd_config << EOF
      PermitRootLogin yes
      EOF
    
  2. Enable and start SSH server in the Clear Linux OS VM:

    systemctl enable sshd
    systemctl start sshd
    
  3. Determine the IP address of the host on which you will launch the VM. Substitute <ip-addr-of-kvm-host> in the next step with this information.

    ip a
    
  4. SSH into the Clear Linux OS VM using the default port of 10022:

    ssh -p 10022 root@<ip-addr-of-kvm-host>
    

Optional: Add the GNOME Display Manager (GDM)

To add GDM to the Clear Linux OS VM, follow these steps:

  1. Shutdown the active Clear Linux OS VM.

    poweroff
    
  2. Install the Spice viewer on the local host or remote system. Below are some example distros.

    • On Clear Linux:

      sudo swupd bundle-add virt-viewer
      
    • On Ubuntu* 18.04 LTS Desktop:

      sudo apt-get install virt-viewer
      
    • On Mint* 19.1 “Cinnamon” Desktop:

      sudo apt-get install virt-viewer
      
    • On Fedora* 30 Workstation:

      sudo dnf install virt-viewer
      
  3. Modify the start_qemu.sh script to increase memory (-m), add graphics driver (-vga), and add Spice (-spice, -usb, and -device) support.

    qemu-system-x86_64 \
        -enable-kvm \
        ${UEFI_BIOS} \
        -smp sockets=1,cpus=4,cores=2 -cpu host \
        -m 4096 \
        -vga qxl \
        -nographic \
        -spice port=5924,disable-ticketing \
        -usb \
        -device usb-tablet,bus=usb-bus.0 \
        -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 $@
    
  4. Due to changes in the start_qemu.sh script from the previous step, using the same OVMF files will result in the VM not booting properly and you end up in the the UEFI shell. The easiest way to avoid this is to delete the OVMF files and restore the originals before relaunching the VM.

  5. Increase the size of the VM by 10GB to accommodate the GDM installation:

    qemu-img resize -f raw clear-<version>-kvm.img +10G
    
  6. Relaunch the Clear Linux OS VM:

    sudo ./start_qemu.sh clear-<version>-kvm.img
    
  7. Determine the IP address of the host on which you will launch the VM. Substitute <ip-addr-of-kvm-host> in the next step with this information.

    ip a
    
  8. From the local host or remote system, open a new terminal emulator window and connect into the Clear Linux OS VM using the Spice viewer:

    remote-viewer spice://<ip-address-of-kvm-host>:5924
    
  9. Log in as root user into the Clear Linux OS VM.

  10. Follow these steps from Increase virtual disk size of an image to resize the partition of the virtual disk of the VM.

  11. Add GDM to the Clear Linux OS VM:

    swupd bundle-add desktop-autostart
    
  12. Reboot the Clear Linux OS VM to start GDM:

    reboot
    
  13. Go through the GDM out-of-box experience (OOBE).

  14. The default aspect ratio of the GDM GUI for the Clear Linux OS VM is 4:3. To change it, use GDM’s Devices > Displays setting tool (located at the top-right corner).