系统环境BusyBox init无 systemd无/etc/rc*.d目录通过/etc/inittab控制启动。目标开机自动启动 WestonWayland 合成器并运行 Qt 应用程序。 前提条件开发板已能手动正常启动 Weston 和 Qt 程序如通过命令行执行。Qt 程序路径/opt/ui/src/apps/qts_demo_qml根据实际情况修改。已有配置文件/etc/xdg/weston/weston.ini。 配置步骤共 5 步步骤 1禁用 Weston 的自动启动功能避免冲突Weston 配置文件中的[autolaunch]段可能导致程序被重复启动需要禁用。bashvi /etc/xdg/weston/weston.ini找到[autolaunch]段将每行前面加#注释掉例如text#[autolaunch] #path/opt/ui/src/apps/qts_demo_qml #path/opt/ui/src/apps/start.sh保存退出按Esc输入:wq回车。步骤 2创建/etc/rc.local启动脚本此脚本将被系统在启动时调用负责启动 Weston 和应用程序。bashvi /etc/rc.local写入以下完整内容注意环境变量顺序和延迟时间bash#!/bin/sh # 启动网络服务后台执行避免阻塞 ( sleep 10 /etc/init.d/S40network restart /tmp/rc_local_network.log 21 ) # --- 启动 Weston 和 Qt 程序 --- # 设置 Weston 所需的环境变量必须提前 export XDG_RUNTIME_DIR/run/user/0 export WAYLAND_DISPLAYwayland-0 # 确保运行时目录存在且权限正确 mkdir -p /run/user/0 chmod 0700 /run/user/0 # 启动 Weston后台运行 weston --backenddrm-backend.so # 等待 Weston 完全初始化创建 socket sleep 5 # 设置 Qt 程序所需的其他环境变量 export QT_QPA_PLATFORMwayland export LD_LIBRARY_PATH/usr/lib:$LD_LIBRARY_PATH export QML_IMPORT_PATH/opt/ui/src/apps:$QML_IMPORT_PATH # 进入程序目录并启动后台运行 cd /opt/ui/src/apps ./qts_demo_qml exit 0说明如果您的程序不需要网络重启可删除( sleep 10 ... ) 这段但保留不影响。赋予执行权限bashchmod x /etc/rc.local步骤 3配置/etc/inittab使系统启动时执行/etc/rc.localBusyBox init 读取/etc/inittab来决定启动行为。bashvi /etc/inittab在文件中找到类似::sysinit:/etc/init.d/rcS的行如果有可以在它之后添加如果没有直接在文件末尾添加一行text::sysinit:/etc/rc.local注意::sysinit表示在系统初始化时执行一次适合启动服务。确保该行在respawn行如 getty之前以免阻塞后续登录。保存退出。步骤 4添加调试日志便于验证是否执行可选但推荐在/etc/rc.local开头插入调试语句以便重启后确认脚本是否被调用。bashvi /etc/rc.local在#!/bin/sh后添加一行textecho rc.local executed at $(date) /tmp/rc_local_debug.log保存退出。步骤 5重启并验证bashreboot等待约 15 秒后屏幕应出现灰色桌面然后自动启动您的 Qt 程序。登录开发板串口或 SSH检查调试日志bashcat /tmp/rc_local_debug.log如果显示类似rc.local executed at ...说明脚本已被执行。如果文件不存在说明/etc/inittab未生效请检查语法行末不能有空格。 故障排查指南现象检查方法开机后仍只显示 logo无任何反应检查/tmp/rc_local_debug.log是否存在。不存在 → 系统未执行/etc/rc.local检查/etc/inittab语法。Weston 未启动查看/tmp/weston.log如果存在或手动执行weston --backenddrm-backend.so观察错误。Qt 程序未启动在/etc/rc.local中将./qts_demo_qml 改为./qts_demo_qml /tmp/qt_app.log 21 重启后查看/tmp/qt_app.log。程序启动后黑屏检查环境变量是否完整如QML_IMPORT_PATH是否包含自定义模块路径。屏幕方向不对检查/etc/xdg/weston/weston.ini中的[output]配置例如transformrotate-90。网络重启日志查看/tmp/rc_local_network.log。 备份与恢复建议将以下文件备份到外部存储/etc/rc.local/etc/inittab/etc/xdg/weston/weston.ini重烧系统后只需恢复这些文件并确保权限chmod x /etc/rc.local即可。 注意事项环境变量顺序XDG_RUNTIME_DIR和WAYLAND_DISPLAY必须在启动 Weston 之前设置否则 Weston 无法创建 socket。延迟时间sleep 5确保 Weston 完全初始化如果程序启动过早会出现Failed to create wl_display错误可根据实际情况调整。程序路径请根据您的实际部署位置修改/opt/ui/src/apps/qts_demo_qml。后台运行所有启动命令都加避免阻塞后续启动或登录。权限确保/etc/rc.local和 Qt 程序都有可执行权限。