Qemu ВМ с родным разрешением в Wayland

Вопрос или проблема

Когда я запускаю виртуальную машину с SDL под Wayland, гость не получает родное разрешение дисплея, а вместо этого используется res/host_scale.

Например, ширина=2560 на хосте приведет к ширине виртуальной машины=1706 при коэффициенте масштабирования 1.5. Мне хотелось бы получить 2560 и внутри виртуальной машины.

/usr/bin/qemu-system-x86_64 \
...
    -vga none \
    -device virtio-vga-gl \
    -display sdl,gl=on \

Я пробовал установить GDK_SCALE=1, SDL_VIDEO_WAYLAND_SCALE_TO_DISPLAY={1|0} и указать разрешение как -device virtio-vga-gl,xres=2560,yres=1500.

Это происходит только с Wayland (Sway), под Xorg/i3 доступно полное разрешение дисплея.

Вы можете добиться родного разрешения хоста с помощью spice-vdagent

spice-vdagent необходимо установить как в гостевой, так и в хостовой системе.
Следующий шаг – запустить spice-vdagent в обеих системах в терминале, а затем перезагрузить гостевую систему, как только spice-vdagent вернется к приглашению.

При следующем запуске гостевой системы снова запустите spice-vdagent, и он должен предоставить вам разрешение хоста без применения масштабирования.

Обратите внимание, что я тестировал это с virt-manager, но если вы не используете virt-manager, возможно, потребуется указать некоторые параметры, касающиеся разрешения экрана.

Ответ или решение

Для достижения нативного разрешения на виртуальной машине (ВМ) под управлением Wayland, вы можете использовать spice-vdagent, который позволяет динамически управлять разрешением экрана в гостевой системе, основываясь на разрешении хоста.

  1. Установка spice-vdagent: Убедитесь, что spice-vdagent установлен как на хосте, так и на гостевой системе. В зависимости от вашей дистрибуции Linux, вы можете установить его через пакетный менеджер. Например, для Debian/Ubuntu вы можете выполнить:

    sudo apt install spice-vdagent
  2. Запуск spice-vdagent: После установки, запустите spice-vdagent в терминале как на хосте, так и в гостевой системе:

    spice-vdagent

    Если spice-vdagent уже запущен, лучше перезапустить его, чтобы убедиться, что он работает с актуальными настройками.

  3. Перезагрузка гостевой системы: После запуска spice-vdagent в гостевой системе вам нужно перезагрузить её. Это позволит агенту получить актуальные данные о разрешении и размере дисплея.

  4. Настройка QEMU: При запуске вашей виртуальной машины, убедитесь, что вы используете правильную конфигурацию для QEMU. Например:

    /usr/bin/qemu-system-x86_64 \
       -vga none \
       -device virtio-vga \
       -display spice-app \
       ...

    Использование virtio-vga в сочетании с spice позволит возможным настройкам разрешения работать более эффективно.

  5. Проверка переменных окружения: Убедитесь, что переменные окружения для настройки масштабирования правильно определены. Вы можете использовать:

    export GDK_SCALE=1
    export SDL_VIDEO_WAYLAND_SCALE_TO_DISPLAY=0

    Это гарантирует, что масштабирование преобразуется в нативное разрешение.

  6. Тестирование: После всех настроек и перезагрузки, запустите гостевую систему и проверьте её разрешение. Если всё настроено правильно, разрешение в гостевой системе должно соответствовать нативному разрешению хоста.

Следуя этой пошаговой инструкции, вы сможете настроить виртуальную машину в QEMU под управлением Wayland так, чтобы она использовала нативное разрешение вашего дисплея без каких-либо масштабирований.

Оцените материал
Добавить комментарий

Капча загружается...