Raspberry-Pi
為什麼 raspbian lite 在執行“sudo cat /dev/char/10:130”時會關機?
我在一個終端上做了
sudo cat /dev/char/10:130
,它的uevent
名字叫看門狗,它從核心輸出一條消息說,watchdog did not stop !
幾秒鐘後它就關機了,為什麼?我到底在做什麼?
我在 Raspberry 3b+ 上執行 Raspbian lite。
/dev/char/10:130
是一個字元設備,主設備號為 10,次設備號為 130。在非嵌入式 Linux 系統中,它更常被命名為/dev/watchdog
.當您打開看門狗設備時,計時器(通常是硬體級計時器)開始計時。打開看門狗設備的程序預計會定期向打開的設備寫入一些東西(實際上是任何東西),以表明系統仍然執行良好。這將重置硬體計時器,然後它將再次開始向零倒計時。
如果這沒有發生,例如因為系統掛起或過載,硬體定時器將歸零,然後看門狗機制將啟動硬體級復位信號以執行硬重啟。它相當於作業系統和/或系統上執行的其他軟體的當機開關。
如果需要停止看門狗的軟體,一些看門狗驅動程序需要在關閉文件之前向看門狗設備發送特定字元。然後核心中的看門狗驅動程序應該解除看門狗定時器。你
sudo cat /dev/char/10:130
沒有這樣做。問題是,某些硬體看門狗計時器顯然無法在啟動後不重新啟動而停止。並且如果核心已使用 CONFIG_WATCHDOG_NOWAYOUT 選項編譯,驅動程序將期望一旦啟動看門狗,應該始終存在看門狗管理器程序,因此將拒絕看門狗停用請求。