我有 Fedora 20,帶有 zshell 和 Mate 桌面。我剛剛遇到這個有關使用 SysRq 鍵的文章,但他們沒有給出那裡顯示的結果。我使用 Alt 和標記為“Home”的鍵,其上方為“Print Scr”作為 SysRq 組合鍵。
我也嘗試過按住黃色的“FN”鍵,但這沒有什麼區別。
由於“即使系統完全損壞也重新啟動”序列看起來非常有用,我想知道我做錯了什麼。
答案1
您可能禁用了 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
。
答案2
通常,當您按下按鈕時,鍵盤會產生一個鍵碼。作業系統接收鍵碼,應用一些鍵映射,並嘗試獨立於底層硬體處理鍵組合。
SysRq 機制有點不同:鍵盤捕獲組合並向作業系統發送特殊的鍵碼,就像按下單個按鈕一樣。 Linux 核心會擷取特殊的鍵碼並在內部處理它,而不將輸入轉送到 X 伺服器等更高層級的應用程式。這意味著兩個後果:
組合鍵實際上取決於鍵盤。鍵盤必須自行擷取所有按鍵,並且只有鍵盤「知道」實際 SysRq 鍵所在的位置以及哪個組合觸發發送特殊鍵代碼。所以:
- SysRq 不一定與「Home」或「Print Screen」位於同一個按鈕上,嘗試搜尋它,通常它明確標記為「SysRq」。
- 嘗試不同的組合:
Ctrl+Alt+SysRq+b
或Ctrl+Alt+Fn+SysRq+b
等(警告,成功後系統將重新啟動)。在具有該Fn
鍵的鍵盤上,您通常必須按下該鍵才能到達實際的SysRq
按鍵,因此您的組合很可能會涉及該Fn
鍵。
實際上,您可以知道何時組合正確。
xev
從終端運行,對焦xev
視窗並點擊鍵盤上的一些按鈕,您應該會看到終端中出現事件。當您獲得正確的組合時,您不應該獲得事件,因為它被內核捕獲並且不會傳遞到 X 伺服器。