*Установка и настройка производились на Ubuntu 24.04
Проверка поддержки виртуализации системой
Установка пакета для клиентского ПО QEMU (для запуска виртуальных машин):
apt install qemu-system-x86
kvm-ok
Должны получить:INFO: /dev/kvm exists
KVM acceleration can be used
Если нет – Включаем Intel VT-x или AMD-V в BIOS/UEFI (в зависимости от процессора).
Создаём каталоги для хранения виртуальных жестких дисков (vhdd) и ISO-образов (iso).
mkdir -p /kvm/{vhdd,iso}
Устанавливаем необходимые пакеты:
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils
- qemu-kvm – поддержка KVM и запуск виртуальных машин с аппаратной виртуализацией
- libvirt-daemon-system – Служба управления виртуальными машинами (libvirtd)
- libvirt-clients – CLI-инструменты (virsh, virt-xml, и др.)
- virtinst – Утилиты создания VM (например, virt-install)
- bridge-utils – для настройки сетевых мостов
Создаём сетевой мост, чтобы виртуальная машина имела свой собственный IP-адрес и могла взаимодействовать с внешней сетью, а не работала через NAT.
Переходим в каталог /etc/netplan/ и редактируем yaml конфиг (у меня файл называется 50-cloud-init.yaml – этот файл может отличаться в зависимости от системы):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
bridges:
br0:
interfaces: [eth0]
addresses: [192.168.1.24/24]
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.2, 192.168.1.3]
parameters:
stp: false
forward-delay: 0
*В примере указан сетевой интерфейс eth0, он может отличаться – проверить можно командой ip a
Применяем настройки:
sudo netplan apply
Создаём виртуальную машину
virt-install -n VM1 \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=2 --cpu host --check-cpu \
--disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
--cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc_password \
--os-variant=ubuntu18.04 \
--boot cdrom,hd,menu=on \
--virt-type=kvm
После создания виртуальной машины к ней можно подключиться по VNC (например с помощью TightVNC Viewer)
С помощью команды virsh vncdisplay VM1 смотрим на каком порту работает VNC указанной виртуальной машины
Если вывод :0, значит VNC сервер работает на порту 5900. Если вывод :4, значит VNC сервер работает на порту 5904 (5900 + номер порта).