나는 Raspberry Pi를 가지고 있으며 재부팅할 때마다 끝에 다음 출력이 표시됩니다.
root@RaspberryPi:~# last | grep boot
reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 still running
reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 still running
reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 23:01 (17305+22:01)
reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 23:01 (17305+22:01)
reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 23:01 (17305+22:01)
이는 fake-hwclock 및 하드웨어 RTC를 설치했음에도 불구하고 마찬가지입니다.
현재 아래와 같이 fake-hwclock.service 서비스가 sysinit.target보다 먼저 시작됩니다.
[Unit]
Before=sysinit.target
[Service]
ExecStart=/sbin/fake-hwclock load
[Install]
WantedBy=sysinit.target
/var/log/wtmp가 업데이트되기 전에 어떻게 실행되도록 합니까?
답변1
나는 이것이 systemd-update-utmp의 버그라고 생각합니다. 여기 댓글을 참고하세요:https://github.com/systemd/systemd/issues/6057#issuecomment-435247567
해결 방법은 기본 시스템 인스턴스에 제어권을 전달하기 전에 initramfs에서 fake-hwclock을 실행하는 것입니다.
답변2
wtmp "다시 시작" 로그인 기록은 systemd-update-utmp systemd 서비스에 의해 처리됩니다. sysinit 대상보다 먼저 시작해야 합니다. 즉, 아직 시작되지 않은 경우 시작이 완료되기 전에 서비스가 시작됩니다. 이는 systemd-timesyncd가 항상 systemd-update-utmp보다 먼저 시작된다는 의미는 아닙니다.
내 아치 Linux 서버에서 테스트했는데 systemd-timesyncd는 systemd-update-utmp 이전에 항상 잘 작동했습니다. 반면에, 그들은 거의 항상 서로 한 pid 떨어져 있습니다.
그러나 명시적으로 NTP 뒤에서 실행되지 않기 때문에 이는 여전히 버그로 간주되어야 한다고 생각합니다.
시스템 매뉴얼에서:
"= 다음에역Before=, 즉 After=는 나열된 장치 시작이 완료된 후 구성된 장치가 시작되도록 보장합니다."
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
당신이 해야 할 일:
systemctl edit systemd-update-utmp
[Unit]
After=systemd-timesyncd.service
Wants=systemd-timesyncd.service