通过SSH在Yocto Linux启动Weston失败,报“no drm device found”错误求助
从你提供的日志和环境信息来看,Weston启动失败的核心是找不到DRM设备,同时还伴随systemd-logind无法正常获取会话座位的问题。咱们一步步来排查解决:
先确认DRM设备是否真的存在
首先检查系统里有没有DRM设备节点,运行命令:ls /dev/dri如果输出里没有
card0、renderD128这类设备,说明你的内核没有加载DRM驱动,或者设备树配置有误:- 检查DRM相关内核模块是否加载:
lsmod | grep drm,如果没有任何输出,手动尝试加载模块:modprobe drm - 还要确认Yocto构建时内核配置是否开启了DRM支持,需要确保
CONFIG_DRM=y,以及对应你Salvator-X板子的Renesas DRM驱动选项(比如CONFIG_DRM_RENESAS系列)已经开启。
- 检查DRM相关内核模块是否加载:
修复systemd-logind的会话问题
日志里提到logind: failed to get session seat,这说明systemd-logind服务可能没运行:- 先检查服务状态:
systemctl status systemd-logind - 如果服务未启动,手动启动并设置开机自启:
systemctl start systemd-logind systemctl enable systemd-logind - 要是不想依赖logind,也可以直接跳过
weston-launch,直接用weston命令启动(确保当前在合适的TTY下,比如tty1):
启动前可以先设置环境变量指定座位:weston --idle-time=0 --config=/etc/xdg/weston/weston-drm-hdmi.ini $OPTARGSexport XDG_SEAT=seat0
- 先检查服务状态:
检查Weston DRM配置文件
打开你的Weston配置文件/etc/xdg/weston/weston-drm-hdmi.ini,确认[drm]段是否指定了正确的DRM设备路径:[drm] card=/dev/dri/card0如果原来的配置里没有这一行,加上它再尝试启动。
排查设备权限问题
虽然你用root用户启动,但还是要确认DRM设备的权限是否正确:ls -l /dev/dri正常情况下设备权限应该是
crw-rw----,所属用户组为video。如果权限不对,临时修改权限试试:chmod 666 /dev/dri/card0要是想永久生效,可以添加udev规则(比如在
/etc/udev/rules.d/99-drm.rules里写入SUBSYSTEM=="drm", MODE="0666")。用其他后端验证问题
既然你的/usr/lib/weston里有fbdev-backend.so,可以尝试用fbdev后端启动Weston,验证是否是DRM驱动的问题:weston --backend=fbdev-backend.so --idle-time=0 $OPTARGS如果这个命令能正常启动Weston,说明问题确实出在DRM驱动或配置上,需要重点排查内核层面的DRM支持。
内容的提问来源于stack exchange,提问作者cryptolearn

