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

树莓派4启动时先显示开屏画面再启动Qt应用的配置问题

根因说明

  • 配置console=tty1时,树莓派桌面默认运行在tty7,桌面加载完成后系统会自动从tty1切换到tty7,运行在tty1的fbi开屏画面会被直接切换掉,无法持续显示。
  • 配置console=tty3时,系统不会自动切换到桌面所在的tty7,fbi进程会持续占用/dev/fb0帧缓冲,导致X桌面及Qt应用的画面无法输出到屏幕。

可行方案

1. 保留cmdline.txt的tty3配置

沿用你现有console=tty3的参数配置,确保早期启动日志全部输出到tty3,不会抢占显示通路,保证开屏画面最早启动。

2. 修改开屏画面服务配置

将开屏服务调整为后台常驻模式,同时配置终止逻辑,服务文件示例如下:

[Unit]
Description=Splash Screen Service
DefaultDependencies=no
After=local-fs.target
Before=graphical.target

[Service]
Type=forking
ExecStart=/usr/bin/fbi -d /dev/fb0 --once --noverbose -a /opt/splashscreen.jpg &
RemainAfterExit=yes
ExecStop=/usr/bin/killall fbi
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty3

[Install]
WantedBy=sysinit.target

注意:如果系统提示没有killall命令,先执行sudo apt install psmisc安装依赖。

3. 修改Qt应用服务配置

调整服务依赖与启动前逻辑,确保开屏画面在Qt启动前才关闭,同时主动切换到桌面所在的tty,服务文件示例如下:

[Unit]
Description=My Qt App Service
After=graphical.target splash-screen.service
Wants=splash-screen.service

[Service]
Type=simple
User=pi
Environment=DISPLAY=:0
WorkingDirectory=/home/pi
# 启动前停止开屏服务、清空帧缓冲、切换到桌面所在的tty7
ExecStartPre=/bin/systemctl stop splash-screen.service
ExecStartPre=/bin/dd if=/dev/zero of=/dev/fb0
ExecStartPre=/bin/chvt 7
ExecStart=/home/pi/myqtApp

[Install]
WantedBy=multi-user.target graphical.target

注意:请将上述配置中的splash-screen.service替换为你实际的开屏服务文件名。

4. 可选优化

如果Qt应用启动过程中出现短暂黑屏,可以将dd清空帧缓冲的逻辑移到Qt应用内部,等Qt窗口初始化完成后再清空帧缓冲,实现开屏画面到应用界面的无缝切换。


内容的提问来源于stack exchange,提问作者FS93

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:00:01