마지막 재부팅이 커널 패닉으로 인한 것인지 확실하게 확인할 수 있습니까?

마지막 재부팅이 커널 패닉으로 인한 것인지 확실하게 확인할 수 있습니까?

커널 패닉이 발생할 때 자동으로 재부팅하려는 임베디드 Linux 시스템이 있습니다. 그러나 부팅 시 마지막 재부팅이 커널 패닉으로 인한 것인지 아니면 클린 재부팅으로 인한 것인지 확실하게 확인할 수 있는 방법이 있습니까?

다음을 사용하여 의도적으로 커널 패닉을 유발할 때 특히 syslogs이에 의존할 수 없는 것 같습니다 .kern.log

echo c > /proc/sysrq-triger

다음 부팅 시에는 커널 패닉 덤프가 syslogs없습니다 .kern.log.*

last -x또한 마지막 재부팅이 깨끗하지 않았다는 힌트를 얻기 위해 출력을 읽는 것을 살펴봤지만 로그인 세션이 완전히 종료되지 않은 경우에만 표시됩니다 crash. pts임베디드 시스템은 SSH나 시리얼을 사용하는 수동 상호작용 없이 실행되고 있고 로그인한 사용자가 없기 때문에 이에 의존할 수도 없습니다.

또한 참고: 내가 사용하고 있는 임베디드 BSP는 이것을 지원하지 않으므로 ramoops-pstore나에게도 작동하지 않습니다.

답변1

커널 충돌 후 커널이 안정적으로 작동하지 않기 때문에 로그에 정보가 기록되지 않습니다(파일 시스템 구조가 손상되었을 수 있으며 디스크에 쓰면 상황이 더 악화될 수 있음).

따라서 로그에서 커널 패닉 항목을 확인하는 대신 완전히 종료하거나 재부팅할 때마다 로그에 메시지를 기록하는 코드를 반대 방법으로 추가할 수 있습니다. 이 코드를 추가하는 위치는 사용 중인 초기화 시스템에 따라 다릅니다.

그런 다음 시작 시 메시지를 확인할 수 있습니다. 현재 부팅과 관련된 항목 이전에 찾으면 종료/재부팅이 커널 패닉으로 인한 것이 아니라는 것을 알 수 있으며, 없으면 커널 패닉(또는 정전)이 발생한 것입니다.

관련 정보