从初始化脚本启动Psplash时,psplash-write不起作用PID = 1

问题描述

我将psplash集成到了NVIDIA Jetson Nano的自定义Yocto层中。我想从第一个初始化脚本(PID = 1)运行psplash。原因是要涵盖systemd加载单元和服务文件所花费的时间。我已经在Linux内核参数中添加了init=/bin/newinit.sh。这是/bin/newinit.sh的内容,它将代替我的/sbin/init

#!/bin/sh
/usr/bin/psplash &
/bin/psplashanimator.sh &
exec /sbin/init

这是/bin/psplashanimator.sh

的内容
#!/bin/sh
/bin/sleep 0.1 && /usr/bin/psplash-write "PROGRESS 50"

通过禁用systemd守护程序(psplash-start,psplash-systemd),确保其他任何进程均未调用psplash-write。但是,我无法使用这些脚本来更新进度栏。 Psplash可以很好地显示,但进度条上没有任何显示。 如果我将/bin/sleep 0.1 && /usr/bin/psplash-write "PROGRESS 50"移到/bin/newinit.sh之前的exec中,则效果很好;但它会阻止初始化脚本的主要执行。

总而言之,如果我在自定义的初始化脚本中启动psplash,则psplash-write仅在调用exec之前起作用。我不知道为什么会这样,如何解决。

如果有什么简单的解决方案或理由不能解决问题,请多多关照。

注意1::请注意,使用psplash-systemd.service启动psplash时,使用系统服务(psplash-start.service)更新psplash的常规方法可以正常工作,我会获得进度条更新。>

注意2: Psplash使用帧缓冲驱动程序和FIFO。

注意3:相关源文件:psplash.c psplash-write.c

注意4::当前的systemd执行(让我看看是否缺少运行psplash之前必须准备的东西)

Systemd Execution

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)