1. Ставим Astra Linux в обычном варианте без выбора каких-либо доп.флагов (затирание, киоск, ALD и проч.) и без графики.
2. Заводим пользователя-администратора. Все действия будет совершать от его лица. При входе в консоли всегда выбираем Integrity level: 0
3. Меняем пароль root:
sudo passwd root
4. Мандатный контроль целостности не отключаем
5. Отключаем NetworkManager и создаем сетевой мост для поддержки сети в виртуальных машинах:
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
Правим файл /etc/network/interfaces (в примере только 1 сетевая карта - eth0) и создаем сетевой мост (к примеру, с ip-адресом 192.168.12.110 из подсети 192.168.12.0/24, где шлюз по умолчанию и DNS - роутер выхода вовне - 192.168.12.1)
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.12.110
netmask 255.255.255.0
gateway 192.168.12.1
dns-nameservers 192.168.12.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
8. Перезагружаемся
9. Ставим пакеты поддержки KVM:
sudo apt install libvirt-daemon-system libvirt0 qemu-kvm bridge-utils virt*
10. Добавляем нашего пользователя-администратора в группы поддержки kvm:
sudo usermod -a -G libvirt-admin,libvirt-qemu,libvirt,disk,kvm,astra-admin,astra-console <username>
11. По умолчанию виртуальные машины создаются в /var/lib/libvirt/images, поэтому размечаем пространство в формате QCOW2 (можно и в RAW, но он более «сырой», ага) для файл-образа вирт.машины нужного объема (в пример, 20 Гигабайт):
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/win81.img 20G
12. Правим конфигурацию /etc/libvirt/qemu.conf для корректной работы qemu при запросах к livbirtd:
user = "libvirt-qemu"
user = "+0"
user = "100"
group = "libvirt"
13. Создаем виртуальную машину (для примера Windows, для Linux будут иные параметр os-type и кое-что еще):
virt-install --connect qemu:///system -n win8 -r 2048 --cdrom "/mnt/Win81_64.iso" --arch=x86_64 --vcpus 2 --os-type windows --network=bridge:br0,model=e1000 --hvm --accelerate --graphics vnc,password=password,listen=0.0.0.0,port=5903 --disk "/var/lib/libvirt/images/win8.img",size=20,bus=sata,format=qcow2,cache=none
Если команда как бы подвисла, завершаем ее сочетанием Ctrl+C.
Проверяем командой sudo netstat -tpl, что *:5903 порт прослушивается - виртуальная машина создана и готова к работе.
13. Подключаемся к виртуальной машине через любой VNC-viewer на ip-адрес нашего сетевого моста, порт 5903. Вводим пароль (в примере конфигурации, password). Инсталлируем гостевую ОС из выбранного ранее источника (/mnt/Win81_64.iso). Дожидаемся окончания установки
14. Средствами самой виртуальной машины смотрим MAC-адрес. При необходимости, выставляем статический IP либо на самой виртуальной машине, либо на DHCP-сервере, обслуживающем сеть нашего гипервизора.
15. Проверяем устойчивость работы виртуальной машины и радуемся жизни! конфигурационный файл виртуальной машины лежит по адресу: /etc/libvirt/qemu/ИМЯ_МАШИНЫ.xml (редактируется тем же sudo nano).
16. Добавляем виртуальную машину в автозапуск:
sudo ln -s /etc/libvirt/qemu/win8.xml /etc/libvirt/qemu/autostart/win8.xml
17. Для корректной работы команд выключения/перезагрузки/т.п. вирт.машин необходимо скопировать шаблон файла polkit:
sudo cp /usr/share/polkit-1/rules.d/60-libvirt.rules /etc/polkit-1/rules.d/60-libvirt.rules
Завершить работу вирт.машины - аналогично с system reboot - перезагрузка вирт.машины:
virsh -c qemu:///system shutdown ИМЯ_МАШИНЫ
Редактировать конфигурацию, чтобы не лазить в файл постоянно
virsh -c qemu://system edit ИМЯ_МАШИНЫ
Для создания иного размещения вирт.машин (не /var/lib/libvirt) необходимо создать новый пул и дать на него соответствующие метки МКЦ:
sudo mkdir -p /vrt/pool1
sudo chmod 750 /vrt/pool1
sudo chown -R root:libvirt /vrt
Дополнительно необходимо отредактировать файл /usr/sbin/pdp-init-libvirt по примеру
wiki astralinux
Управление пулом размещения образов вирт.машин проводится средствами virsh (в примере каталог пула - /vrt/pool1):
virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
virsh -c qemu:///system pool-build pool1
virsh -c qemu:///system pool-start pool1
virsh -c qemu:///system pool-autostart pool1
virsh -c qemu:///system pool-list --all