Linux – Reiniciar Linux com SysRq

Para quem não conhece o SysRq(System Request) é uma tecla que você encontra na maioria dos teclados próximo ao Insert e a tecla Home, muitas vezes dividindo espaço com a tecla PrintScreen.

Toda historia e o porque você pode ver aqui no Wikipedia.

O que quero comentar é o uso que essa tecla permite ou permitia pelo menos nos dias de hoje, para algumas ações no console do Linux, SysRq com Alt e um caractere e uma função é executada.

Por exemplo Alt + SysRq + s irá dar um sync em todos file systems montados.

Uma relação dos caracteres, funções e mais informações pode ser visto neste link.

Porém, conseguimos usar este recurso do SysRq escrevendo direto no /proc referente a ele, para isso e para garantir exito devemos habilitar o sysrq, para isso executaremos o seguinte comando.

root@vm1 # echo 1 > /proc/sys/kernel/sysrq

 

Maravilha, agora temos certeza que o kernel esta apto a atender ao SysRq, alguns caracteres e funções interessantes e importantes conhecermos é:

Reboot (b)
Umount (u)
Sync (s)
Poweroff (o)

 

Agora vem a parte legal, o porque de tudo isso e sobre SysRq. Tem tudo haver com o post Linux – Usando o forcefsck, porque imagina o cenário onde o Linux já remontou com read-only, o sistema esta com file system “sujo” e você precisa criar o /forcefsck para realizar fsck, porém o sistema esta como read-only!

Então você irá reiniciar o Linux, e assim que voltar irá criar o /forcefsck e reiniciar novamente, o problema é que já tive casos que comandos como reboot, shutdown, halt, poweroff estavam dando erro.

 

bash: /sbin/reboot: Input/output error
bash: /sbin/shutdown: Input/output error

 

É ae que nessa hora entra a “sacadinha” do SysRq e irá salvar você, onde escrevendo o caractere no /proc/sysrq-trigger ele irá executar a função correspondente ao caractere. É bom atentar que o caractere ‘b‘ é um reboot imediato ao sistema, sem ao menos dar sync muito menos desmontar as partições, então sempre que possível execute pelo menos um sync, caso o programa não funcionar, envie o caractere ‘s‘ para o /proc/sysrq-trigger.

 

# Sync de todas partições montadas
root@vm1 # echo s > /proc/sysrq-trigger

# Reboot imediato sem desmontar partições muito menos dar sync
root@vm1 # echo b > /proc/sysrq-trigger

 

Com isso o Linux irá rebootar, no retorno do sistema você pode criar o /forcefsck e reiniciar novamente, isso é valido para Linux workstation, servers e até versões embarcadas..

Você pode acompanhar tudo o que for utilizar acessando o /var/log/syslog, comandos como ‘s‘ [sync] e ‘t‘ [lista e informação das tarefas correntes], tudo isso pode ser visualizado no /var/log/syslog.

 

 

Bônus

Agora um bônus e uma verdadeira saída de mestre, foi quando precisei fazer isso e estava tão critico que o echo, cat e vários outros comandos também estavam com problemas, e não tinha muito recurso disponível e entre os comandos disponíveis estava o dd.

Então segue a maneira que consegui reiniciar. O que foi engraçado é que o echo funcionava, o problema estava quando tentava direcionar para escrever no /proc/sysrq-trigger com ‘>’.

A solução:

root@vm1 # echo s | dd of=/proc/sysrq-trigger
root@vm1 # echo b | dd of=/proc/sysrq-trigger

 

Espero que tenham gostado ;)

Até a próxima!

 

 

Referências

http://pt.wikipedia.org/wiki/SysRq

http://www.linuxhowtos.org/Tips%20and%20Tricks/sysrq.htm

https://www.kernel.org/doc/Documentation/sysrq.txt

Share Button

CC BY-NC-SA 4.0 Linux – Reiniciar Linux com SysRq by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.