Das Bootkonzept eines Unix-Systems (mit System-V Init) kennt Services
(eigentlich nur Programmaufrufe), die in einer festgelegten Reihenfolge
gestartet oder gestoppt werden. Die Services werden in Runlevels
zusammengefasst, um schnell von einer Konfiguration zur
nächsten zu wechseln.
Die Reihenfolge wird dabei durch Nummerierung festgelegt; eine
Abhängigkeit zwischen den Diensten ist damit nicht explizit vorhanden.
Die Runlevels werden dabei (typerweise) durch setzen von Links in einem
speziellen Verzeichnis definiert, bei der auch die Start- und Stop-Nummer
vergeben wird.
Beim Wechsel des Runlevels werden dann einfach alle Scripte in diesem
Verzeichnis der Reihe nach (entsprechend ihrer Nummer) gestartet, wenn
sie im alten Runlevelverzeichnis nicht vorhanden waren - genauso werden
nicht mehr vorhandene Scripte gestoppt.
- Setzen der Links ist umständlich, ob man die richtige Nummer trifft ist
Zufall (vor allem für Fremdpakete),
für einen neuen Dienst muss man 2 Links pro Runlevel setzen.
- Abhängigkeiten sind nur implizit (durch Nummern) vorhanden und daher
nicht mehr ersichtlich
- Abhängigkeiten sind redundant: Start- und Stopnummer wird einzeln
vergeben.
- Neustart eines Dienstes erfordert entweder exaktes Wissen oder Reboot.
(da nicht bekannt ist, welche abhängigen Services neu gestartet
werden müssen).
- Das stoppen eines Dienstes ist nicht möglich wenn abhängige Dienste
gestartet sind.
- Änderung im laufenden System ist schwierig.
Bsp: wir sind im Runlevel 2, konfigurieren X und starten xdm manuell.
ein
init 3
startet xdm erneut.
- Schlechte Diagnose: Fehlermeldungen rauschen nur durch, booten
man direkt in xdm, kann man nichtmal zurückblättern.
- wirrer Startbildschirm
- Fehler beim Start eines Dienstes werden nicht berücksichtigt, abhängige
Dienste werden trotzdem gestartet.
- Update: Wurden manuell Start/Stop-Nummern geändert, macht das nächste
Update alles zunichte oder Links sind doppelt gesetzt.
Siehe auch
Features von F-Init