06/12/2012

Débloquer proprement Linux en cas de freeze

Une fonctionnalité du noyau Linux permet, par une combinaison de touches, de lancer des commandes de bas niveau. Pour cela, elle doit être activée à la compilation du noyau. Et c'est justement le cas, par défaut, sur la plupart des distributions actuelles.

La principale utilité de cette fonctionnalité, présentée dans cet article, est de pouvoir redémarrer un système bloqué sans corrompre le système de fichier. En effet, cela 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. C'est toujours mieux qu'un reboot sauvage !

Sur architecture x86, on actionne cette fonctionnalité en maintenant simultanément les touches Alt et Syst tout en tappant la séquence REISUB, en attendant au moins 2 secondes entre chaque lettre.

Au delà de cette précieuse séquence à retenir, les raccourcis Alt+Syst peuvent servir à d'autres choses en fonction de la touche utilisée simultanément :

  • r : récupérer le clavier, monopolisé généralement par l'interface graphique.
  • e : envoie le signal SIGTERM à tous les processus excepté init.
  • i : envoie le signal SIGKILL à tous les processus excepté init.
  • s : 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, car elle permet de ne pas perdre les données en mémoire cache.
  • u : passe tous les systèmes de fichiers montés en lecture seule.
  • b : redémarrer immédiatement le système. Cette fonctionnalité peut provoquer des pertes de données car ce qui est en mémoire cache n'est pas écrit que les disques ; c'est beaucoup plus violent que le Ctrl+Alt+Suppr de Windows (ou de Linux, lorsque ce n'est pas désactivé comme sur Ubuntu).
  • k : tue tous les processus de la console virtuelle active.
  • c : redémarre le processus kexec et affiche le message du crash.
  • o : arrête le système.
  • p : affiche les registres courants et les flags dans la console.
  • t : affiche la liste des différentes tâches actives ainsi que des informations pour chacune.
  • m (sur clavier QWERTY et ,(virgule) sur clavier AZERTY) : affiche les informations relatives à la mémoire dans la console.
  • f : appelle la fonction oom_kill qui tue le processus qui consomme toute la mémoire disponnible.
  • l : envoie le signal SIGKILL à tous les processus, y compris init. de 0 à 9 : permet de définir le type de message du noyau qui s'affichent dans la console.

Aucun commentaire: