How to install headless Ubuntu using kvm and CLI
While trying to create a new VM using KVM I kind of found it more difficult than expected, so here is a short tutorial on how I finally made it :)
This tutorial shows how to create a VM using KVM from the command line. The VM will be running a minimal Ubuntu 18.04 installation without a desktop environment. The whole process can be performed through ssh, so there is no need for openning any windows.
Creating the VM
To create a vm as described above you can use the following command:
sudo virt-install --name=ubuntu-vm-18.04 --vcpus=2 --cpu=host --memory=1024,maxmemory=4096 --disk size=10 --os-variant=ubuntu18.04 -l "http://gr.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/" --network network:default --graphics none --extra-args='console=ttyS0,115200n8 serial'
The most important parameters for our mission are the
-l (short for
--location) and the
--extra-args is mandatory to make kvm show us the VM's prompt, and
unfortunately it is not compatible with
That said we can't use a local iso to create the VM, we need to do it using
Additionally in order to be able to access the VM you need to make sure to install the OpenSSH server.
Accessing the VM
After the installation the VM will restart and you will see an empty screen.
To exit that screen press
sudo virtsh list should show the new vm running.
Unfortunately though you won't be able to access the vm using
We can however access it through ssh. To find the ip address of the VM we can use:
sudo virsh net-dhcp-leases default
default here matches the network that we passed to
when creating the VM.
Now using the IP you should be able to login through to the machine through ssh.
virtsh console (Optional)
To enable access through the
virtsh console we need to edit
/etc/default/grub and append
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=ttyS0"
After that we need to update grub and restart the VM:
sudo update-grub sudo reboot
When the VM gets up again we can use
sudo virsh console ubuntu-vn-18.04 to
open the VM console.
Pressing enter will present the login prompt.
When done, after logging out we can use
CTRL-SHIFT-] to exit the console.
Note that the VM will keep running, to shut it down issue
sudo virsh shutdown
ubuntu-vm-18.04 and to start it up again issue
sudo virsh start