Подробный гайд: Настройка графики и нескольких мониторов в QEMU/KVM в Astra Linux

Полный гайд по настройке QEMU/KVM в Astra Linux для вывода графики на два монитора. Узнайте, как настроить SPICE и сделать проброс видеокарты через VFIO.

2026.08.04                  


Подробный гайд: Настройка графики и нескольких мониторов в QEMU/KVM в Astra LinuxПодробный гайд: Настройка графики и нескольких мониторов в QEMU/KVM в Astra Linux Настройка QEMU/KVM в Astra Linux (которая базируется на Debian) для работы с графикой и двумя мониторами — задача интересная.

Чтобы реализовать 2 монитора, у вас есть два принципиально разных пути:

  1. Виртуальная графика (SPICE/VirtIO) — если у вас одна видеокарта. Мониторы подключаются к хосту (Astra Linux), а виртуальная машина (ВМ) программно "раздает" экраны.
  2. Проброс видеокарты (GPU Passthrough / VFIO) — если у вас две видеокарты (встроенная и дискретная, или две дискретные). Вы отдаете физическую видеокарту виртуальной машине и подключаете 2 монитора напрямую к ней.

Шаг 1. Базовая установка QEMU/KVM в Astra Linux

Откройте терминал (fly-терминал) и выполните установку необходимых пакетов. В Astra Linux они берутся из репозиториев Debian/Astra.

sudo apt update
sudo apt install qemu-kvm qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virt-manager

Добавьте вашего пользователя в группы libvirt и kvm, чтобы управлять ВМ без root:

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

(После этого рекомендуется выйти из системы и зайти заново).


Запустите службу libvirt:

sudo systemctl enable libvirtd
sudo systemctl start libvirtd

Вариант А: Виртуальная графика (если видеокарта одна)

Этот метод использует протокол SPICE, который лучше всего работает с многомониторными конфигурациями в виртуальной среде.

1. Настройка ВМ через Virt-Manager

  1. Создайте новую ВМ или откройте свойства существующей в virt-manager.
  2. В разделе Дисплей (Display) выберите тип: Spice server.
  3. В разделе Видео (Video) выберите модель: QXL (для Windows-гостей) или VirtIO-GPU (для Linux-гостей).
  4. В свойствах QXL/VirtIO в некоторых версиях есть параметр Heads (Головки/Мониторы). Поставьте 2.

2. Если гостевая ОС — Windows:

Чтобы 2 монитора заработали, внутри Windows необходимо установить SPICE Guest Tools.

  1. В virt-manager добавьте ISO-образ spice-guest-tools (можно скачать с сайта SPICE).
  2. Внутри ВМ установите драйверы.
  3. В панели управления дисплеем Windows появится возможность расширить экраны.

3. Если гостевая ОС — Linux:

Обычно мониторы подхватываются автоматически. Если нет, внутри гостевого Linux откройте терминал и введите xrandr, чтобы настроить вывод на два виртуальных экрана.


Важно:

При использовании виртуальной графики вы будете использовать приложение virt-manager (или remote-viewer), окно которого можно растянуть на два ваших физических монитора хоста.


Вариант Б: Проброс физической видеокарты (GPU Passthrough) — Идеальный вариант

Если вам нужна максимальная производительность (для CAD, игр, 3D) и вы хотите физически воткнуть 2 монитора в видеокарту, вам нужен проброс (VFIO).

Требование:

Две видеокарты. Одна остается Astra Linux (для управления), вторая отдается ВМ.


Шаг 1. Включение IOMMU в BIOS

Зайдите в BIOS/UEFI вашего ПК и включите технологию виртуализации:

  • Для Intel: VT-d (или Intel Virtualization Technology for Directed I/O).
  • Для AMD: IOMMU (или AMD-Vi).

Шаг 2. Включение поддержки IOMMU в ядре Astra Linux

1. Откройте конфигурацию GRUB:

   sudo nano /etc/default/grub

2. Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте туда параметры IOMMU.

  • Для Intel: intel_iommu=on iommu=pt
  • Для AMD: amd_iommu=on iommu=pt

Пример:

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt"

3. Сохраните файл (Ctrl+O, Enter, Ctrl+X) и обновите GRUB:

   sudo update-grub

4. Перезагрузите ПК: sudo reboot.


Шаг 3. Привязка видеокарты к драйверу VFIO

Теперь нужно сказать системе, чтобы она не загружала обычный драйвер (Nvidia/AMD) для второй видеокарты, а использовала драйвер виртуализации vfio-pci.

1. Узнайте ID вашей видеокарты, которую хотите отдать ВМ:

   lspci -nn | grep -i vga
   # или для 3D контроллеров:
   lspci -nn | grep -i nvidia

Пример вывода:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060] [10de:1c03] (rev a1) Нам нужны коды в квадратных скобках: 10de:1c03 (где 10de — код Nvidia, 1c03 — код карты). Также захватите ID звукового контроллера видеокарты (Audio device), он обычно находится рядом.


2. Создайте файл конфигурации модуля VFIO:

   sudo nano /etc/modprobe.d/vfio.conf

3. Впишите туда вашу видеокарту (замените ID на свои) и отключите стандартный VGA-драйвер для неё:

   options vfio-pci ids=10de:1c03,10de:10f1 disable_vga=1

4. Обновите initramfs:

   sudo update-initramfs -u

5. Перезагрузите ПК: sudo reboot.


Шаг 4. Настройка ВМ для двух мониторов

  1. Откройте virt-manager, создайте ВМ.
  2. Перед запуском ВМ откройте её свойства -> Добавить устройство (Add Hardware).
  3. Выберите PCI Host Device.
  4. В списке найдите вашу видеокарту (по ID 01:00.0 или названию) и добавьте её. Добавьте также аудио-контроллер видеокарты, если нужен звук.
  5. Запустите ВМ.
  6. Физически подключите оба монитора в порты проброшенной видеокарты.
  7. Внутри гостевой ОС (Windows/Linux) установите обычные драйверы Nvidia/AMD. Система распознает оба монитора как полноценные физические дисплеи.

Важные нюансы для Astra Linux (Особенно Special Edition)

Astra Linux имеет встроенную систему безопасности PARSEC (мандатное управление доступом), которая может мешать работе виртуализации.

1. Уровни конфиденциальности (МКД):

Если вы используете Astra Linux Special Edition (Смоленск) с включенным мандатным контролем, запуск ВМ с пробросом устройств (VFIO) может блокироваться на высоких уровнях целостности:

  • Рекомендуется запускать графические ВМ на нулевом уровне конфиденциальности (в свойствах ярлыка или через fly-admin).
  • Убедитесь, что у вас есть права на чтение/запись в устройства /dev/kvm и /dev/vfio/vfio.
   ls -l /dev/kvm
   ls -l /dev/vfio/vfio

2. Проблема с модулем kvm_intel или kvm_amd:

Если Astra Linux не видит виртуализацию, проверьте:

   dmesg | grep -i kvm

Если модуль заблокирован, возможно, нужно настроить политики безопасности (pdpl) для доступа к /dev/kvm.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (5)(531)(30)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта