터미널에서 이 작업을 수행했습니다 sudo cat /dev/char/10:130
. uevent
이름은 watchdog이고 커널에서 watchdog did not stop !
몇 초 후에 전원이 꺼졌습니다. 왜? 라는 메시지를 출력합니다.
대체 내가 뭘 하고 있는 거지?
저는 Raspberry 3b+에서 Raspbian Lite를 실행하고 있습니다.
답변1
/dev/char/10:130
메이저 디바이스 번호가 10번, 마이너 디바이스 번호가 130번인 캐릭터 디바이스입니다. 비임베디드 Linux 시스템에서 더 일반적인 이름은 입니다 /dev/watchdog
.
감시 장치를 켜면 타이머(일반적으로 하드웨어 수준 타이머)가 계산을 시작합니다. 감시 장치를 여는 프로그램은 시스템이 여전히 제대로 작동하고 있음을 보여주기 위해 열려 있는 장치에 주기적으로 무언가(실제로는 무엇이든)를 써야 합니다. 이렇게 하면 하드웨어 타이머가 재설정되고 다시 0으로 계산되기 시작합니다.
예를 들어 시스템 정지 또는 과부하로 인해 이것이 발생하지 않으면 하드웨어 타이머가 0에 도달한 다음 감시 메커니즘이 하드웨어 레벨 재설정 신호를 활성화하여 하드 재시작을 수행합니다. 그것은 다음과 같다데드 스위치운영 체제 및/또는 시스템에서 실행되는 기타 소프트웨어와 함께 사용됩니다.
감시 장치를 관리하는 소프트웨어를 중지해야 하는 경우 일부 감시 장치 드라이버는 파일을 닫기 전에 감시 장치에 특정 문자를 보내도록 요구합니다. 그러면 커널의 감시 드라이버가 감시 타이머를 비활성화해야 합니다. 당신은 sudo cat /dev/char/10:130
이것을하지 않았습니다.
문제는 일부 하드웨어 감시 타이머가 일단 활성화되면 재부팅하지 않으면 중지할 수 없다는 것입니다. 커널이 CONFIG_WATCHDOG_NOWAYOUT 옵션으로 컴파일되면 드라이버는 워치독이 활성화되면 워치독 관리자 프로세스가 항상 존재해야 하므로 워치독 비활성화 요청이 거부될 것으로 예상합니다.