我的系统信息:
OS: Manjaro Linux x86_64 Host: 81Q5 Legion Y7000P 2019 Kernel: 6.0.1-zen2-1-zen DE: GNOME 42.5 WM: Mutter WM Theme: Adwaita CPU: Intel i7-9750H (12) @ 4.500GHz GPU: NVIDIA GeForce GTX 1660 Ti Mobile GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] Memory: 15875MiB
redroid 支持 N 卡 3d 加速, 但不是开箱即用的, 必须将 redroid 部署在 qemu 虚拟机内, 通过 VirtIO-GPU 实现. 如果同时具有 Intel 集显和 NVIDIA 独显, 直接在主机运行应该调用的是集显, 而不是独显, 也不是软件渲染.
这种方案相比透传(pass-through)的好处是无需将显卡驱动卸掉, 主机完全可以在使用独显的同时将独显共享给虚拟机. 缺点是损耗大, glmark2 跑分仅有宿主机 1/5. 所以某种意义上这么做还不如直接用集显跑.
步骤:
1. 安装 ubuntu 22.04.1 虚拟机
# 创建虚拟磁盘
qemu-img create -f qcow2 ubuntu.qcow2 20G
# 启动 live 环境, 然后正常装系统
qemu-system-x86_64 -boot d -cdrom "ubuntu-22.04.1-desktop-amd64.iso" -enable-kvm -smp 4 -device intel-hda -device hda-duplex -device virtio-vga-gl -net nic -net user,hostfwd=tcp::5555-:5555 -cpu host -m 4096 -display sdl,gl=on -hda ubuntu.qcow2 网上写的教程写的参数大都是过时的, 比如 -soundhw 已经被废弃, -device virtio-vga,virgl=on 应替换为 -device virtio-vga-gl. 具体参数什么意思去 https://wiki.archlinux.org/title/QEMU 查找, 不要看中文的, 很久没更新了.
2. 启动虚拟机
qemu-system-x86_64 c -enable-kvm -smp 4 -device intel-hda -device hda-duplex -device virtio-vga-gl -net nic -net user,hostfwd=tcp::5555-:5555 -cpu host -m 4096 -display sdl,gl=on -hda ubuntu.qcow2 3. 按照 redroid README.md 操作启动容器
# install required kernel modules
apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux
sudo docker run -itd --privileged \
-v ~/data11-nb:/data \
-p 5555:5555 \
redroid/redroid:11.0.0-latest \
androidboot.redroid_gpu_mode=host \" class= 4. 在宿主机连接至 redroid. 用 qtscrspy 或 scrcpy 都行
adb connect localhost:5555
qtscrcpy
打开 https://cznull.github.io/vsbm, 可以看到 3d 加速已经生效(这么大的卡顿是 peek 录制 gif 的问题, 并且它左右是反的)

检查一下显卡占用:
