UNIX Systemstart und Shutdown |
Eine bootende UNIX-Maschine erschlägt den Zuschauer mit Meldungen. Die Hardware wird aufgelistet und initialisiert, die verschiedenen Betriebssystembestandteile melden ihre Vollendung. Während diese Meldungen im Anfang verwirrend wirken, bekommt man bei häufigerer Beobachtung ein Gefühl dafür, welche Systembestandteile wann starten und welche Zusammenhänge existieren. Wenn es dann einmal ein Fehlverhalten gibt, kann man es leicht erkennen und vielleicht sogar die Ursache analysieren.
Der Bootvorgang einer Maschine beginnt damit, dass in einem ROM ein
kleines Programm steht, das die Maschine anweist, den ersten Block
der Platte zu laden und auszuführen. In diesem ersten Block steht
ein etwas umfangreicheres Programm, das bereits in der Lage ist, ein
UNIX Dateisystem zu lesen und so den eigentlichen Betriebssystemkern in den
Speicher zu laden und durchzustarten.
Moderne Computer sind weitgehend konfigurierbar. Eine Maschine soll von der
Platte, von der CD-ROM, aus dem Netz oder gar vom Bandlaufwerk booten.
Diese Information wird in einem RAM abgelegt, das durch einen Akku oder eine
Batterie gesichert wird. Bei Suns Workstations nennen sich die entsprechenden
Bausteine NVRAM. Sie enthalten den Speicher inklusive der Batterie. Wenn deren
Batterie leer ist, vergessen die Maschinen alles,
bis hin zu ihrer Ethernet- und Rechnernummer.
Erst recht wissen sie nicht mehr, von welchem Medium sie booten sollen.
Stellt man erstes Schwächeln beim Booten fest, sollte man genaue Aufzeichnungen
über alle Informationen haben, die bei einem Ausfall der Batterie wichtig
sind. Für weitere Informationen zu diesem Thema gibt es eine FAQ
(Frequently Asked Questions):
Bootprompt
image = /boot/vmlinuz.suse root = /dev/hda5 label = Linux other = /dev/hda1 label = windows table = /dev/hda |
Nach der Erstellung der lilo.conf wird einmal der Befehl lilo aufgerufen, um die Einträge zu übernehmen. Dabei wird eine Liste der Optionen angezeigt. Die mit einem Stern versehene Partition wird dabei automatisch gestartet.
Lilo kann man von MS-DOS oder MS-Windows aus durch den Aufruf von FDISK /MBR wieder entfernen.
Der allererste Prozess ist der Kernel.
Dieser findet sich an wohlbekannter Stelle im Verzeichnisbaum.
Er hat die Prozessnummer 0. Da das Betriebssystem schlecht
gleichzeitig Prozess sein kann, startet er als erstes den Prozess
init, der damit die Prozessnummer 1 erhält.
Dieser liest bei System V die Datei /etc/inittab. Diese enthält
typischerweise die Informationen über das Durchlaufen der Runlevel.
Durchlaufen der Runlevel
| Runlevel | Zustand |
| 0 | Maschine steht (halt) |
| S | Singleuser |
| 1 | Multiuser ohne Netzwerk |
| 2 | Multiuser mit Netzwerk |
| 3 | Multiuser mit Netzwerk und grafischem Login |
| 6 | Reboot |
#! /bin/sh
test -f /usr/bin/unfugd || exit 0
case "$1" in
start)
echo "Starte Unfug-Daemon"
/usr/bin/unfugd
;;
stop)
echo "Stoppe Unfug-Daemon"
kill `cat /var/run/unfugd.pid`
;;
restart)
echo "Restart Unfug"
kill `cat /var/run/unfugd.pid`
/usr/bin/unfugd
;;
*)
echo "usage: $0 start | stop | restart"
exit 1
;;
esac
|
Startskripten sollten sehr sorgfältig erstellt werden. Dabei ist ein Zusammenbruch nicht so tragisch. Falls aber ein Startskript hängen bleibt oder in einer Endlosschleife verharrt, bleibt der Rechner beim Booten stehen. In einer solchen Situation brauchen Sie eine Möglichkeit, den Computer von einem anderen Bootmedium zu starten. Anschließend binden Sie die Platte per mount ein und können dann den Skript löschen oder sogar bearbeiten.
Will man die Datei beim Systemstart hochfahren, muss man zunächst überlegen, in welchem Runlevel sie gestartet werden sollen und dann mit den Links vergleichen, zu welchem Zeitpunkt sie gestartet werden müssen.
cd rc2.d ln -s ../unfug S21unfug ln -s ../unfug K19unfug |
Die Ausgabemeldungen des letzten Bootprozesses werden normalerweise in einer eigenen Datei protokolliert. Unter HP-UX ist das /etc/rc.log, unter Linux /var/log/boot.msg.
{
Description = "system usage accounting";
Provides = ("Accounting");
OrderPreference = "Last";
Messages =
{
start = "Starting accounting";
stop = "Stopping accounting";
};
}
|
Dieser Mechanismus setzt auf dem unter BSD üblichen Startmechanismus mit den rc-Dateien auf.
Während ein Systemadministrator in früheren Jahren die rc-Skripte auf die
Gegebenheiten seines Systems anpasste, wird heute oft mit sehr allgemeinen
rc-Skripten gearbeitet, die ihre Informationen über Konfigurationsdateien
erhalten. Unter BSD finden Sie das in den bereits erwähnten Dateien
rc.config im Verzeichnis /etc/default und /etc.
HP-UX legt diese Konfigurationsdateien ins Verzeichnis
/etc/rc.config.d. Hierin befinden sich dann viele kleine Dateien, die
manchmal nur eine Information enthalten, die in den rc-Skripten direkt
verwendet werden.
Der Befehl zum Herunterfahren einer UNIX Maschine ist shutdown.
Er wird mit den Optionen -h für Abschalten und -r für
Neustarten gegeben. Im Allgemeinen akzeptiert der Befehl auch eine
Zeitverzögerung, in der den angemeldeten Usern eine Meldung gegeben wird,
dass sie sich ausloggen sollen.
Alternativ verwenden einige Systeme die Befehle halt und
reboot. Überall funktioniert auch init 0.
Konfigurationsdateien
S.u.S.E. und rc.config
Die SuSE-Distribution verwendet eine Datei namens /etc/rc.config,
über die Umgebungsvariablen verändert werden, die von den rc-Skripten gelesen
werden. Diese Datei wird vom Administrationstool yast gepflegt,
kann aber auch mit einem normalen Editor bearbeitet werden. Damit von Hand
eingetragene Änderungen darin übernommen werden, muss man anschließend
SuSEconfig aufrufen. Bei Änderungen durch yast erledigt das
Tool diese Aufgabe automatisch.
Herunterfahren: shutdown
root-Rechte erforderlich
Allen diesen Möglichkeiten ist gemeinsam, dass der Administrator root das
Herunterfahren veranlassen muss. Das ist durchaus sinnvoll, da ein
Produktionsserver nicht einfach von jedem heruntergefahren werden darf.
Anders ist die Lage bei Workstations. Da kommt es häufiger mal vor, dass
der Anwender auch seine Maschine herunterfahren muss. Hier kann man mit
sudo
arbeiten oder einen Login einrichten,
der zum Herunterfahren der Maschine führt.
Notwendigkeit
Es gibt nur wenig Gründe, einen UNIX-Server herunterzufahren. Üblicherweise
passiert dies ausschließlich bei der Installation von Hardware, die man nicht
im laufenden Betrieb wechseln kann. Aufgrund einer Konfigurationsänderung ist
ein Neustart im Normalfall nicht erforderlich. Es gibt Fälle, wo ein Neustart
schneller und vielleicht sogar verlässlicher ist, als der reguläre Weg.
Alles bereit zum Sterben?
Terminalanmeldungen kontrollieren
Wenn ein UNIX-Server heruntergefahren wird, ist das keine Privatangelegenheit
des Systemadministrators, sondern kann nur erfolgen, wenn niemand mehr an der
Maschine arbeitet.
Ein einfacher Befehl finger oder who gibt Auskunft, ob
die Terminals alle abgemeldet sind. Auch Anmeldungen über virtuelle Terminals
können so erkannt werden. Virtuelle Terminals sind Netzwerkverbindungen, die
den Charakter von Terminalsitzungen haben. Man erkennt diese daran, dass sie
sich mit /dev/pty-Devices angemeldet haben.
Netzverbindungen kontrollieren
Schwieriger wird es, wenn auf der Maschine echte Client-Server Applikationen
laufen. Hier helfen Befehle wie lsof, der die offenen Dateien anzeigt
oder netstat, der Netzverbindungen anzeigt.
init 1 |
Zurück in den bisherigen Modus kommt man durch Schließen der Shell mit ctrl-D oder durch init 2 bzw. init 3.
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
| Homepage |
(C) Copyright 2002 Arnold Willemer
|