Linux

為什麼使用 SyRq 的這個鍵序列不起作用

  • April 24, 2015

我有 Fedora 20,帶有 zshell 和 Mate 桌面。我剛剛看到這篇關於使用 SysRq keys的文章,但他們沒有給出那裡顯示的結果。我正在使用 Alt 鍵,上面標有“Home”和“Print Scr”的鍵作為 SysRq 組合鍵。

我也嘗試過按住黃色的“FN”鍵,但這沒有任何區別。

由於“即使系統完全損壞也重新啟動”序列看起來非常有用,我想知道我做錯了什麼。

通常,當您按下按鈕時,鍵盤會生成一個鍵碼。作業系統接收鍵碼,應用一些鍵映射,並嘗試獨立於底層硬體處理鍵組合。

SysRq 機制有點不同:鍵盤擷取組合併向作業系統發送一個特殊的鍵碼,就像按下單個按鈕一樣。Linux 核心擷取特殊鍵碼並在內部對其進行處理,而不會將輸入轉發到 X 伺服器等更高級別的應用程序。這意味著兩個後果:

  1. 組合鍵實際上取決於鍵盤。鍵盤必須自己捕捉所有按鍵,只有鍵盤“知道”實際 SysRq 鍵所在的位置以及哪個組合觸發發送特殊鍵碼。所以:
  • SysRq 不一定與“Home”或“Print Screen”位於同一個按鈕,嘗試搜尋它,通常它被明確標記為“SysRq”。
  • 嘗試不同的組合:Ctrl+Alt+SysRq+bCtrl+Alt+Fn+SysRq+b,等(警告,成功後系統將重新啟動)。在有Fn鍵的鍵盤上,您通常必須按下它才能到達實際的SysRq鍵,因此您的組合很可能會涉及到該Fn鍵。
  1. 您實際上可以知道何時正確組合。xev從終端執行,聚焦xev’s 視窗並點擊鍵盤上的一些按鈕,您應該會看到終端中出現了事件。當你得到一個正確的組合時,你不應該得到一個事件,因為它被核心擷取並且沒有傳遞到 X 伺服器。

另請參閱文件:https ://www.kernel.org/doc/Documentation/sysrq.txt

您可能禁用了 SysRq 組合。要使它起作用,必須滿足以下幾點:

  • 您必須CONFIG_MAGIC_SYSRQ在核心配置中啟用。
  • 您必須將kernel.sysrqsysctl 設置為啟用解釋 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

引用自:https://unix.stackexchange.com/questions/160412