新装的 Arch , 发现 /etc/sysctl.d/01-sysrq.conf 里设置的 kernel.sysrq = 1 没有生效。

检测 /proc/sys/kernel/sysrq 的值发现是 16

先检查下 systemd 相关服务是否正常运行了, 结果是完全正常:

❯ systemctl status systemd-sysctl.service
● systemd-sysctl.service - Apply Kernel Variables
     Loaded: loaded (/usr/lib/systemd/system/systemd-sysctl.service; static)
     Active: active (exited) since Sun 2021-03-21 20:12:34 CST; 1h 45min ago
       Docs: man:systemd-sysctl.service(8)
             man:sysctl.d(5)
    Process: 324 ExecStart=/usr/lib/systemd/systemd-sysctl (code=exited, status=0/SUCCESS)
   Main PID: 324 (code=exited, status=0/SUCCESS)

测试sudo SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/systemd-sysctl 发现,sysrq 被 默认的规则

/usr/lib/sysctl.d/50-default.conf 覆盖掉了。

❯ rg sysrq /usr/lib/sysctl.d/50-default.conf
16:# Use kernel.sysrq = 1 to allow all keys.
17:# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html for a list
19:kernel.sysrq = 16

由于我们的文件名是 01-sysrq.conf , 在50之前执行,因此,我们需要系统默认配置执行完再覆盖,把文件名改成 99-sysrq.conf 即可:

❯ bat /etc/sysctl.d/99-sysrq.conf
# been set in 50-default.conf
# so we need override it later
kernel.sysrq = 1

refs

https://wiki.archlinux.org/index.php/sysctl#Configuration

https://wiki.archlinux.org/index.php/Keyboard_shortcuts#Kernel_(SysRq)