Вопрос или проблема
Когда я запускаю виртуальную машину с 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
, который позволяет динамически управлять разрешением экрана в гостевой системе, основываясь на разрешении хоста.
-
Установка spice-vdagent: Убедитесь, что
spice-vdagent
установлен как на хосте, так и на гостевой системе. В зависимости от вашей дистрибуции Linux, вы можете установить его через пакетный менеджер. Например, для Debian/Ubuntu вы можете выполнить:sudo apt install spice-vdagent
-
Запуск spice-vdagent: После установки, запустите
spice-vdagent
в терминале как на хосте, так и в гостевой системе:spice-vdagent
Если
spice-vdagent
уже запущен, лучше перезапустить его, чтобы убедиться, что он работает с актуальными настройками. -
Перезагрузка гостевой системы: После запуска
spice-vdagent
в гостевой системе вам нужно перезагрузить её. Это позволит агенту получить актуальные данные о разрешении и размере дисплея. -
Настройка QEMU: При запуске вашей виртуальной машины, убедитесь, что вы используете правильную конфигурацию для QEMU. Например:
/usr/bin/qemu-system-x86_64 \ -vga none \ -device virtio-vga \ -display spice-app \ ...
Использование
virtio-vga
в сочетании сspice
позволит возможным настройкам разрешения работать более эффективно. -
Проверка переменных окружения: Убедитесь, что переменные окружения для настройки масштабирования правильно определены. Вы можете использовать:
export GDK_SCALE=1 export SDL_VIDEO_WAYLAND_SCALE_TO_DISPLAY=0
Это гарантирует, что масштабирование преобразуется в нативное разрешение.
-
Тестирование: После всех настроек и перезагрузки, запустите гостевую систему и проверьте её разрешение. Если всё настроено правильно, разрешение в гостевой системе должно соответствовать нативному разрешению хоста.
Следуя этой пошаговой инструкции, вы сможете настроить виртуальную машину в QEMU под управлением Wayland так, чтобы она использовала нативное разрешение вашего дисплея без каких-либо масштабирований.