이 문제에 대해 조사하고 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
그런 다음 두 가지 서비스를 만듭니다.
/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 $?
}
그런 다음 부팅 시 첫 번째 작업을 시작하고 마지막으로 두 번째 작업을 시작합니다.
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