Sembra che non ci sia modo di registrare questi dati in un file. Per il processo di avvio, esiste il bootlogd
pacchetto che crea il file /var/log/boot
, ma nulla per il processo di arresto / riavvio. Per quanto posso vedere non c'è modo di accedere con rsyslog
nessuno dei due, e anche se ci fosse, ci sono messaggi stampati dopo che rsyslog
è stato arrestato. Parte del mio processo di spegnimento / riavvio è di rimontare i rootfs in modo semplice e smontare tutto il resto, dopo che la registrazione su un file che sarà ancora lì al prossimo avvio è praticamente impossibile.
Il modo più semplice che posso vedere per visualizzare i messaggi è modificare gli script /etc/init.d/halt
e / o /etc/init.d/reboot
per mettere in pausa appena prima dell'effettivo halt
/ reboot
. Per lo halt
script, eseguire il comando sudoedit /etc/init.d/halt
(o utilizzare un editor GUI) e cercare la riga che esegue l'arresto effettivo. Per me questa è la linea:
halt -d -f $netdown $poweroff $hddown
Altrimenti dovrebbe essere alla fine della do_stop
funzione e l'unica linea che chiama il halt
comando. Una volta trovata la linea, basta inserire una nuova linea sopra con il seguente:
read -p "Press enter to halt" reply
Salva il file ed esci. Ora quando si spegne, il sistema si mette in pausa fino a quando non si preme Invio (o CTRL-C, CTRL-D, ecc.). Puoi leggere i messaggi stampati sullo schermo. Se è presente più di una singola schermata di testo, è possibile visualizzare lo scorrimento del terminale premendo Shift+PgUp
. Se ciò non è ancora sufficiente, esistono modi per aumentare le dimensioni del buffer di scorrimento (forse una domanda diversa).
Per fare lo stesso al riavvio del sistema, è necessario modificare il /etc/init.d/reboot
file. Il comando usato qui è ovviamente reboot
contrario halt
e dovrebbe essere nuovamente alla fine della do_stop
funzione. Per me la linea è:
reboot -d -f -i
Ancora una volta inserisci quanto segue in una nuova riga sopra:
read -p "Press enter to reboot" reply
Si noti inoltre che questi file sono elencati come conffile per il initscripts
pacchetto. Queste modifiche non saranno bloccate per impostazione predefinita quando i pacchetti vengono aggiornati, anche se causeranno un conflitto.
Una soluzione più completa sarebbe quella di utilizzare il seguente script:
#! /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
Questo dovrebbe essere inserito /etc/init.d/pause_hook
e può essere abilitato all'esecuzione allo spegnimento / riavvio con il seguente comando:
sudo update-rc.d pause_hook defaults
Per abilitare quindi l'hook effettivo, creare i file /etc/pause_hook.conf
contenenti la riga:
PAUSE_HOOK_ENABLED=true
Il processo di spegnimento / riavvio dovrebbe ora essere messo in pausa appena prima della chiamata dello script halt
o reboot
, dando tempo per visualizzare i messaggi. Può anche essere facilmente disabilitato / riattivato commentando / sbloccando la riga di abilitazione /etc/pause_hook.conf
. In dpkg
questo modo non ci saranno conflitti di conffile durante gli aggiornamenti.