Forcer un reboot via les commandes SysRq sous Linux

De Ikoula Wiki
Jump to navigation Jump to search

Introduction

Nous allons voir comment vérifier, modifier et utiliser les fonctions SysRq pour effectuer un redémarrage de votre serveur.
Cette commande ne doit être effectuée qu'en cas d'impossibilité de redémarrer via les commandes standard, comme par exemple lorsque vous avez ce retour :

# reboot
bash: /sbin/reboot: Input/output error
# shutdown -r now
bash: /sbin/shutdown: Input/output error


Vérification

Tout d'abord il faut que votre kernel ait été compilé avec l'option Magic SysRq, vous pouvez vérifier cela avec la commande :

# grep -i CONFIG_MAGIC_SYSRQ /boot/config-$(uname -r)
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
CONFIG_MAGIC_SYSRQ_SERIAL=y

La présence de la ligne CONFIG_MAGIC_SYSRQ=y nous indique que oui, si ce n'est pas le cas vous ne pourrez pas effectuer la suite des manipulations, il vous faudra malheureusement recompilé votre noyau en activant l'option.
Vous pouvez vérifier les fonctions SysRq autorisées par votre distribution via la commande :

# cat /proc/sys/kernel/sysrq
438

Cette valeur est obtenue à partir de la somme de 2 + 4 + 16 + 32 + 128 + 256, donc toutes les fonctions correspondantes à la liste ci-dessous sont activées :

0 - disable sysrq completely
1 - enable all functions of sysrq
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signaling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks


Modification

Dans notre cas nous n'en n'avons pas besoin, car le reboot (128) est autorisé, mais si ce n'est pas le cas vous pouvez forcer cela en activant toutes les fonctions via :

# echo "1" > /proc/sys/kernel/sysrq

Ou encore via :

# sysctl -w kernel.sysrq=1

Cette modification n'est pas persistante, si vous souhaitez que cela soit permanent, effectuez :

# echo "kernel.sysrq = 1" >> /etc/sysctl.d/99-sysctl.conf


Utilisation

Les fonctions SysRq peuvent être utilisées via la combinaison des touches ALT+SysRq+<touche>.
Le problème c'est que la touche SysRq n'est pas souvent affiché sur le clavier, c'est régulièrement la touche Impr. écran mais pas forcément.
De plus sur certains claviers comme les portables il faudra ajouter une touche de fonction Fn en plus.
Pour palier à cela, vous pouvez pour forcer un reboot, utiliser la commande ci-dessous :

# echo "b" > /proc/sysrq-trigger




Cet article vous a semblé utile ?

0



Vous n'êtes pas autorisé à publier de commentaire.