我有 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 服务器。