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

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

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

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

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

答案1

您可能禁用了 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

答案2

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

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

  1. 組合鍵實際上取決於鍵盤。鍵盤必須自行擷取所有按鍵,並且只有鍵盤「知道」實際 SysRq 鍵所在的位置以及哪個組合觸發發送特殊鍵代碼。所以:

    • SysRq 不一定與「Home」或「Print Screen」位於同一個按鈕上,嘗試搜尋它,通常它明確標記為「SysRq」。
    • 嘗試不同的組合:Ctrl+Alt+SysRq+bCtrl+Alt+Fn+SysRq+b等(警告,成功後系統將重新啟動)。在具有該Fn鍵的鍵盤上,您通常必須按下該鍵才能到達實際的SysRq按鍵,因此您的組合很可能會涉及該Fn鍵。
  2. 實際上,您可以知道何時組合正確。xev從終端運行,對焦xev視窗並點擊鍵盤上的一些按鈕,您應該會看到終端中出現事件。當您獲得正確的組合時,您不應該獲得事件,因為它被內核捕獲並且不會傳遞到 X 伺服器。

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

相關內容