问题描述
我将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之前必须准备的东西)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)