대학 과제의 경우 몇 가지 설문조사를 실시하는 시스템이 있습니다. kern.log, syslog 및 auth.log 파일을 분석할 때 특정 동작에 대해 궁금했습니다. 시스템이 시작될 때마다 로그의 특정 지점에 있는 로그 타임스탬프가 2시간 뒤로 이동합니다.
첫 번째 생각은 시스템이 hwclock UTC 시간으로 시작하고 어느 시점에는 시간대(UTC+2)가 적용된다는 것입니다. 하지만 시간대가 UTC+2(UTC-2 아님)이므로 뒤로가 아니라 앞으로 이동하고 싶습니다.
이 동작에 대한 설명(또는 설명에 대한 팁)을 줄 수 있는 사람이 있나요?
이것이 내가 의미하는 바입니다:
...
Jun 5 20:05:27 pc kernel: [ 11.383305] snd_hda_codec_idt hdaudioC0D0: autoconfig for STAC9221 A1: line_outs=3 (0xc/0xf/0xb/0x0/0x0) type:speaker
Jun 5 20:05:27 pc kernel: [ 11.383307] snd_hda_codec_idt hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
Jun 5 20:05:27 pc kernel: [ 11.383308] snd_hda_codec_idt hdaudioC0D0: hp_outs=1 (0xa/0x0/0x0/0x0/0x0)
Jun 5 20:05:27 pc kernel: [ 11.383309] snd_hda_codec_idt hdaudioC0D0: mono: mono_out=0x0
Jun 5 20:05:27 pc kernel: [ 11.383310] snd_hda_codec_idt hdaudioC0D0: dig-out=0x10/0x0
Jun 5 20:05:27 pc kernel: [ 11.383310] snd_hda_codec_idt hdaudioC0D0: inputs:
Jun 5 20:05:27 pc kernel: [ 11.383311] snd_hda_codec_idt hdaudioC0D0: Mic=0xd
Jun 5 20:05:27 pc kernel: [ 11.383312] snd_hda_codec_idt hdaudioC0D0: Line=0xe
Jun 5 20:05:27 pc kernel: [ 11.383313] snd_hda_codec_idt hdaudioC0D0: CD=0x15
Jun 5 20:05:27 pc kernel: [ 11.383314] snd_hda_codec_idt hdaudioC0D0: dig-in=0x11
Jun 5 20:05:27 pc kernel: [ 11.407403] input: HDA Intel Mic as /devices/pci0000:00/0000:00:05.0/sound/card0/input8
Jun 5 20:05:27 pc kernel: [ 11.407540] input: HDA Intel Line as /devices/pci0000:00/0000:00:05.0/sound/card0/input9
Jun 5 20:05:27 pc kernel: [ 11.407675] input: HDA Intel Speaker Front as /devices/pci0000:00/0000:00:05.0/sound/card0/input10
Jun 5 20:05:27 pc kernel: [ 11.407810] input: HDA Intel Speaker CLFE as /devices/pci0000:00/0000:00:05.0/sound/card0/input11
Jun 5 20:05:27 pc kernel: [ 11.407938] input: HDA Intel Front Headphone as /devices/pci0000:00/0000:00:05.0/sound/card0/input12
Jun 5 20:05:27 pc kernel: [ 11.408111] input: HDA Intel SPDIF In as /devices/pci0000:00/0000:00:05.0/sound/card0/input13
Jun 5 20:05:27 pc kernel: [ 14.635240] audit: type=1400 audit(1591380319.980:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-xpdfimport" pid=620 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 14.655840] audit: type=1400 audit(1591380320.004:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-senddoc" pid=618 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 14.741500] audit: type=1400 audit(1591380320.088:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-oopslash" pid=617 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 14.742736] audit: type=1400 audit(1591380320.088:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="ippusbxd" pid=616 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.019051] audit: type=1400 audit(1591380320.364:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=624 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.053162] audit: type=1400 audit(1591380320.400:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=627 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.053165] audit: type=1400 audit(1591380320.400:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=627 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.084543] audit: type=1400 audit(1591380320.428:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/tcpdump" pid=619 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.158035] audit: type=1400 audit(1591380320.504:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="system_tor" pid=623 comm="apparmor_parser"
Jun 5 20:05:27 pc kernel: [ 15.748144] audit: type=1400 audit(1591380320.652:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=632 comm="apparmor_parser"
Jun 5 20:05:38 pc kernel: [ 32.906512] kauditd_printk_skb: 28 callbacks suppressed
Jun 5 20:05:38 pc kernel: [ 32.906515] audit: type=1400 audit(1591380338.248:40): apparmor="DENIED" operation="capable" profile="/usr/sbin/cups-browsed" pid=765 comm="cups-browsed" capability=23 capname="sys_nice"
Jun 5 20:05:40 pc kernel: [ 34.654094] e1000: enp0s3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jun 5 20:05:40 pc kernel: [ 34.654536] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s3: link becomes ready
Jun 5 18:05:55 pc kernel: [ 49.364257] snd_hda_intel 0000:00:05.0: Invalid position buffer, using LPIB read method instead.
Jun 5 18:05:55 pc kernel: [ 49.571782] snd_hda_intel 0000:00:05.0: Invalid position buffer, using LPIB read method instead.
Jun 5 18:06:21 pc kernel: [ 75.730326] rfkill: input handler disabled
Jun 5 18:07:45 pc kernel: [ 159.004723] rfkill: input handler enabled
Jun 5 18:07:57 pc kernel: [ 171.241572] rfkill: input handler disabled
...
답변1
하드웨어 RTC를 현지 시간으로 잘못 구성했습니다.
그것은 결코 좋은 생각이 아니었고 지금도 좋은 생각이 아닙니다. 이 특정 문제(여러 가지 중 하나)는 수십 년 동안 알려져 왔습니다.
무슨 일이 일어났는가?
- 부트로더에서 커널은 시스템 시계를 설정합니다(언제나슬레이브 하드웨어 시계는 UTC로 실행됩니다. 하드웨어 RTC가 UTC 시간으로 설정되어 있지 않기 때문에 시스템 시계가 잘못된 시간으로 설정됩니다. 하드웨어 RTC 칩(일반 플랫폼)에는 시간대 정보가 없습니다.
- 나중에 부트로더에서 비커널 프로그램은 구성 파일의 "글로벌" 시간대 설정을 사용하여 C 라이브러리의 로케일 데이터베이스를 쿼리하고 커널에 그 오프셋을 알려줌으로써 현지 시간에서 UTC까지의 오프셋을 계산합니다.
- 커널은 시스템 시계와 시간을 현지 시간인 것처럼 가장하는 다양한 드라이버(예: FAT 파일 시스템 드라이버)에 오프셋을 적용합니다. 이제 시스템 시계가 올바른 UTC 값으로 설정되었습니다. 시스템 클럭 점프 UTC 오프셋 값입니다.
구성된 "글로벌" 시간대가 UTC보다 뒤처지면(아메리카에서와 같이) 시스템 시계가 UTC보다 늦게 시작하고(하드웨어 시계가 잘못 수행함) system-manager
/systemd/whatever에 시간대 오프셋이 제공된 후 UTC로 점프합니다. . 시간대가 UTC보다 앞설 경우(예: 유럽/아프리카 및 아시아의 일부 지역) 시스템 시계가 뒤로 이동하는데, 이는 애플리케이션에 바람직하지 않습니다.
BSD에는 이 문제를 해결할 수 있는 방법이 있습니다. 부트 로더는 파일의 로더 변수를 통해 UTC로부터의 시간대 오프셋을 알 수 있습니다 loader.conf
. 그래서 커널이미 알고 있었어하드웨어 RTC의 초기 읽기를 수행할 때 시스템 클럭이 설정되는 UTC 값을 얻기 위해 하드웨어 RTC 값에 적용되는 오프셋입니다.
Linux에는 그러한 메커니즘이 없지만 대신 첫 번째 프로그램이 특정 방식으로 함수를 호출하는 데 settimeofday()
마술적인 의미가 있습니다 . 이 프로그램은 일반적으로 systemd, nosh system-manager
또는 프로그램 hwclock
의 첫 번째 호출 입니다.
하드웨어 실시간 시계를 UTC로 실행하고 이를 이해하도록 모든 운영 체제를 구성하십시오.
추가 읽기
- 조나단 데보인 폴라드(2018)."시스템 시계".
system-manager
.nosh 도구 세트 매뉴얼 페이지. 소프트웨어. - 조나단 데보인 폴라드(2009).DOS Think의 시간 기록 방식은 근본적으로 깨졌습니다.. 일반적인 답변.
- 플로리안 바이머(2019-08-12).
struct timezone
상호 작용 하지 마세요settimeofday
. 시스템 오류 #13305. - 좌종당(2008-01-08). 답변: ext3 로깅 방법. <[이메일 보호됨]>. fa.linux.커널
- 좌종당(2009-09-10).답변: buggy_init_scritps 및 e2fsprogs 1.41.9. 리눅스-ext4.
- https://unix.stackexchange.com/a/294715/5132