====== Workaround: Reboot nach Kaltstart ======
Bei einem Kaltstart funktioniert die Bildschirm-Ausgabe an meiner KVM-Server-Konsole nicht richtig. Erst nach einem Reboot ist die Anzeige wieder da. Aus diesem Grund habe ich mir etwas einfallen lassen müssen, um diesen Missstand zu beheben. Denn es kann ab und zu vorkommen, dass man doch mal lokal an einen Rechner (auch wenn es "nur" ein Raspberry PI ist) muss.
Im Prinzip geht es hier also nur darum nach einem Kaltstart einen Reboot zu tätigen, damit auch mein KVM-Switch wieder eine Anzeige bekommt.
Es wird hierfür ganz simpel einfach nur ein Skript für die Erstellung einer "Prüf-Datei" und ein weiteres zur Überprüfung dieser in die Runlevels mit aufgenommen. Durch die Überprüfung wird dann gegebenenfalls ein zeitverzögerter Reboot ausgelöst.
Die Skripte hierbei sind nicht wirklich kompliziert:
Erstellen einer Prüf-Datei mit ''sudo vi /etc/init.d/reboot-do'':
#! /bin/sh
### BEGIN INIT INFO
# Provides: reboot-do
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop: 6
# Short-Description: Make a check file for rebooting.
# Description:
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/lsb/init-functions
do_stop () {
touch /var/reboot.done
date > /var/reboot.done
}
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
Prüfen der Prüf-Datei mit ''sudo vi /etc/init.d/reboot-chk'':
#! /bin/sh
### BEGIN INIT INFO
# Provides: reboot-chk
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Check for reboot.
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/lsb/init-functions
do_start() {
if [ -e /var/reboot.done ]; then
rm /var/reboot.done
echo "$(date) - was rebooted." >> /var/log/reboot.log
else
echo "$(date) - reboot after normal boot in one minute." >> /var/log/reboot.log
shutdown -r 1 &
fi
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
Durch dieses Skript wird ein reboot.log geschrieben. Um dies abzuschalten müssen die entsprechenden Zeilen ''echo ... >> /var/log/reboot.log'' auskommentiert werden.
Die Runlevels werden dann wie folgt eingerichtet:
pi@raspberry ~ $ sudo chmod 0755 /etc/init.d/reboot-*
pi@raspberry ~ $ sudo chown root:root /etc/init.d/reboot-*
pi@raspberry ~ $
pi@raspberry ~ $ sudo update-rc.d reboot-do defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match reboot-do Default-Start values (none)
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match reboot-do Default-Stop values (6)
pi@raspberry ~ $ sudo update-rc.d reboot-chk defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match reboot-chk Default-Stop values (none)
pi@raspberry ~ $
Das war es dann bereits schon.
Die Skripte könne im Notfall (oder warum auch immer) mit ''sudo update-rc.d reboot-do remove'' und ''sudo update-rc.d reboot-chk remove'' wieder aus den Runlevels entfernt werden.
{{description>Hier geht es darum nach einem Kaltstart einen Reboot zu tätigen, damit mein KVM-Switch wieder eine Anzeige bekommt.}}
{{keywords>projekt,dokumentation,reboot,konfiguration,administration}}
{{tag>"raspberry pi" workaround}}
//Dieser Artikel ist publiziert unter: {{license>by-nc-sa,small}}//