리눅스 부팅 시 date 가 맞지 않을 때
임베디드 리눅스 장치에서 sntp를 사용하지 않고 date 및 hwclock을 사용하여 시간을 설정하였으나 물리 리셋(전원을 내렸다 올림)을 하면 2000년 1월 1일 xx시 xx분 xx초로 변경이 되는 상황이 발생하였다.
하지만 소프트웨어 리셋(reboot)을 통하여 재부팅을 하면 유지가 되었다.
원인을 찾기 위해 자사 템플릿 내부에서 시간을 제어하는 모듈을 모두 비활성하였고 dmesg 명령을 실행하여 time, date, rtc 같이 시간과 관련 있는 항목을 찾다 보니 아래 화면 같은 rtc 같은 현상을 발견하였다.
그럼 rtc 드라이버의 문제인가? 라고 생각했지만 동일한 빌드 환경과 펌웨어를 사용하는 다른 장치에서는 똑같이 "setting system clock to xxxx" 이 현시되었으나 정상 동작하는 것을 확인하였다.
문제 해결을 위해 접근한 방법은,
1. 소프트웨어적 요소 배제
2. 드라이버 요소 배제
3. 동일 하드웨어 및 펌웨어 간 대조
를 통해서 위 3가지는 모두 문제 없다고 판단하였다.
그러고 나서 알게 된 정답은 정말 간단했다. 머더보드에 rtc 배터리의 수명이 다된 것이었다..
동일 환경 동일 하드웨어 동일 펌웨어라고 방심말고 늘 외적인 요소도 고려하는 습관을 갖아야 한다.
요약. 배터리 갈고 해결됨.
# dmesg
dmesg is used to examine or control the kernel ring buffer.
The default action is to display all messages from the kernel ring buffer.
https://man7.org/linux/man-pages/man1/dmesg.1.html
정의하자면 커널 메시지를 현시하는 명령어이다. 사용자 정의로 커널 메시지를 찍을 수 있지만 대부분의 경우 드라이버가 호출될 때 동작하며 현시되는 메시지들이다.
시스템이 생각처럼 동작하지 않을 때 자주 확인하자.
'IT > linux' 카테고리의 다른 글
linux wget 을 사용한 간단한 web server alive check 예제와 공유 (0) | 2021.12.22 |
---|---|
POST 시 수신 측에서 데이터 짤려서 받을 때 (0) | 2021.12.21 |
grep / linux, 사용법, 설명, 옵션, 정규표현식, 예제 (0) | 2020.03.30 |
mysql DB 생성 간단 정리 / 생성, 권한, 접근, 확인, 예제 (0) | 2020.03.30 |
컴파일 속도 최적화 / make option, 설명, 예제 (0) | 2020.03.30 |
댓글