Linux
為什麼使用 SyRq 的這個鍵序列不起作用
我有 Fedora 20,帶有 zshell 和 Mate 桌面。我剛剛看到這篇關於使用 SysRq keys的文章,但他們沒有給出那裡顯示的結果。我正在使用 Alt 鍵,上面標有“Home”和“Print Scr”的鍵作為 SysRq 組合鍵。
我也嘗試過按住黃色的“FN”鍵,但這沒有任何區別。
由於“即使系統完全損壞也重新啟動”序列看起來非常有用,我想知道我做錯了什麼。
通常,當您按下按鈕時,鍵盤會生成一個鍵碼。作業系統接收鍵碼,應用一些鍵映射,並嘗試獨立於底層硬體處理鍵組合。
SysRq 機制有點不同:鍵盤擷取組合併向作業系統發送一個特殊的鍵碼,就像按下單個按鈕一樣。Linux 核心擷取特殊鍵碼並在內部對其進行處理,而不會將輸入轉發到 X 伺服器等更高級別的應用程序。這意味著兩個後果:
- 組合鍵實際上取決於鍵盤。鍵盤必須自己捕捉所有按鍵,只有鍵盤“知道”實際 SysRq 鍵所在的位置以及哪個組合觸發發送特殊鍵碼。所以:
- SysRq 不一定與“Home”或“Print Screen”位於同一個按鈕,嘗試搜尋它,通常它被明確標記為“SysRq”。
- 嘗試不同的組合:
Ctrl+Alt+SysRq+b
或Ctrl+Alt+Fn+SysRq+b
,等(警告,成功後系統將重新啟動)。在有Fn
鍵的鍵盤上,您通常必須按下它才能到達實際的SysRq
鍵,因此您的組合很可能會涉及到該Fn
鍵。
- 您實際上可以知道何時正確組合。
xev
從終端執行,聚焦xev
’s 視窗並點擊鍵盤上的一些按鈕,您應該會看到終端中出現了事件。當你得到一個正確的組合時,你不應該得到一個事件,因為它被核心擷取並且沒有傳遞到 X 伺服器。
您可能禁用了 SysRq 組合。要使它起作用,必須滿足以下幾點:
- 您必須
CONFIG_MAGIC_SYSRQ
在核心配置中啟用。- 您必須將
kernel.sysrq
sysctl 設置為啟用解釋 SysRq 組合的值。
kernel.sysrq
是啟用/禁用功能的位遮罩:
- 0 - 完全禁用
- 1 - 完全啟用
- 2 - 允許控制控制台日誌記錄級別
- 4 - 允許控制鍵盤
- 8 - 允許控制程序轉儲
- 16 - 允許控制
sync()
呼叫- 32 - 允許以只讀方式重新掛載
- 64 - 允許程序信號
- 128 - 允許更改系統電源狀態(重啟/關機/等)
- 256 - 允許實時執行的任務
假設您要啟用所有 SysRq 功能,您可以使用該
sysctl
工具臨時設置該值:sysctl -w kernel.sysrq=1
要永久執行此操作,請將以下行添加到
/etc/sysctl.conf
:kernel.sysrq = 1
然後,您可以
/etc/sysctl.conf
通過發出讓系統重新載入設置sysctl -p
。