init(1M) init(1M)
NAME
init, telinit - Prozeßsteuerung initialisieren
SYNTAX
/sbin/init [0123456SsQqabc]
/sbin/telinit [0123456SsQqabc]
BESCHREIBUNG
init
init ist ein allgemeines Programm zur Prozeßerzeugung. Seine Hauptauf-
gabe ist die Erzeugung von Prozessen aus Daten, die in der Datei
/etc/inittab gespeichert sind [siehe inittab(4)].
Das System befindet sich immer in einem von acht möglichen Betriebszu-
ständen. Ein Betriebszustand ist eine Software-Konfiguration des
Systems, in der nur eine ausgewählte Gruppe von Prozessen existiert.
Die Prozesse, die von init für jeden dieser Betriebszustände erzeugt
werden, sind in der Datei /etc/inittab definiert. Für init gibt es die
folgenden acht Betriebszustände: 0-6 und S oder s (die Betriebszu-
stände S und s sind identisch). Der Betriebszustand ändert sich, wenn
ein dazu berechtigter Benutzer /sbin/init aufruft. Dieses vom Benutzer
erzeugte init sendet Signale an das ursprüngliche init, das vom
Betriebssystem beim Laden des Systems erzeugt wurde. Die Signale über-
mitteln ihm, in welchen Betriebszustand es wechseln soll.
OPTIONEN
0 Schaltet das System ab, so daß die Stromversorgung unterbrochen
werden kann.
1 Bringt das System in Systemverwalter-Modus. Alle Dateisysteme
sind eingehängt. Nur eine kleine Menge von wichtigen Kernprozes-
sen sind noch aktiv. Dieser Modus ist für Verwaltungsaufgaben,
z. B. die Installation von optionalen Dienstprogramm-Paketen,
gedacht. Es kann auf alle Dateien zugegriffen werden. Es sind
keine Benutzer am System angemeldet.
2 Bringt das System in Mehrbenutzer-Modus. Alle Terminalprozesse
und Dämons für eine Mehrbenutzerumgebung werden erzeugt. Diesen
Zustand nennt man häufig den Mehrbenutzer-Betrieb.
3 Startet die RFS-Prozesse (RFS = Remote File Sharing) und Dämons.
Hängt Remote-Ressourcen ein und macht sie bekannt. Der Betriebs-
zustand 3 erweitert den Mehrbenutzer-Modus und wird als RFS-
Zustand bezeichnet.
4 Dient als alternative Konfiguration für eine Mehrbenutzer-Umge-
bung. Diese Operation ist für den Systembetrieb nicht notwendig
und wird daher gewöhnlich nicht benutzt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
init(1M) init(1M)
5 Stoppt das Betriebssystem Reliant UNIX und wechselt zur SASH
(Stand-alone shell) [bei RM600] bzw. in den PROM-Monitor [bei
RM400].
6 Stoppt das Betriebssystem Reliant UNIX und lädt das System neu,
und zwar mit dem Zustand, der im Eintrag initdefault in der Datei
/etc/inittab definiert ist.
a, b, c
Verarbeitet nur diejenigen /etc/inittab-Einträge, bei denen der
Betriebszustand a, b oder c eingestellt ist. Dabei handelt es
sich um Pseudozustände, die für bestimmte Kommandos definiert
werden können, die aber keine Änderung des aktuellen Betriebszu-
stands bewirken.
Q, q Überprüft /etc/inittab nochmals.
S, s Aktiviert den Einbenutzer-Modus. Dadurch wird das Terminal, das
dieses Kommando ausgeführt hat, zur Systemkonsole. Dies ist der
einzige Betriebszustand, für den keine ordnungsgemäß formatierte
Datei /etc/inittab erforderlich ist. Existiert diese Datei nicht,
so kann init standardmäßig nur den Einbenutzer-Modus als zulässi-
gen Betriebszustand verwenden. Ist diese Datei dagegen vorhanden,
sucht init nach Kommandos in /etc/inittab, die zum Einbenutzer-
Betrieb gehören. Wird das System mit S oder s gestartet, werden
keine Dateisysteme für Benutzerdateien eingehängt und nur wich-
tige Kernprozesse werden ausgeführt. Wird das System auf S oder s
hinuntergesetzt, bleiben alle eingehängten Dateisysteme einge-
hängt, und alle von init gestarteten Prozesse, die nur im Mehrbe-
nutzer-Modus ablaufen sollen, werden abgebrochen. Darüber hinaus
wird jeder Prozeß mit einem utmp-Eintrag abgebrochen. Die letzte
Bedingung stellt sicher, daß alle vom SAC (Service Access Con-
troller, Steuerprogramm für den Zugriff auf Dienste) gestarteten
Anschlußüberwachungsprogramme sowie alle von diesen gestarteten
Dienste, einschließlich den ttymon-Anmeldediensten, abgebrochen
werden. Andere Prozesse, die nicht direkt von init gestartet wur-
den, bleiben aktiv. Dazu gehört beispielsweise cron.
Beim Laden des Betriebssystems Reliant UNIX wird init aufgerufen, und
die folgenden Schritte werden ausgeführt. Zuerst sucht init in der
Datei /etc/inittab nach dem Eintrag initdefault [siehe inittab(4)].
Ist dieser vorhanden, benutzt init normalerweise den darin angegebenen
Betriebszustand als anfänglichen Betriebszustand. Existiert aber kein
initdefault-Eintrag in der Datei /etc/inittab, bittet init den Benut-
zer um Eingabe eines Betriebszustands an der virtuellen Systemkonsole.
Gibt dieser nun ein S oder s ein, geht init in den Einbenutzer-Be-
trieb. In diesem Betriebszustand wird die virtuelle Konsole dem Termi-
nal des Benutzers zugewiesen und zum Lesen und Schreiben geöffnet. Das
Kommando /sbin/su wird aufgerufen und auf der physischen Konsole wird
eine Meldung erzeugt, die angibt, wohin die virtuelle Konsole zugewie-
sen wurde. Sie können entweder mit init oder mit telinit dem Kommando
init signalisieren, daß es den Betriebszustand des Systems verändern
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
init(1M) init(1M)
soll. Beachten Sie, daß init nur den Einbenutzer-Betrieb wiederher-
stellt, wenn die Shell (durch ein Dateiende) beendet wurde und die
Datei /etc/inittab nicht existiert.
Gibt aber der Benutzer Werte zwischen 0 und 6 (einschließlich) ein,
aktiviert init den entsprechenden Betriebszustand. Die Betriebszu-
stände 0, 5 und 6 sind reservierte Zustände zum Herunterfahren des
Systems. Die Betriebszustände 2, 3 und 4 stehen als Mehrbenutzer-
Betriebszustände zur Verfügung.
Ist init zum ersten Mal seit dem Einschalten in einen anderen
Betriebszustand als den Einbenutzer-Betrieb gegangen, so sucht es
zuerst in der Datei /etc/inittab nach den Einträgen boot und bootwait
[siehe inittab(4)]. Diese Einträge werden vor jeder weiteren Verarbei-
tung von /etc/inittab ausgeführt, vorausgesetzt, der eingegebene
Betriebszustand entspricht dem Zustand im Eintrag. Auf diese Weise
kann eine spezielle Initialisierung des Betriebssystems, beispiels-
weise das Einhängen von Dateisystemen, stattfinden, bevor Benutzer mit
dem System arbeiten. init durchsucht dann /etc/inittab und führt alle
anderen Einträge aus, die für den gewählten Betriebszustand verarbei-
tet werden müssen.
Um alle Prozesse in /etc/inittab zu erzeugen, liest init alle Einträge
und legt für jeden Eintrag, der neu erzeugt werden sollte, einen Sohn-
prozeß an. Wenn alle in /etc/inittab angegebenen Prozesse erzeugt
sind, wartet init darauf, daß einer seiner Folgeprozesse beendet wird
oder daß ein Stromausfallsignal bzw. ein Signal eines anderen init-
oder telinit-Prozesses den Betriebszustand des Systems ändert. Tritt
eine dieser Bedingungen ein, überprüft init die Datei /etc/inittab
nochmals. Zu der Datei /etc/inittab können nämlich jederzeit neue Ein-
träge hinzugefügt werden; allerdings wartet init mit der Überprüfung
der Datei /etc/inittab immer, bis eine der drei oben genannten Bedin-
gungen auftritt. Wollen Sie dies umgehen, so können Sie das Kommando
init Q oder init q verwenden. Diese aktivieren init, das dann sofort
eine Überprüfung der Datei /etc/inittab durchführt.
Wenn init beim Laden des Systems aktiviert wird oder wenn das System
vom Einbenutzer-Betrieb in einen anderen Betriebszustand wechselt,
setzt init die ioctl(2)-Zustände der virtuellen Konsole auf diejenigen
Zustände, die in der Datei /etc/ioctl.syscon gespeichert sind. init
schreibt immer dann in diese Datei, wenn der Einbenutzer-Betrieb akti-
viert wird.
Wird eine Aufforderung zum Wechseln des Betriebszustands eingegeben,
sendet init ein Warnsignal (SIGTERM) an alle Prozesse, die im Ziel-
Betriebszustand undefiniert sind. init wartet fünf Sekunden, bevor es
diese Prozesse mit dem Abbruchsignal SIGKILL zwangsweise beendet.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
init(1M) init(1M)
Wird init über ein Signal gemeldet, daß einer der von ihm erzeugten
Prozesse beendet wurde, schreibt es dies zusammen mit dem Grund für
die Beendigung in die Datei(en) /var/adm/utmp und /var/adm/wtmp,
sofern vorhanden [siehe who(1)]. In der Datei /var/adm/wtmp wird ein
Protokoll der erzeugten Prozesse aufbewahrt. Kann auf /var nicht zuge-
griffen werden, schreibt init die Informationen in temporäre Dateien
im Dateisystem /stand. Dadurch werden die Informationen gespeichert,
bis wieder auf /var zugegriffen werden kann. (Es gehen also keine
Informationen verloren.)
Erhält init ein powerfail-Signal (SIGPWR), das einen Stromausfall mel-
det, durchsucht es /etc/inittab nach speziellen Einträgen des Typs
powerfail und powerwait. Diese Einträge werden aufgerufen (sofern der
Betriebszustand dies erlaubt), bevor eine weitere Verarbeitung statt-
findet. Auf diese Weise kann init verschiedene Bereinigungs- und Auf-
zeichnungsfunktionen ausführen, während das Betriebssystem abgeschal-
tet ist.
telinit
telinit ist mit /sbin/init verbunden und wird zum Steuern der Aktionen
von init verwendet. Es benötigt ein Argument, das aus einem Zeichen
besteht, und signalisiert init, welche Aktion es ausführen soll.
DIAGNOSE
Stellt init fest, daß es einen Eintrag aus der Datei /etc/inittab mehr
als zehnmal innerhalb von zwei Minuten erzeugt hat, nimmt es an, daß
die Kommandozeile in diesem Eintrag Fehler enthält und gibt eine Feh-
lermeldung auf der Systemkonsole aus. Es erzeugt dann diesen Eintrag
erst wieder nach einer Wartezeit von fünf Minuten oder wenn es ein
Signal eines von einem Benutzer erzeugten init- oder telinit-Kommandos
erhält. Dies verhindert, daß init Systemressourcen unnötig verbraucht,
wenn ein Tippfehler in der Datei inittab vorliegt oder ein Programm
entfernt wurde, auf das in /etc/inittab verwiesen wird.
Beim Starten des Systems kann es vorkommen, daß init nicht zur Eingabe
eines neuen Betriebszustands auffordert, weil beispielsweise die vir-
tuelle Systemkonsole mit einem anderen Gerät als der physischen
Systemkonsole verbunden ist.
HINWEISE
init und telinit dürfen nur von einem dazu berechtigten Benutzer ver-
wendet werden.
init kehrt vom Einbenutzer-Betrieb zurück, ohne daß /var eingehängt
ist. Typischerweise führt init ein Skript der Form /sbin/rcN aus, um
den Betriebszustand N (über /etc/inittab) zu aktivieren. Diese Skripts
führen wiederum Skripts aus, und zwar solche der Form /etc/rcN.d/[KS]*.
/sbin/rcN-Skripts wurden dahingehend geändert, daß sie den Fehlerzu-
stand 100 aus den /etc/rcN.d/[KS]*-Skripts als schwerwiegenden Fehler
erkennen. Sie aktivieren dann den Einbenutzer-Betrieb für das System.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
init(1M) init(1M)
Der Zustand S oder s darf in der Datei /etc/inittab nicht willkürlich
verwendet werden. Beim Ändern dieser Datei empfiehlt es sich, diesen
Zustand nur in der Zeile initdefault einzugeben. Allerdings ist dies
von Installation zu Installation verschieden. Im Einbenutzer-Betrieb
kann mehr ausgeführt werden, indem die Datei /etc/inittab mit korrek-
ten Einträgen aktualisiert wird.
Wird im Eintrag initdefault in der Datei /etc/inittab kein Standardzu-
stand angegeben, so wird der Zustand 0 aktiviert. Daraufhin schaltet
sich das System aus.
Kann beim Laden des Systems die Datei utmp im Dateisystem /var nicht
erzeugt werden, wird eine Datei utmp im Dateisystem /stand erzeugt.
Diese wird dann später in das Dateisystem /var verschoben, wenn dieses
eingehängt ist. Der Systemverwalter kann dies leicht nachvollziehen.
Es ist hierbei völlig gleichgültig, ob das Dateisystem /var beim Laden
des Systems eingehängt ist oder nicht.
Wenn Sie mit einem System arbeiten, bei dem der Kern Argumente beim
Laden des Systems an init (Haupt-init) übergeben darf, so sind die
folgenden Argumente zulässig:
-l # Die Option -l benötigt eine Zahl, die den init-Betriebszu-
stand bezeichnet. Gültig sind hierbei: 123456sS, standardmä-
ßig wird der Einbenutzer-Betrieb aktiviert, falls irgendein
anderer Wert eingegeben wurde.
-s, -S Aktiviert den Einbenutzer-Betrieb.
-a Bittet um Eingabe eines neuen Zustands, wobei der im
initdefault-Eintrag der Datei /etc/inittab definierte
Zustand ignoriert wird.
-n Bevor ein Zustand aktiviert wird, wird eine neue Shell
erzeugt. Wird dies im Einbenutzer-Betrieb verwendet,
geschieht dies weit bevor der Einbenutzer-Betrieb aufgerufen
wird. Hiermit kann der Systemverwalter Korrekturen vorneh-
men.
-x # Dies umgeht den Zustand der Fehlersuche. init muß Einträge
an /etc/debug anhängen. An diese Datei hängt init immer Ein-
träge an. Sie wird von init nie gelöscht. Diese Datei sollte
gelöscht werden, sobald die Fehler bei init beseitigt sind
oder nachdem Einträge in /etc/inittab geändert wurden.
-v # Dies definiert INITVERBOSE=1 in einer globalen Umgebung für
Sohnprozesse von init.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
init(1M) init(1M)
DATEIEN
/etc/inittab
/var/adm/utmp
/var/adm/wtmp
/etc/ioctl.syscon
/dev/console
SIEHE AUCH
login(1), sh(1), stty(1), who(1), shutdown(1M), ttymon(1M), kill(2),
inittab(4), utmp(4), utmpx(4), termio(7).
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98