Il semble qu'il n'y ait aucun moyen de consigner ces données dans un fichier. Pour le processus de démarrage, il y a le bootlogdpackage qui crée le fichier /var/log/boot, mais rien pour le processus d'arrêt / redémarrage. Pour autant que je puisse voir, il n'y a aucun moyen de se connecter avec rsyslog, et même s'il y en avait, il y a des messages imprimés après l' rsyslogarrêt. Une partie de mon processus d'arrêt / redémarrage consiste à remonter les rootfs en lecture seule et à démonter tout le reste, après cette journalisation dans un fichier qui sera toujours là au prochain démarrage est pratiquement impossible.
La façon la plus simple que je peux voir pour afficher les messages est d'éditer les scripts /etc/init.d/haltet / ou de /etc/init.d/rebootfaire une pause juste avant le halt/ reboot. Pour le haltscript, exécutez la commande sudoedit /etc/init.d/halt(ou utilisez un éditeur d'interface graphique) et recherchez la ligne qui fait l'arrêt réel. Pour moi, c'est la ligne:
halt -d -f $netdown $poweroff $hddown
Sinon, cela devrait être à la fin de la do_stopfonction et la seule ligne qui appelle la haltcommande. Une fois que vous avez trouvé la ligne, insérez simplement une nouvelle ligne ci-dessus avec ce qui suit:
read -p "Press enter to halt" reply
Enregistrez le fichier et quittez. Maintenant, lorsque vous arrêtez, le système se met en pause jusqu'à ce que vous appuyiez sur Entrée (ou CTRL-C, CTRL-D, etc.). Vous pouvez lire les messages imprimés à l'écran. S'il y a plus d'un seul écran de texte, vous pouvez voir le défilement du terminal en appuyant sur Shift+PgUp. Si cela ne suffit toujours pas, il existe des moyens d'augmenter la taille du tampon de défilement (peut-être une question différente cependant).
Pour faire de même au redémarrage du système, vous devez modifier le /etc/init.d/rebootfichier. La commande utilisée ici est bien sûr rebootpar opposition à haltet devrait être à nouveau à la fin de la do_stopfonction. Pour moi, la ligne est:
reboot -d -f -i
Encore une fois, insérez simplement ce qui suit sur une nouvelle ligne ci-dessus:
read -p "Press enter to reboot" reply
Notez également que ces fichiers sont répertoriés comme des conffiles pour le initscriptspackage. Ces modifications ne seront pas détruites par défaut lorsque les packages sont mis à niveau, bien qu'elles provoquent un conflit.
Une solution plus complète serait d'utiliser le script suivant:
#! /bin/sh
### BEGIN INIT INFO
# Provides: pause_hook
# Required-Start:
# Required-Stop: halt reboot
# Default-Start:
# Default-Stop: 0 6
# X-Stop-After: umountroot
# X-Interactive: true
# Short-Description: Pause before halt or reboot
# Description:
### END INIT INFO
do_stop () {
[ -r /etc/pause_hook.conf ] && . /etc/pause_hook.conf
[ "$PAUSE_HOOK_ENABLED" = true ] && read -p "Press enter to continue" reply
}
case "$1" in
start)
# No-op
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
Celui-ci doit être placé dans /etc/init.d/pause_hooket peut être activé pour s'exécuter à l'arrêt / redémarrage avec la commande suivante:
sudo update-rc.d pause_hook defaults
Pour activer ensuite le hook réel, créez les fichiers /etc/pause_hook.confcontenant la ligne:
PAUSE_HOOK_ENABLED=true
Le processus d'arrêt / redémarrage doit maintenant s'arrêter juste avant l' appel du script haltou reboot, ce qui donne le temps de visualiser les messages. Il peut également être facilement désactivé / réactivé en commentant / décommmentant la ligne d'activation /etc/pause_hook.conf. Il n'y aura également aucun dpkgconflit de conffile lors des mises à niveau de cette façon.