树莓派4B运行Weston提示‘no drm device found’问题求助
解决树莓派4B上Yocto core-image-full-cmdline启动Weston失败的问题
1. 检查内核模块与DRM设备
Weston报错no drm device found,核心原因是DRM相关内核模块未加载或设备节点未生成:
- 查看已加载的内核模块:
lsmod | grep -E 'vc4|v3d|drm' - 若模块未加载,手动加载测试:
modprobe vc4 modprobe v3d modprobe drm_kms_helper modprobe drm - 检查DRM设备节点是否存在:
正常应显示ls -l /dev/dri/card0、renderD128等设备。若不存在,需通过bitbake -c menuconfig linux-raspberrypi修改内核配置,确保启用:CONFIG_DRM_VC4=y或=mCONFIG_DRM_V3D=y或=mCONFIG_DRM_KMS_HELPER=y
2. 补充缺失的依赖包
core-image-full-cmdline是轻量命令行镜像,缺少core-image-weston默认包含的Wayland/DRM相关依赖,在/conf/local.conf中添加:
# 补充DRM、GBM、Mesa图形库 IMAGE_INSTALL:append = " libdrm libgbm mesa-megadriver" # 补充Weston依赖的会话管理组件 IMAGE_INSTALL:append = " seatd" # 确保udev自动生成设备节点 IMAGE_INSTALL:append = " udev"
重新构建镜像并烧写到SD卡。
3. 调整Weston启动配置
- 编辑
/etc/xdg/weston/weston.ini,在[core]段手动指定DRM设备:[core] backend=drm-backend.so drm-device=/dev/dri/card0 require-input=false - 或启动Weston时直接指定设备:
weston --drm-device=/dev/dri/card0
4. 配置Weston与Qt应用自动启动
配置Weston自启动(systemd服务)
创建/etc/systemd/system/weston.service:
[Unit] Description=Weston Wayland Compositor After=systemd-user-sessions.target [Service] Type=simple ExecStart=/usr/bin/weston User=root Environment=XDG_RUNTIME_DIR=/run/user/0 Environment=WAYLAND_DISPLAY=wayland-0 [Install] WantedBy=multi-user.target
启用并启动服务:
systemctl enable weston.service systemctl start weston.service
配置Qt应用自动启动
方式1:通过Weston配置启动
编辑/etc/xdg/weston/weston.ini,添加启动项:
[launcher] path=/path/to/your/qt-application
方式2:通过systemd服务启动(依赖Weston)
创建/etc/systemd/system/qt-app.service:
[Unit] Description=Qt Wayland Application After=weston.service Requires=weston.service [Service] Type=simple Environment=WAYLAND_DISPLAY=wayland-0 Environment=QT_QPA_PLATFORM=wayland ExecStart=/path/to/your/qt-application User=root [Install] WantedBy=multi-user.target
启用服务:
systemctl enable qt-app.service
验证重启
重启树莓派后,检查Weston与Qt应用是否自动启动。若仍有问题,查看Weston日志排查:
journalctl -u weston.service
内容的提问来源于stack exchange,提问作者Ironside
相关产品推荐
相关产品推荐

