如何确保 SysRq 始终启用,无论 kernel.sysrq 设置如何?

如何确保 SysRq 始终启用,无论 kernel.sysrq 设置如何?

某些 Linux 发行版具有仅允许 (sync)kernel.sysrq=16的意思。SysRq + s例如:Fedora(25 和 28)已将其设置为/usr/lib/sysctl.d/50-default.conf

我必须在/etc/sysctl.d/95-sysrq.conf手动设置的位置创建一个文件kernel.sysrq=1,以便尽快可用(但根据情况可能不够快):

$ grep -nHi sysrq /usr/lib/sysctl.d/* /etc/sysctl.d/*
/usr/lib/sysctl.d/50-default.conf:16:# Use kernel.sysrq = 1 to allow all keys.
/usr/lib/sysctl.d/50-default.conf:17:# See http://fedoraproject.org/wiki/QA/Sysrq for a list of values and keys.
/usr/lib/sysctl.d/50-default.conf:18:kernel.sysrq = 16
/etc/sysctl.d/95-sysrq.conf:1:kernel.sysrq=1

有没有办法从早期启动启用 Sysrq,也可能忽略 的任何设置kernel.sysrq,例如添加内核引导参数(例如,cat /proc/cmdline对于当前的),例如从 Grub 引导菜单(或在xen.cfg'skernel=行中)。

答案1

sysrq_always_enabled根据内核启动参数文档

sysrq_always_enabled
            [KNL]
            Ignore sysrq setting - this boot parameter will
            neutralize any effect of /proc/sys/kernel/sysrq.
            Useful for debugging.

我已经测试了 Sysrq 是否可以工作(例如帮助,同步),即使kernel.sysctl=0(所以就像上面的文档所说的那样),如果我添加内核启动参数sysrq_always_enabled(注意:它不必是sysrq_always_enabled=1)。 (为了仔细检查,我还测试了 Sysrq 在和不存在
时不起作用)kernel.sysctl=0sysrq_always_enabled/proc/cmdline
源代码也证实了这一点。

注意:/proc/sys/kernel/sysrq是另一种读/写方式kernel.sysrq

有关 sysrq 的更多信息:https://www.kernel.org/doc/html/v4.15/admin-guide/sysrq.html
(虽然sysrq_always_enabled没有提到,但它是这里

编辑:sysrq_always_enabled生效 时,有一条dmesg行:

[    0.000000] sysrq: sysrq always enabled.

相关内容