Como garantir que o SysRq esteja sempre ativado, independentemente da configuração do kernel.sysrq?

1

Algumas distribuições do Linux possuem kernel.sysrq=16 , o que significa que apenas o Sysrq + s (sync) é permitido. Por exemplo: o Fedora (25 e 28) está configurado como tal em /usr/lib/sysctl.d/50-default.conf

Eu tive que criar um arquivo como /etc/sysctl.d/95-sysrq.conf onde eu defini manualmente kernel.sysrq=1 para que ele estivesse disponível o mais rápido possível (mas possivelmente não o suficiente dependendo da situação):

$ 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

Existe uma maneira de ativar o Sysrq desde o início, possivelmente ignorando também qualquer configuração para kernel.sysrq ? , por exemplo, adicionando um parâmetro de inicialização do kernel (por exemplo, cat /proc/cmdline para os atuais), como no menu de inicialização do Grub (ou em xen.cfg 's kernel= line).

    
por Marcus Linsner 07.09.2018 / 03:55

1 resposta

2

Existe um parâmetro de inicialização do kernel sysrq_always_enabled de acordo com o doc :

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

Eu testei o Sysrq para funcionar (por exemplo, help, sync) mesmo quando kernel.sysctl=0 (então é exatamente como o documento acima diz), se eu adicionar argumento de inicialização do kernel sysrq_always_enabled (note: não precisa seja sysrq_always_enabled=1 ).
(para verificar novamente, também testei o Sysrq para NÃO funcionar quando kernel.sysctl=0 e sysrq_always_enabled NÃO estão presentes em /proc/cmdline )
O código-fonte confirma isso também.

Nota: /proc/sys/kernel/sysrq é outra maneira de ler / escrever kernel.sysrq

Para mais informações sobre o sysrq: link
(embora sysrq_always_enabled não seja mencionado lá, mas é aqui )

EDITAR: Quando sysrq_always_enabled está em vigor, existe uma linha dmesg:

[    0.000000] sysrq: sysrq always enabled.
    
por 07.09.2018 / 03:55