부팅 중 RaspberryPi 날짜 및 시간

부팅 중 RaspberryPi 날짜 및 시간

현재 RaspbianPI에서 시작하는 동안 Raspbian이 "현재" 날짜와 시간을 어디서 가져오는지 궁금합니다.

시스템에는 I2C를 통해 연결된 RTC 장치가 있습니다. 부팅 중에 시스템 서비스 장치가 RTC의 날짜/시간을 읽어 올바른 날짜/시간을 얻습니다.

또한 NTP 클라이언트가 구성됩니다.

패키지 fake-hwclock가 설치되었지만 systemd에서는 비활성화되어 있습니다.

Raspbian이 시작되면 /var/log/syslog날짜/시간이 포함된 로그 메시지가 생성됩니다 Nov 3 .... Roaima가 쓴 대로 예상했지만 Jan 1 1970그렇지 않았습니다...

샘플 메시지는 다음 위치에 있습니다./var/log/syslog

Nov  3 18:16:51 raspberrypi kernel: [    0.000000] Booting Linux on physical CPU 0xf00

systemd가 RTC 스크립트가 실행되는 위치에 도달하면(RTC 장치가 I2C를 통해 연결됨) 날짜와 시간을 올바르게 설정합니다.

Oct 19 13:45:50 raspberrypi systemd[1]: Time has been changed

그렇다면 질문은 이렇습니다. 그 이상한 날짜는 Nov 3어디에 저장되어 있나요 ? ! 파일 어딘가에 저장되어 있습니까? 커널에 하드코딩되어 있나요?

답변1

Raspberry Pi 시스템에는 배터리 지원 RTC가 없으므로 전원을 켜면 시계가 0(1970년 1월 1일 UTC 자정)에서 시작됩니다.

시작 시 대략적인 실시간 시간을 얻기 위해 외부 시간 소스에 액세스하기 전에 패키지는 fake-hwclock종료 시 저장된 값으로 시계를 설정하는 방법을 제공합니다. 인터넷에 연결된 컴퓨터에서 NTP는 장치가 부팅된 후 시계를 더 빠르고 정확하게 설정할 수 있습니다.

답변2

RTC가 포함된 RPi에서 동일한 경험을 했으며 Stretch로 업그레이드한 후 NTP를 실행하는 경우 가끔 올바른 날짜/시간을 사용하지 않습니다.

불행히도 2016년 11월 3일 17:16:45의 Stretch가 어디서 왔는지 말할 수 없지만 이제 어떤 상황에서 이런 일이 일어날지 알 것 같습니다.

좋은 상황과 "재부팅 후 잘못된 날짜/시간" 상황을 비교해 보면, WLAN 연결이 가능할 때 11/3/2016 17:16:45가 올바른 시간(RTC 또는 NTP에서)으로 수정되지 않는 것 같습니다. RPi가 연결되어 있지만 어떤 이유로 인터넷에 액세스할 수 없습니다.

나는 Linux 분야에 익숙하지 않기 때문에 이것을 증명하는 방법을 모릅니다. 나는 그 질문에 대답하지 않았다는 것을 알고 있지만 그것이 유용할 것이라고 생각했습니다.

답변3

저는 Raspberry Pi 4 장치에서 Ubuntu 22.04를 실행하고 있으며 비슷한 동작을 경험하고 있습니다(비록 제 경우에는 미리 정의된 날짜가 다르지만). 내가 찾은 내용은 다음과 같습니다.

  1. 앞서 언급했듯이 fake-hwclock이는 RTC 데이터의 최초의 확실한 소스입니다.

  2. fixrtcinitramfs라는 후크 와 해당 커널 명령줄 매개변수가 있습니다 . 이 매개변수가 설정되면 초기 사용자 공간 후크는 dumpe2fs루트 파일 시스템의 마지막 마운트 및 생성 시간을 확인합니다. 시계를 설정하는 데 더 큰 시간이 사용됩니다.

  3. fixrtc스크립트 가 없거나 fixrtc매개변수가 설정되지 않은 경우. Systemd가 작동하고 빌드 타임스탬프를 사용하여 시계를 설정합니다. 최신 Debian/Ubuntu 패키징 스크립트는 debian/changelog최신 항목에서 이 빌드 타임스탬프를 추출합니다.

  4. 빌드된 systemd 바이너리를 사용하여 이 빌드 타임스탬프를 표시하는 방법을 찾을 수 없습니다. 그러나 포함된 타임스탬프를 사용자 정의 타임스탬프로 재정의할 수 있습니다. 이를 수행하는 방법은 이라는 파일을 생성/터치하는 것입니다 /usr/lib/clock-epoch. 만일의 경우 파일의 수정 시간이 RTC 데이터의 소스로 사용됩니다.

관련 정보