openRC를 사용하여 Alpine에서 부팅 시간(커널 + 초기화)을 어떻게 알 수 있나요?

openRC를 사용하여 Alpine에서 부팅 시간(커널 + 초기화)을 어떻게 알 수 있나요?

이 문제에 대해 조사하고 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

관련 정보