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是第一個啓動的進程,它可能需要一些時間來接管顯示。所以在這段時間內不應該顯示其他消息。空白屏幕是好的。
我該怎麼辦?
psplash工作是什麼樣子? – CameronNemo