Parece não haver maneira de registrar esses dados em um arquivo. Para o processo de inicialização, há o pacote bootlogd
que cria o arquivo /var/log/boot
, mas nada para o processo de desligamento / reinicialização. Tanto quanto eu posso ver, não há como registrar com rsyslog
, e mesmo se houvesse, há mensagens impressas depois que rsyslog
é interrompido. Parte do meu processo de desligamento / reinicialização é remontar o rootfs readonly e desmontar todo o resto, depois que esse registro em um arquivo que ainda estará lá na próxima inicialização é virtualmente impossível.
A maneira mais fácil de ver as mensagens é editando os scripts /etc/init.d/halt
e / ou /etc/init.d/reboot
para pausar um pouco antes do real halt
/ reboot
. Para o script halt
, execute o comando sudoedit /etc/init.d/halt
(ou use um editor de GUI) e procure a linha que faz a parada real. Para mim esta é a linha:
halt -d -f $netdown $poweroff $hddown
Caso contrário, deve estar no final da função do_stop
e a única linha que chama o comando halt
. Depois de encontrar a linha, basta inserir uma nova linha acima com o seguinte:
read -p "Press enter to halt" reply
Salve o arquivo e saia. Agora, quando você desligar, o sistema fará uma pausa até que você pressione enter (ou CTRL-C, CTRL-D, etc). Você pode ler as mensagens impressas na tela. Se houver mais de uma única tela cheia de texto, você poderá ver a rolagem do terminal pressionando Shift+PgUp
. Se isso ainda não for suficiente, existem maneiras de aumentar o tamanho do buffer de rolagem (talvez uma pergunta diferente).
Para fazer o mesmo quando o sistema é reinicializado, você precisa editar o arquivo /etc/init.d/reboot
. O comando usado aqui é obviamente reboot
em oposição a halt
e deve estar novamente no final da função do_stop
. Para mim a linha é:
reboot -d -f -i
Novamente, insira o seguinte em uma nova linha acima:
read -p "Press enter to reboot" reply
Note também que estes arquivos são listados como arquivos de configuração para o pacote initscripts
. Essas edições não serão prejudicadas por padrão quando os pacotes forem atualizados, embora causem um conflito.
Uma solução mais completa seria usar o seguinte 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
Isso deve ser colocado em /etc/init.d/pause_hook
e pode ser ativado para ser executado no desligamento / reinicialização com o seguinte comando:
sudo update-rc.d pause_hook defaults
Para ativar o gancho real, crie os arquivos /etc/pause_hook.conf
contendo a linha:
PAUSE_HOOK_ENABLED=true
O processo de desligamento / reinicialização deve pausar imediatamente antes do script halt
ou reboot
ser chamado, dando tempo para exibir as mensagens. Ele também pode ser facilmente desativado / reativado, comentando / descomentando a linha de ativação em /etc/pause_hook.conf
. Também não haverá conflitos de conffile dpkg
durante as atualizações dessa maneira.