upstart在任何其他进程之前启动启动过程

时间:2014-06-25 13:19:14

标签: ubuntu upstart splash

我正在定制在基于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是第一个启动的进程,也可能需要一些时间来接管显示。因此在此期间不应显示任何其他消息。空白屏幕没问题。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

这很难:]

以下内容应该在引导的早期开始工作。这样就够了吗? (这应该没有等待工作)。

description "Userspace bootsplash utility"

start on virtual-filesystems

# adjust expect stanza as needed
exec /sbin/psplash