KVM : Create Virtual Machine
2020/06/02 |
Install GuestOS and create Virtual Machine. This example shows to install Ubuntu 20.04.
|
|
[1] | Install GuestOS on text mode via network, it's OK on Console or remote connection with Putty and so on. Furthermore, Virtual Machine's images are placed at [/var/lib/libvirt/images] by default as a Storage Pool, but this example shows to create and use a new Storage Pool. |
# create a storage pool root@dlp:~# mkdir -p /var/kvm/images root@dlp:~# virt-install \
--name ubuntu2004 \
--ram 4096 \ --disk path=/var/kvm/images/ubuntu2004.img,size=20 \ --vcpus 2 \ --os-type linux \ --os-variant ubuntu20.04 \ --network bridge=br0 \ --graphics none \ --console pty,target_type=serial \ --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/' \ --extra-args 'console=ttyS0,115200n8 serial'
Starting install... # installation starts # after finishing installation, back to KVM host and shutdown the guest like follows root@dlp:~# virsh shutdown ubuntu2004 Domain template is being shutdown # mount guest's disk and enable a service like follows root@dlp:~# guestmount -d ubuntu2004 -i /mnt root@dlp:~# ln -s /mnt/lib/systemd/system/getty@.service /mnt/etc/systemd/system/getty.target.wants/getty@ttyS0.service root@dlp:~# umount /mnt
# start guest again, if it's possible to connect to the guest's console, it's OK all root@dlp:~# virsh start ubuntu2004 --console Ubuntu 20.04 LTS ubuntu ttyS0 ubuntu login: |
The example of options above means like follows. There are many options for others, make sure with [man virt-install].
--name
specify the name of Virtual Machine
--ram
specify the amount of memories of Virtual Machine
--disk path=xxx ,size=xxx
[path=] specify the location of disks of Virtual Machine (default is [/var/lib/libvirt/images])
--vcpus[size=] specify the amount of disks of Virtual Machine
specify the virtual CPUs
--os-type
specify the type of GuestOS
--os-variant
specify the kind of GuestOS
--networkpossible to show the list of OS with follows # osinfo-query os
specify network types of Virtual Machine
--graphics
specify the kind of graphics (if set [none], it means nographics)
--console
specify the console type
--location
specify the location of installation source where from
--extra-args
specify parameters that is set in kernel
|
[2] | Move to GuestOS to HostOS with Ctrl + ] key. Move to HostOS to GuestOS with a command 'virsh console (name of virtual machine)'. |
focal@ubuntu:~$ # Ctrl + ] key root@dlp:~# # Host's console # move to Guest root@dlp:~# virsh console ubuntu2004 Connected to domain template Escape character is ^] # Enter focal@ubuntu:~$ # Guest's console |
[3] | It's easy to create another VM to copy from current VM with a command below.
|
# on Host's console root@dlp:~# virt-clone --original ubuntu2004 --name ubuntu2004_org --file /var/kvm/images/ubuntu2004_org.img Allocating 'ubuntu2004_org.img' | 20 GB 00:09 Clone 'ubuntu2004_org' created successfully. # disk image root@dlp:~# ll /var/kvm/images/ubuntu2004_org.img -rw------- 1 root root 3040804864 Jun 2 19:38 /var/kvm/images/ubuntu2004_org.img # configuration file root@dlp:~# ll /etc/libvirt/qemu/ubuntu2004_org.xml -rw------- 1 root root 5061 Jun 2 19:38 /etc/libvirt/qemu/ubuntu2004_org.xml |