Systemstart
Aus open7x0.org
Inhaltsverzeichnis |
Einleitung
Beim Start der VDR Firmware untersucht diese den Startgrund und ein paar weitere Dinge und entscheidet danach, wie das System gestartet werden soll.
Ereignisse
Die folgenden Ereignisse können festgestellt werden:
Einschaltgrund (PIC)
Der eingebaute PIC teilt mit, warum er die Box eingeschaltet hat. Hierbei gibt es vier Gründe, von denen der erkannte in der Variable STATE_PIC_START_REASON eingetragen wird:
- 'powerfail' : Einschalten nach einem Stromausfall.
- 'timer' : Der programmierte Alarm hat das Einschalten verursacht.
- 'remote' : Die Box wurde durch die Fernbedienung eingeschaltet.
- 'reboot' : Es wurde ein Neustart der Box programmiert.
Firmware-Wechsel
Bei einem Firmware-Wechsel wird die Variable STATE_FW_CHANGED auf '1' gesetzt; sonst auf '0'.
Factory-Reset
Wurde über das Rettungs-System ein Factory-Reset ausgelöst, dann und genau dann wird die Variable STATE_FACTORY_RESET auf '1' gesetzt. Die Erkennung erfolgt über die Datei '/var/etc/vdr-ok', die bei einem Factory-Reset automatisch gelöscht wird.
Crash beim vorherigen Boot
Wurde festgetsellt, das der vorherige Boot-Vorgang nicht abgeschlossen wurden, dann und genau dann wird die Variable STATE_CRASHED auf '1' gesetzt.
Weitere Zustände
Neben den vier Ereignissen gibt es noch Informationen aus dem vorherigen Leben der Box, die für den Einschaltmodus berücksichtigt werden:
Vorgegebener Modus
Mit den beiden Kommandos 'halt' und 'reboot' kann der Box ein Modus für den nächsten Systemstart vorgeschlagen werden. Dieser Vorschlag wird über die beiden Variablen STATE_FORCE_MODE und STATE_NEXT_FORCE_MODE abgehandelt.
Mögliche Vorschläge sind:
- 'rescue' : Das Rettungs-Menu soll aktiviert werden.
- 'menu' : Das Start-Menu soll aktiviert werden, ohne das ein weiter Autostart vollzogen wird.
- 'standby' : Der Standby-Modus soll aktiviert werden.
- 'vdr' : Der VDR soll direkt gestartet werden.
VDR Timer
In der Variable STATE_NEXT_VDR_TIMER wird der nächste geplante VDR-Aufnahme-Zeitpunkt gespeichert.
Start-Menu-Modus
Der CONFIG_STARTMENU_MODE legt den Modus für das Erscheinen des Start-Menus im Normalfall fest.
Auswahl des Startmodusses
Mit allen obigen Parametern wird nun der Start-Modus wie folgt festgelegt, wobei erstgenannte Punkte eine höhere Prorität als die weiter unten genannten Punkte haben:
- Bei einem Crash wird das Rettungs-Menu aufgerufen.
- Wurde keine neue Firmware eingespiel und ein Factory-Reset erkannt, dann wird ebenfalsl das Rettungs-Menu aufgerufen.
- Falls STATE_FORCE_MODE gesetzt ist, dann wird die geforderte Aktion ausgeführt.
- Nach einem Firmware-Wechsel wird das Start-Menu auf jeden Fall angezeigt und es erfolgt kein Autostart.
- Bei einem Stromausfall wird der VDR-Aufnahme-Zeitpunkt untersucht. Ist keiner definiert oder liegt dieser mindestens 15 Minuten in der Zukunft, dann wird das System wieder abgeschaltet. Anderenfalls wird der VDR direkt oder mit Zwischenschritt Start-Menu gestartet, wobei das Start-Menu nur dann aktiviert wird, wenn die Timeraufnhame in mehr als 3 Minuten stattfinden soll. Der VDR wird auf jeden Fall gestartet, wenn die Systemzeit ungültig ist.
- In Abhängigkeit von CONFIG_STARTMENU_MODE wird der VDR direkt oder mit Zwischenschritt Start-Menu gestartet.
Kode aus /usr/mgr/mgr
Der folgende Kode aus der Datei /usr/mgr/mgr zeigt die Auswertung der Parameter:
function auto_setup()
{
echo "`date '+%F %T'` MGR/auto: pic=$STATE_PIC_START_REASON, tmode=$STATE_TIMER_START_REASON, crash=$STATE_CRASHED, reset=$STATE_FACTORY_RESET, new-fw=$STATE_FW_CHANGED, force=$STATE_FORCE_MODE" | tee -a /opt/log/boot.log
(( STATE_CRASHED || STATE_FACTORY_RESET && !STATE_FW_CHANGED )) && return $MGR_ST_RESCUEMENU
case "$STATE_FORCE_MODE" in
rescue) return $MGR_ST_RESCUEMENU ;;
menu) return $MGR_ST_STARTMENU ;;
standby) return $MGR_ST_STANDBY ;;
vdr) return $MGR_ST_VDR ;;
lastvdr) return $MGR_ST_LASTVDR ;;
esac
(( STATE_FW_CHANGED )) && return $MGR_ST_STARTMENU
if (( STATE_POWERFAIL ))
then
(( `date +%s` < FW_TIME )) && return $MGR_ST_STARTMENU_VDR
(( ! STATE_NEXT_VDR_TIMER )) && return $MGR_ST_HALTMENU_HALT
(( STATE_NEXT_VDR_TIMER < `date +%s`+180 )) && return $MGR_ST_VDR
(( STATE_NEXT_VDR_TIMER < `date +%s`+900 )) && return $MGR_ST_STARTMENU_VDR
return $MGR_ST_HALTMENU_HALT
fi
[[ $STATE_PIC_START_REASON = timer && $STATE_TIMER_START_REASON = standby ]] \
&& return $MGR_ST_STANDBY
case "$CONFIG_STARTMENU_MODE" in
normal) return $MGR_ST_STARTMENU_VDR ;;
fast) return $MGR_ST_STARTMENU_VDR_FAST ;;
esac
return $MGR_ST_VDR
}
Links zum Thema »VDR Firmware«
- VDR Firmware, Opener-Firmware, VDR Firmware FAQ, Download
- Menu-System
- Wichtige Verzeichnisse
- Parameter
- Wichtige Kommandos

