You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH在Yocto Linux启动Weston失败,报“no drm device found”错误求助

解决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系列)已经开启。
  • 修复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 $OPTARGS
      
      启动前可以先设置环境变量指定座位:export 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:45:34