为什么这个使用 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

相关内容