微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从初始化脚本启动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

解决方法

我不确定100%知道psplash和systemd,但可能是因为您需要在环境中使用类似的东西来控制psplash:

导出TMPDIR = / mnt / .psplash

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。