我正在定制在基于arm的嵌入式系统上运行的ubuntu。我没有使用plymouth(splash)隐藏启动消息,而是直接使用名为psplash的自定义可执行文件写入帧缓冲区。现在我需要确保此启动过程在任何其他进程之前启动。该系统有许多不可避免的新贵工作。但是我尝试,我总是在启动接管屏幕之前从upstart作业获得一些消息。 这是我的psplash工作:
description "Userspace bootsplash utility"
start on runlevel [2345]
expect fork
kill timeout 60
script
# exec /sbin/psplash
sleep 2
end script
pre-start script
echo "PSPLASH"
/sbin/psplash
sleep 2
end script
为了确保它提前启动,我在“预启动”中启动了该过程,并确保在延迟后开始其他工作,我在“脚本”中添加了睡眠。
根据this帖子,我创建了另一个服务,强制其他作业仅在此psplash作业之后启动。但这也不是最优的,因为我需要添加许多系统级别的工作,这些工作会陷入这种情况。
#service-psplash-wait.conf
start on (starting alsa-restore
or starting anacron
or starting apport
or starting atd
or starting auto-serial-console
or starting avahi-daemon
or starting binfmt-support
or starting bluetooth
or starting console-setup
or starting console
or starting container-detect
or starting control-alt-delete
or starting cron
or starting cups
or starting dbus
or starting dmesg
)
# We know that we have more than one job that needs to wait for service-a and
# will make use of this service, so we need to instantiate.
instance $JOB
# Needed to make starting the job successful despite being killed
normal exit 2
task
script
status psplash | grep -q "start/running" && exit 0
start psplash || true
# Waiting forever is ok.. upstart will kill this job when
# the service-a we tried to start above either starts or stops
while sleep 3600 ; do :; done
end script
即使psplash是第一个启动的进程,也可能需要一些时间来接管显示。因此在此期间不应显示任何其他消息。空白屏幕没问题。
我该怎么办?
答案 0 :(得分:0)
这很难:]
以下内容应该在引导的早期开始工作。这样就够了吗? (这应该没有等待工作)。
description "Userspace bootsplash utility"
start on virtual-filesystems
# adjust expect stanza as needed
exec /sbin/psplash