Shorty

Поделиться текстом

Простой сервис для сокращения URL и обмена текстом.

Ваш текст:

Для твоей Debian 13 VM можно провести эксперимент, сохранив существующий диск, UEFI-переменные и настройки KVM. Но есть важное ограничение: virgl_test_server_android сам по себе не ускоряет QEMU. Он предназначен для клиентов протокола VirGL, а QEMU обычно использует virglrenderer через собственный графический бэкенд.
Поэтому сначала проверим возможности установленного QEMU и запустим VirGL на Android. Только после этого имеет смысл менять параметры VM. Текущую команду пока не трогай.





Нашёл важную деталь: графическая сборка QEMU в официальном репозитории Termux собирается с --enable-opengl и --enable-virglrenderer. Значит, возможно, твой установленный QEMU уже поддерживает виртуальный 3D-GPU и пересобирать его не потребуется.

GitHub
+1




Но есть два разных механизма: virtio-gpu-gl работает внутри QEMU, а virgl_test_server_android принимает отдельные подключения Mesa virpipe. Для твоей VM сначала проверим первый механизм; второй можно испытать отдельно, но его обычная схема рассчитана на Linux-контейнеры, разделяющие сокет с Termux, а не на изолированную KVM-машину.

QEMU documentation
+1











Ещё одно ограничение: простая переадресация Unix-сокета virgl_test_server_android через TCP или SSH не гарантирует работу внутри VM. Современный протокол VTEST может передавать файловые дескрипторы общей памяти через SCM_RIGHTS, а обычный сетевой туннель их не переносит. Поэтому не будем строить основную инструкцию на таком туннеле.

Git at Google
+1




Ниже — последовательность проверки штатного Termux QEMU с VirGL. Она не требует изменений ядра и не затрагивает установленный Debian; для пробного запуска создадим отдельный QCOW2-слой поверх твоего диска.






1. Проверь QEMU в Termux
Выполни в Termux, не останавливая Debian:
qemu-system-aarch64 --version

qemu-system-aarch64 -device help | grep -E \
'virtio-gpu-gl|virtio-vga-gl'

qemu-system-aarch64 -display help

dpkg -S "$(command -v qemu-system-aarch64)"


Для следующего этапа нужны virtio-gpu-gl-pci и графический бэкенд egl-headless.
Если обе возможности присутствуют, переходи к пункту 3. Если отсутствуют, пока не переустанавливай QEMU: графическая сборка из X11-репозитория Termux предусматривает VirGL, но замена установленного пакета может также изменить версию QEMU.

GitHub
+1




2. Установка Android VirGL-сервера
Это отдельный эксперимент для проверки virglrenderer-android. Он не требуется для запуска QEMU из пункта 3.
pkg install x11-repo
pkg install virglrenderer-android

command -v virgl_test_server_android


Запусти сервер:
virgl_test_server_android


Оставь его работающим в этой сессии. В другой сессии Termux проверь сокет:
ls -la "$TMPDIR" | grep virgl


При отсутствии подключённого клиента сервер может просто ожидать соединения. Это ещё не подтверждение аппаратного ускорения. Штатная схема с Mesa virpipe и таким сокетом используется в Linux-окружениях, разделяющих временный каталог с Termux.

GitHub
+1




3. Подготовь отдельный запуск Debian 13 с VirGL
Сначала штатно выключи Debian через GNOME или sudo systemctl poweroff и дождись завершения старого процесса QEMU. Не открывай один QCOW2 одновременно в двух VM.
В Termux создай экспериментальный диск и отдельное хранилище UEFI. Исходные файлы останутся неизменными:
VM="/sdcard/QEMU/lvm"

test -f "$VM/debian13.qcow2" || exit 1
test -f "$VM/edk2-vars-debian13.fd" || exit 1

if [ ! -f "$VM/debian13-virgl-test.qcow2" ]; then
qemu-img create -f qcow2 -F qcow2 \
-b "$VM/debian13.qcow2" \
"$VM/debian13-virgl-test.qcow2"
fi

if [ ! -f "$VM/edk2-vars-debian13-virgl.fd" ]; then
cp "$VM/edk2-vars-debian13.fd" \
"$VM/edk2-vars-debian13-virgl.fd"
fi


Новый QCOW2 будет хранить только изменения экспериментальной VM. Его исходным диском останется debian13.qcow2; поэтому не удаляй и не перемещай оригинал, пока используешь экспериментальный слой.
4. Запусти VM с виртуальным 3D-GPU
Это твоя исходная команда с четырьмя изменениями: virtio-gpu-gl-pci, egl-headless, отдельные UEFI/диск и отдельные сетевые порты.
VM="/sdcard/QEMU/lvm"

exec qemu-system-aarch64 \
-machine virt,accel=kvm,gic-version=3 \
-cpu host \
-smp 4 \
-m 4096 \
-device virtio-gpu-gl-pci \
-display egl-headless \
-vnc 127.0.0.1:1 \
-device qemu-xhci \
-device usb-tablet \
-device usb-kbd \
-drive if=pflash,format=raw,readonly=on,file="$VM/edk2-aarch64-code.fd" \
-drive if=pflash,format=raw,file="$VM/edk2-vars-debian13-virgl.fd" \
-drive if=none,format=qcow2,id=os,file="$VM/debian13-virgl-test.qcow2" \
-device virtio-blk-pci,drive=os,bootindex=1 \
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:2223-:22 \
-device virtio-net-pci,netdev=net0 \
-serial stdio \
-D "$VM/qemu-debug-debian13-virgl.log" \
-d guest_errors,unimp,cpu_reset \
-monitor tcp:127.0.0.1:4446,server,nowait \
-qmp tcp:127.0.0.1:4447,server=on,wait=off \
-no-reboot


Подключаться к экспериментальному графическому сеансу нужно через VNC по адресу 127.0.0.1:5901.
QEMU поддерживает сочетание virtio-gpu-gl и egl-headless с VNC. Однако egl-headless требует работоспособного EGL/DRM-бэкенда хоста, а его совместимость с Samsung SGPU пока не подтверждена.

QEMU documentation
+1




Если QEMU выдаст ошибку создания EGL-контекста, не пытайся устранять её изменением ядра: сначала потребуется проверить пользовательский графический стек Termux. В частности, обычная библиотека virglrenderer, к которой подключён QEMU, не становится автоматически Android-библиотекой только после установки virglrenderer-android.
5. Проверь ускорение внутри Debian
Если машина загрузилась и GNOME открылся, установи инструменты:
sudo apt update
sudo apt install -y mesa-utils libgl1-mesa-dri


В терминале GNOME:
glxinfo -B


Затем:
glxgears -info


Проверь строку OpenGL renderer string.
- llvmpipe — графика выполняется программно.
- virgl — Debian использует виртуальный 3D-GPU.
- virgl, но с указанием программного рендерера хоста — виртуальный 3D работает, но реального ускорения Xclipse ещё нет.
Последнее различие принципиально: наличие VirGL в госте само по себе не доказывает, что Android выполняет команды аппаратно.
Начни с команд из пункта 1. Их вывод покажет, можем ли мы использовать уже установленный QEMU или сначала нужно подготовить другую графическую сборку.