2014-06-25 297 views
1

我正在自定義運行在基於ARM的嵌入式系統上的ubuntu。我沒有使用普利茅斯(飛濺)來隱藏啓動信息,而是直接使用一個名爲psplash的自定義可執行文件寫入幀緩衝區。現在我需要確保此啓動進程在任何其他進程之前啓動。這個系統有許多不可避免的暴發性就業機會。不過我嘗試,在飛濺接管屏幕之前,我總是從暴發的工作中收到一些消息。 這是我的psplash工作:upstart在任何其他進程之前啓動啓動過程

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

psplash工作是什麼樣子? – CameronNemo

回答

0

這是相當困難的:]

下應該早些啓動開始你的工作。它足夠嗎? (這應該是沒有等待工作)。

description "Userspace bootsplash utility" 

start on virtual-filesystems 

# adjust expect stanza as needed 
exec /sbin/psplash