[已解决] Waydroid 因为 /dev/dri/ 设备顺序变动而无法启动

我的设备为 Intel i5-12500H 核显 + NVIDIA RTX 3050 Mobile,桌面环境为 KDE。
安装了 mesanvidia-open-dkms

目前遇到一个随机性问题:开机进入桌面环境后 Waydroid 有时能正常启动,有时会崩溃无限重启

经过探索,我找到了一个可能的原因

Waydroid 正常运行时 /var/lib/waydroid/waydroid.prop 配置显示

gralloc.gbm.device=/dev/dri/renderD128

ls -l /dev/dri/ 输出:

drwxr-xr-x  2 root root        120  7月11日 13:47 by-path/
crw-rw----+ 1 root video  226,   0  7月11日 13:47 card0
crw-rw----+ 1 root video  226,   1  7月11日 13:47 card1
crwxrwxrwx  1 root render 226, 128  7月11日 13:47 renderD128
crwxrwxrwx  1 root render 226, 129  7月11日 13:47 renderD129

查看对应

cat /sys/dev/char/226:128/device/uevent | grep DRIVER
# 输出:DRIVER=i915
cat /sys/dev/char/226:129/device/uevent | grep DRIVER
# 输出:DRIVER=nvidia

电脑重启后,有时候 renderD128renderD129 会发生互换

cat /sys/dev/char/226:128/device/uevent | grep DRIVER
# 输出:DRIVER=nvidia
cat /sys/dev/char/226:129/device/uevent | grep DRIVER
# 输出:DRIVER=i915

此时 Waydroid 会无法正常启动,无限重启。

不知道我的分析是否正确。有没有什么解决办法?

去找找有没有这个设备文件的比较固定的软链接。

硬盘、显卡、网卡、温度计等等这些东西有多个的时候编号顺序是靠不住的,经常变化。

解决方法是使用 /dev/dri/by-path/ 目录里的基于 pci 地址的持久化路径

解决了,我使用了 /dev/dri/by-path/ 目录里的基于 pci 地址的持久化路径

修改了 waydroid_base.prop

-gralloc.gbm.device=/dev/dri/renderD128
+gralloc.gbm.device=/dev/dri/by-path/pci-0000:00:02.0-render

修改了 lxc/waydroid/config_nodes

-lxc.mount.entry = /dev/dri/renderD128 dev/dri/renderD128 none bind,create=file,optional 0 0
+lxc.mount.entry = /dev/dri/by-path/pci-0000:00:02.0-render dev/dri/renderD128 none bind,create=file,optional 0 0