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 bootlogd
package 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' rsyslog
arrê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/halt
et / ou de /etc/init.d/reboot
faire une pause juste avant le halt
/ reboot
. Pour le halt
script, 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_stop
fonction et la seule ligne qui appelle la halt
commande. 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/reboot
fichier. La commande utilisée ici est bien sûr reboot
par opposition à halt
et devrait être à nouveau à la fin de la do_stop
fonction. 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 initscripts
package. 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_hook
et 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.conf
contenant la ligne:
PAUSE_HOOK_ENABLED=true
Le processus d'arrêt / redémarrage doit maintenant s'arrêter juste avant l' appel du script halt
ou 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 dpkg
conflit de conffile lors des mises à niveau de cette façon.