% master: inittab.tex % Befehle v0.3 % 2011-05-26 (Rx) \section{/etc/inittab} %--------------------- Nach dem Kernelstart wird versucht das Programm init zu starten. Dabei werden nacheinander die Verzeichnisse /etc/, /bin/ und /sbin/ nach init abgesucht. Kann init /dev/console nicht öffnen wird im Einzelbenutzerbetrieb (Single User Mode) gestartet. Beim LILO-Bootpromt kann init=/bin/sh angegeben werden um die Shell anstelle von init zu laden. Das Programm init liest die Datei /etc/inittab und wird durch die Datei das System konfigurieren. /etc/inittab wird vom Kommando init Zeile für Zeile abgearbeitet. In jeder Zeile seht jeweils eine Anweisung. Jede Zeile wird durch Doppelpunkte unterteilt. Der Aufbau sieht wie folgt aus: \begin{verbatim} Terminal:Termcapeintrag:Gettykommando Simpleinit von Peter Orbaek mit Erweiterung von Werner Almesberger \end{verbatim} \subsection{Terminal} %-------------------- Bezeichnet das Terminal (tty1, tty2, ttyS0 ...) \subsection{Termcapeintrag} %-------------------------- Wird in die TERM Variable der Shell geschrieben und sollte mit einem Eintrag in der Datei /etc/termcap übereinstimmen. \subsection{Gettykommando} %------------------------- Pfad und Optionen zum Getty-Kommando \# Beispiel einer inittab für simpleinit \# Format: Terminal:Termcapeintrag:Gettykommando tty1:linux:/sbin/getty 9600 tty1 tty2:console:/sbin/getty 9600 tty2 tty5:con100x40:/sbin/getty 9600 tty5 ttyS1:vt102:/sbin/getty 9600 ttyS1 \begin{verbatim} Kürzel:Arbeitsstufen:Modus:Kommando Sysvinit von Mike Jagdis und Miquel van Smoorenburg \end{verbatim} \subsection{Kürzel} %------------------- Jede Aktion muß mit einem eindeutigen (maximal vierstelligen, a.out oder Libraries\textless5.2.18 maximal zweistelligen) Kürzel versehen werden, das bei Einträgen in Logfiles und bei Fehlermeldungen ausgegeben wird. \subsection{Arbeitsstufen} %------------------------- Es werden hier die Arbeitsstufen (Runlevel) eingetragen. Zulässige Arbeitsstufen sind 0 - 9 und s. Es können auch die Pseudoarbeitsstufen(ondemand) a, b, c und q für einmalig auszuführende Kommandos verwendet werden. Es wird ohne Groß und Kleinschreibung bezeichnet. In einer Zeile können bis zu 11 Runlevel zugeordnet werden. Wenn das Feld für den Runlevel leer ist, wird die Aktion bei jedem Moduswechsel ausgeführt. \begin{verbatim} 0 Systemhalt S Einzelbenutzerbetrieb (Single User Mode) 1 Einzelbenutzerbetrieb (Single User Mode) 2 Lokaler Mehrbenutzerbetrieb ohne entferntes Netzwerk (Local multiuser without remote network) 3 Voller Mehrbenutzerbetrieb mit Netzwerk (Full multiuser with network) 4 Frei (Not used) 5 Voller Mehrbenutzerbetrieb mit Netzwerk und KDM, GDM oder XDM (Full multiuser with network and xdm) 6 Systemneustart (System reboot) Q Quit zum Neueinlesen der inittab \end{verbatim} \subsection{Modus} %----------------- Gibt an wie das Kommando im letzten Feld ausgeführt werden soll. \begin{verbatim} initdefault Bestimmt den Runlevel beim Systemstart. sysinit Wird einmal nach dem Kernelstart ausgeführt. bootwait Wird einmal ausgefürt, wenn in einem Mehrbenutzerbetrieb gestartet wird und wartet bis das Kommando beendet ist. boot Wie bootwait nur das nicht gewartet wird. respawn Überwacht das laufende Kommando und startet es neu, wenn es beendet wurde. Wird es in zwei Minuten 10 mal neu gestartet, setzt init das Kommando für fünf Minuten aus. ondemand Wie respawn, um mit Buchstaben gekennzeichnete Level einzelne Kommandos mit telinit zu starten. wait Wartet bis das Kommando beendet ist. once Wird einmal ausgefürt, es wird nicht gewartet. off Wenn das Kommando läuft, wird es angehalten. ctrlaltdel Kommando (Signal SIGINT, [Strg]+[Alt]+[Entf]) z.B. Rebooten des Systems. kbrequest Kommando wird ausgeführt, wenn das Signal SIGWINCH [Alt]+[Pfeil hoch] von der Tastatur kommt. powerwait Wenn init sich in einem passenden Runlevel befindet, das Signal SIGPWR erhält oder über Pipeline /dev/initctrl den entsprechenden Befehl erhält und wartet auf Beendigung des Kommandows. Das Signal kann mit Hilfe eines Dämons von einer USV erzeugt werden. powerfail Wie powerwait wartet jedoch nicht. powerfailnow Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das Wort Low enthalten. So kann das APM eines Notebooks mit Hilfe eines Dämons das System herrunterfahren. powerokwait Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das Wort OK enthalten. Auf diese weise kann das System in den normalen Zustand gebracht werden, nachdem die Stromversorgung wieder hergestellt ist. \end{verbatim} \subsection{Kommando} %-------------------- Pfad und Optionen zum Kommando, wird durch die Bourne-Again-Shell abgearbeitet. Bei jedem Kommandostart wird versucht die Datei /etc/initscript abzuarbeiten, die dann das Kommando startet. \begin{verbatim} # Beispiel einer inittab für sysvinit # Format: Kürzel:Arbeitsstufen:Modus:Kommando # Bestimmt den Runlevel beim Systemstart id:5:initdefault: # Erstes Script, wenn nicht im Notfallsystem (-b) gestartet wird. si::bootwait:/etc/init.d/boot # /etc/init.d/rc übernimmt die Runlevel Behandlung l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 #l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Bestimmt den Einzelbenutzerbetrieb (Single User Mode) ls:S:wait:/etc/init.d/rc S ~~:S:respawn:/sbin/sulogin # Aktion bei Signal SIGINT, [Strg]+[Alt]+[Entf] ca::ctrlaltdel:/sbin/shutdown -r -t 4 now # Aktion bei Signal SIGWINCH [Alt]+[Pfeil hoch] kb::kbrequest:/bin/echo "'Keyboard Request -- edit /etc/inittab to let this work."' # Aktion bei Stormausfall und Wiederherstellung pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now #pn::powerfail:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # getty-Programme für die normalen Runlevels 1:2345:respawn:/sbin/mingetty --noclear tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 #S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102 \end{verbatim}