この問題について調査し、ChatGPTにも連絡しましたが、OpenRCを使用してアルパインディストリビューションのフルブート時間を測定する方法はないようです。
以下を使用してdmesg
最後のメッセージを表示できます。[ 0.689037] Run /sbin/init as init process
しかし、initプロセスを「完了」するのにどれくらいの時間がかかるかを知りたいです。私のユースケースは開始時間に敏感であるので尋ねることです。
カーネルブートを含む1秒以内にsystemdを使用してubuntu 22.04を起動できます。 systemdではsystemd-analyze
非常に便利です。だから私はopenRCに等しい(または方法)があることを願っています。
答え1
まず、アルパインからミリ秒の精度を得るためにcoreutilsをインストールします。
apk add coreutils
次に、2つのサービスを作成します。
/etc/init.d/boot-startから
#!/sbin/openrc-run
description="Boot Start Service"
start() {
ebegin "Starting boot-start"
date +%s%3N > /var/boot-time.log
eend $?
}
そして/etc/init.d/boot-endで
#!/sbin/openrc-run
description="Boot End Service"
depend() {
after *
}
start() {
ebegin "Starting boot-end"
boot_start_time=$(cat /var/boot-time.log)
boot_end_time=$(date +%s%3N)
duration=$((boot_start_time - boot_end_time))
echo "Boot started at: $boot_start_time" > /var/boot-time.log
echo "Boot ended at: $boot_end_time" >> /var/boot-time.log
echo "Total duration: $duration milliseconds" >> /var/boot-time.log
eend $?
}
その後、起動時に最初のタスクを開始し、最後に2番目のタスクを開始します。
chmod +x /etc/init.d/boot-start
rc-update add boot-start boot
chmod +x /etc/init.d/boot-end
rc-update add boot-end default
結果は次のとおりです。
Boot started at: 1686811355808
Boot ended at: 1686811357194
Total duration: -1386 milliseconds