https://bugbd.ru/articles/2023/07/31/virsh-manual/
KVM - модуль ядра Linux, обеспечивающий доступ к аппаратной виртуализации на базе intl-vt или amd-svm
QEMU - эмулятор аппаратного обеспечения различных платформ, позволяющий запускать различные гостевые ОС
он может работать отдельно, но может использовать kvm для запуска виртуальных машин с более высокой скоростью;
он так же может выполнять эмуляцию процессов на уровне пользователя, позволяя приложениям, скомпилированным на одной архитектуре, работать на другой
libvirt - свободная реализация API, демон и набор инструментов для управления виртуализацией. Позволяет управлять гипервизорами kvm, qemu и другими
VMM (Virtual Machine Manager) - приложение для управления виртуальными машинами https://virt-manager.org/download.html
Cockpit — это инструмент для администрирования нескольких операционных систем GNU / Linux через удобный веб-интерфейс. Утилита создана для управления серверами, однако с ее помощью очень удобно реализуется управление виртуальными машинами KVM. Cockpit. помимо основного функционала, предлагает широкий выбор различных плагинов. Благодаря чему инструмент можно гибко настраивать в соответствии с Вашими потребностями.
Snapshots — это копии виртуальной машины, в которых сохранены текущее состояние системы, запущенные процессы и службы, работающие приложения. В результате Вы всегда можете развернуть виртуальную машину именно в том состоянии, которое нужно для работы.
Узнаём есть ли поддержка виртуализации просессором:
Код: Выделить всё
egrep '(vmx|svm)' /proc/cpuinfo
либо установив пакет cpu-checker командой kvm-ok
Если используется процессор intel, то в выводе будет присутствовать vmx. Если вывода у команды не было, возможно камень не поддерживает вируализацию, либо она отключена в биосе
Устанавливаем Cockpit и плагин для работы с виртуальными машинами
Код: Выделить всё
sudo apt install cockpit-machines cockpit cockpit-bridge cockpit-networkmanager cockpit-system cockpit-tests cockpit-ws fonts-b612 cockpit-pcp
Далее Вы увидите окно авторизации в панели управления Cockpit. Чтобы войти — вводим логин и пароль учетной записи от той системы, на которой установлена нужная Вам виртуальная машина.
Важно: выполнения ряда операций по администрированию виртуальной машины потребует прав суперпользователя — потому можно сразу авторизоваться как пользователь root.
Также с помощью вкладки «Другие параметры» Вы можете сделать доступным поле «Подключиться к». С его помощью при необходимости можно получить доступ к управлению другими серверами, а не только к тому, на котором непосредственно установлен Cockpit.
В панели управления Cockpit предусмотрена возможность делать снимки системы — snapshots.
Устанавливаем Virtual Machine Manager и пакет, необходимый для аутентификации при подключении утилиты к удаленному серверу
Код: Выделить всё
sudo apt install virt-manager ssh-askpass
Установить и настроить selinuxvirt-manager
Графический интерфейс настройки selinux:
Установка и настройка qemu-kvmsepolicy gui
Код: Выделить всё
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-daemon-system libvirt-clients virtinst qemu-system qemu-user-static cloud-init guestfsd libguestfs-tools
Не забудьте включить selinux после завершения настройки
Добавить для пользователя в /etc/sudoers
Код: Выделить всё
/usr/bin/sed , /usr/bin/apt , /usr/bin/dnf
Код: Выделить всё
sudo apt install selinux-utils policycoreutils-gui policycoreutils policycoreutils-python-utils selinux-policy-default
sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
sudo apt install dnf
sudo dnf install qemu-kvm libvirt virt-install openssh-askpass OVMF boost-random boost-program-options boost-regex
systemctl enable libvirtd && systemctl start libvirtd
lsmod | grep kvm
sudo usermod -a -G libvirt имяпользователя
https://wiki.debian.org/KVM
Код: Выделить всё
virt-install --virt-type kvm --name bullseye-amd64 \
--location http://deb.debian.org/debian/dists/bullseye/main/installer-amd64/ \
--os-variant debian11 \
--disk size=10 --memory 1000 \
--graphics none \
--console pty,target_type=serial \
--extra-args "console=ttyS0"
https://computingforgeeks.com/how-to-install-kvm-virtualization-on-debian/
Качаем образ для виртуалки:
http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240.iso
Код: Выделить всё
wget -P /var/lib/libvirt/images https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.217-2/virtio-win-0.1.217.iso
Код: Выделить всё
sudo apt install virt-manager
Код: Выделить всё
#!/bin/bash
sudo qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/vm-rdp.qcow2 100G
sudo qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/tmp.qcow2 2M
sudo virt-install \
--connect=qemu:///system \
--virt-type=kvm \
--accelerate \
--hvm \
--vcpus=16 \
--ram=16384 \
--video=cirrus \
--graphics vnc,listen=0.0.0.0,password=cisco \
--os-type=windows \
--os-variant=win2k22 \
--boot hd,cdrom,menu=on \
--disk device=cdrom,perms=ro,format=raw,path=/var/lib/libvirt/images/ru-ru_windows_server_2022_updated_may2022_x64_dvd_202336d4.iso \
--disk device=disk,bus=sata,cache=none,format=qcow2,path=/var/lib/libvirt/images/vm-rdp.qcow2 \
--disk device=disk,bus=virtio,cache=none,format=qcow2,path=/var/lib/libvirt/images/tmp.qcow2 \
--name=vm-rdp
Код: Выделить всё
#!/bin/bash
sudo qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/vm-hosting.qcow2 25G
sudo virt-install \
--connect=qemu:///system \
--virt-type=kvm \
--accelerate \
--hvm \
--vcpus=8 \
--ram=8192 \
--video=cirrus \
--graphics vnc,listen=0.0.0.0,password=cisco \
--noautoconsole \
--network network=default,model=virtio \
--os-variant=ubuntu22.04 \
--boot hd,cdrom,menu=on \
--disk device=cdrom,perms=ro,format=raw,patch=/var/lib/libvirt/images/ubuntu-22.04-live-server-amd64.iso \
--disk device=disk,bus=virtio,cache=none,format=qcow2,patch=/var/lib/libvirt/images/vm-hosting.qcow2 \
--name=vm-hosting
Вывести список запущенных виртуальных хостов:
Код: Выделить всё
sudo virsh list
Код: Выделить всё
sudo virsh list --all
Код: Выделить всё
sudo virsh reboot $ИМЯ_ВИРТУАЛЬНОЙ МАШИНЫ
Код: Выделить всё
sudo virsh destroy $ИМЯ_ВИРТУАЛЬНОЙ МАШИНЫ
Код: Выделить всё
sudo virsh start $ИМЯ_ВИРТУАЛЬНОЙ МАШИНЫ
Код: Выделить всё
sudo virsh shutdown $ИМЯ_ВИРТУАЛЬНОЙ МАШИНЫ
Код: Выделить всё
sudo virsh autostart $ИМЯ_ВИРТУАЛЬНОЙ МАШИНЫ
Код: Выделить всё
virsh --help
Код: Выделить всё
virsh attach-disk vm-rdp /var/lib/libvirt/images/virtio-win-0/1/127.iso sda --type cdrom --mode readonly
Как настроить сетевой мост:
https://blog.sedicomm.com/2018/03/14/kak-nastroit-setevoj-most-na-debian-linux/
На вкладке Виртуальных Машин выбрать Директ аттачмент на реальный сетевой интерфйсТекстовая утилита для настройки мостов
nmtui
Без мостов будет редиректиться на локальную сетку этого интерфейса
Сброс пароля на виртуалку:
https://wiki.debian.org/ThomasChung/CloudImage
To install virt-customize:Загрузите образ nocloud. Просто введите root для входа в систему, и вы автоматически войдете в систему без пароля.
Я бы не рекомендовал использовать cloud-init. Это займет время, чтобы войти в систему, и, возможно, это не то, что вы ищете.
Код: Выделить всё
$ sudo apt update
$ sudo apt install libguestfs-tools
$ which virt-customize
/usr/bin/virt-customize
Код: Выделить всё
$ virt-customize --add "PathToTagetDisk" \
--root-password password:MyRootPW \
--hostname "VMName" \
--firstboot-command 'ssh-keygen -A && systemctl restart sshd'
Код: Выделить всё
$ virt-customize --add "PathToTagetDisk" \
--root-password password:MyRootPW \
--append-line "/etc/ssh/sshd_config.d/rootlogin.conf":"PermitRootLogin yes" \
--append-line "/etc/ssh/sshd_config.d/rootlogin.conf":"PasswordAuthentication yes" \
--hostname "VMName" \
--firstboot-command 'ssh-keygen -A && systemctl restart sshd'
https://techviewleo.com/run-debian-11-bullseye-on-kvm-using-qcow2-cloud-image/
Дополнительно:
virt-p2v - physical-to-virtual machine converter
virt-what - определение контекста (виртуальный или реальный компьютер)
https://github.com/libvirt