# Magic SysRq key

Les magic SysRq key sont une fonctionnalité du noyau Linux qui permet par une combinaison de touches de lancer des commandes de bas niveau. Elle doit être activée à la compilation du noyau — c'est le cas d'office sur la plupart des distributions.
La principale utilité de cette fonctionnalité est de pouvoir redémarrer un système bloqué sans corrompre le système de fichiers.

## Combinaisons

Sur un ordinateur x86, la combinaison utilisée est formée des 3 touches : Alt + Imprim écran ou Syst et une autre touche qui détermine l'action à effectuer :
Remarque : dans cette situation, le noyau n'est pas en mesure de tenir compte de la disposition des touches sur le clavier, et interprète les frappes comme si elles étaient réalisées sur un clavier QWERTY. Le tableau de correspondance ci-après associe les commandes aux touches d'un clavier français.
| Action | AZERTY | bépo |
| redémarre immédiatement le système. Cette fonctionnalité peut provoquer des pertes de données : ce qui est en mémoire cache n'est pas écrit sur les disques ; cette fonctionnalité est beaucoup plus radicale que le Ctrl-Alt-Delete de Microsoft ou que le Ctrl+Alt+Del de Linux | b | k |
| redémarre le processus kexec et affiche le message du crash | c | x |
| envoie le signal SIGTERM à tous les processus excepté init | e | p |
| appelle la fonction oom_kill, elle tue le processus qui consomme toute la mémoire disponible | f | e |
| envoie le signal SIGKILL à tous les processus excepté init | i | d |
| tue tous les processus de la console virtuelle active | k | s |
| envoie le signal SIGKILL à tous les processus init compris | l | r |
| affiche les informations relatives à la mémoire dans la console | , | q |
| arrête le système | o | l |
| affiche les registres courants et les flags dans la console | p | j |
| « récupère » le clavier, approprié le plus souvent par le système de fenêtrage X | r | o |
| synchronise tous les systèmes de fichiers montés Cette fonctionnalité peut être très utile si on doit faire un arrêt rapide de l'ordinateur (arrêt électrique ou logiciel) : elle permet de ne pas perdre les données en mémoire cache | s | u |
| affiche la liste des différentes tâches actives ainsi que des informations pour chacune | t | è |
| passe tous les systèmes de fichiers montés en lecture seule | u | v |
| permet de définir le type de messages du noyau qui s'affichent dans la console | de 0 à 9 (sans ⇑ Maj) | de 0 à 9 (sans ⇑ Maj) |
Toute autre touche non assignée à une commande affiche une aide sommaire dans la console.

### Modifier cette fonctionnalité

On peut modifier cette fonctionnalité
* En ajoutant la ligne kernel.sysrq=0 dans le fichier sysctl.conf (Dans ce cas, le contenu du fichier /proc/sys/kernel/sysrq sera '0').
* En recompilant le noyau avec le paramètre CONFIG_MAGIC_SYSRQ à faux dans la rubrique kernel hacking
* En supprimant à la carte la ou les fonctionnalités considérées comme dangereuses dans le code source (dans le fichier sysrq.c correspondant au type de processeur concerné.)
Les deux dernières façons peuvent sembler plus définitives mais elles sont graduellement plus complexes à appliquer et nécessiteront d'être ré-appliquées après chaque mise à jour du noyau.

## Redémarrer proprement un système bloqué

Pour redémarrer un système Linux qui ne répond plus, il faut maintenir les touches Alt + Imprim écran ou Syst puis les combiner dans l'ordre avec la séquence de touches suivante :
* R (pour unraw) — récupérer le contrôle du clavier X ;
* E (pour terminate) — envoyer SIGTERM a tous les processus, pour leur permettre de s'arrêter proprement ;
* I (pour kill) — envoyer SIGKILL a tous les processus, pour les forcer à s'arrêter immédiatement ;
* S (pour sync) — synchroniser les disques, écrire le contenu du tampon sur le disque ;
* U (pour unmount) — remonter tous les systèmes de fichiers en lecture seule, pour ne pas devoir lancer fsck au redémarrage ;
* B (pour reboot) — redémarrer immédiatement la machine.
La touche de chaque lettre devra être enfoncée puis immédiatement relâchée. Il faudra attendre au moins deux secondes après avoir relâché la touche d'une lettre, ceci pour laisser le temps à la commande associée de s'exécuter.
Afin de se souvenir de l'ordre des lettres à utiliser, on pourra s'aider de la phrase mnémotechnique suivante : « Revenir En Islande Sur Un Bateau ». (Ou encore BUSIER à l'envers pour les anglophones).
Cette séquence permet de démonter correctement les systèmes de fichiers, ce qui évite de risquer des corruptions de données et de devoir exécuter fsck au redémarrage. De plus les processus ont du temps pour enregistrer des sauvegardes d'urgence le cas échéant.