某些 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=0
sysrq_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.