Kapitel 7. Systemadministration
Zurück | 7.2 Init-Skripte | Weiter

## 7.2 Init-Skripte

Nach dem Laden des Linux-Kernels wird als erstes Programm überhaupt das Programm `init` gestartet. Dieses Programm startet alle weiteren Programme; welche dies sind, wird über die Skripte im Verzeichnis `/etc/init.d/`, aus dem Paket `sysv-rc`, bestimmt. Je nach gewünschtem Runlevel des Systems zeigen Links auf die Skripte in diesem Verzeichnis. Das Anlegen und Löschen dieser Links wird bei der Installation der jeweiligen Dienste automatisch vorgenommen. Ein installierter Dienst wird auf einem Debian-System immer auch gestartet. Natürlich können Links von Hand hinzugefügt oder entfernt werden, aber auch für diese Arbeiten am System stellt Debian einige Werkzeuge zur Verfügung.

### 7.2.1 rcconf

`rcconf` ist ein einfaches Werkzeug, mit dem einzelne Dienste aus den Init-Skripten aktiviert oder deaktiviert werden können. Es ist mit `rcconf` nicht möglich, den Runlevel eines Dienstes zu bestimmen.

Abbildung 7.1. rcconf

Leider werden bei einer Aktualisierung eines Paketes alle Links auf die Skripte wieder hergestellt. Dies bedeutet auch, dass mittels `rcconf` deaktivierte Dienste nach einem Update der Software wieder aktiviert werden.

### 7.2.2 `update-rc.d`

Detailliertere Einstellmöglichkeiten bietet `update-rc.d`. Zunächst sollte `update-rc.d` in jedem Fall mit der Option `-n` aufgerufen werden; diese zeigt lediglich an, welche Aktionen durchgeführt werden sollen, lässt die entsprechenden Links aber unangetastet.

    usage: update-rc.d [-n] [-f] <basename> remove
          update-rc.d [-n] <basename> defaults [NN | sNN kNN]
          update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
                        -n: not really
                        -f: force

Grundsätzlich ist natürlich immer der Name des Pakets anzugeben, dessen Init-Skripte angepasst werden sollen. Bei Verwendung der Option `remove` werden alle Links auf das entsprechende Skript entfernt. Hierbei prüft `update-rc.d`, ob das Skript bereits entfernt wurde. Ist dies nicht der Fall, so bricht `update-rc.d` ab. Mit der Option `-f` kann erzwungen werden, dass die Links auch bei Vorhandensein eines Skriptes gelöscht werden.

Mit den Optionen `start`, `stop` bzw. `defaults` werden die notwendigen Links angelegt, gelöscht bzw. wiederhergestellt. Werden zusätzlich ein oder mehrere Runlevel angegeben, so können die Links entsprechend den Wünschen des Systemadministrators angepasst werden.

Leider werden bei einer Aktualisierung eines Paketes alle Links auf die Skripte wieder hergestellt. Dies bedeutet auch, dass mittels `update-rc.d` deaktivierte Dienste nach einem Update der Software wieder aktiviert werden.

### 7.2.3 `file-rc`

Als Alternative zu den System-V-Init-Skripten steht das Paket `file-rc` zur Verfügung. Bei diesem Paket wird die Konfiguration des Systemstarts zentral in einer einzelnen Datei verwaltet. Natürlich kann nur ein Paket den Systemstart steuern, so dass bei der Installation dieser für das System sehr essenziellen Funktionen eine deutliche Warnung ausgegeben wird.

    wasabi:~# apt-get install file-rc
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut... Fertig
    Die folgenden Pakete werden ENTFERNT:
      sysv-rc
    Die folgenden NEUEN Pakete werden installiert:
      file-rc
    WARNUNG: Die folgenden essenziellen Pakete werden entfernt.
    Die sollte NICHT geschehen, wenn Sie nicht genau wissen, was Sie tun!
      sysv-rc (wegen sysvinit)
    0 aktualisiert, 1 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
    Es mÎssen 36,2kB Archive geholt werden.
    Nach dem Auspacken werden 4096B Plattenplatz freigegeben sein.
    Sie sind im Begriff, etwas potenziell Schädliches zu tun.
    Zum Fortfahren geben Sie bitte ,,Ja, tu was ich sage!" ein.
     ?] Ja, tu was ich sage!
    Hole:1 http://ftp.de.debian.org sarge/main file-rc 0.8.5 [36,2kB]
    Es wurden 36,2kB in 0s geholt (49,9kB/s)
    dpkg: sysv-rc: Abhängigkeitsproblem, aber lösche es auf Anfrage dennoch:
     sysvinit hängt ab von sysv-rc (>= 2.85-2) | file-rc (>> 0.7.0); aber:
      Paket sysv-rc soll gelöscht werden.
      Paket file-rc ist nicht installiert.
    (Lese Datenbank ... 43720 Dateien und Verzeichnisse sind derzeit installiert.)
    Entferne sysv-rc ...
    Wähle vormals abgewähltes Paket file-rc.
    (Lese Datenbank ... 43703 Dateien und Verzeichnisse sind derzeit installiert.)
    Entpacke file-rc (aus .../archives/file-rc_0.8.5_all.deb) ...
    Richte file-rc ein (0.8.5) ...

    wasabi:~#

`file-rc` vereinheitlicht den Zugriff auf die Init-Skripte der einzelnen Dienste, indem alle (bisher von `sysv-rc` verwendeten) symbolischen Links entfernt werden und die komplette Verwaltung über die Datei `/etc/runlevel.conf` erfolgt.

    # This file was automatically generated by /usr/share/file-rc/rclink2file.sh.
    # You can use your favourite editor or update-rc.d(8) to modify it.
    # Read runlevel.conf(5) man page for more information about this file.
    #
    # Format:
    # <sort> <off-> <on-levels>     <command>
    01      0,1,6   -               /etc/init.d/gdm
    02      -       S               /etc/init.d/mountvirtfs
    05      -       1               /etc/init.d/single
    05      -       S               /etc/init.d/bootlogd
    05      -       S               /etc/init.d/initrd-tools.sh
    05      -       S               /etc/init.d/keymap.sh
    10      -       2,3,4,5         /etc/init.d/sysklogd
    10      -       S               /etc/init.d/checkroot.sh
    11      0,1,6   -               /etc/init.d/cron
    11      -       2,3,4,5         /etc/init.d/klogd
    14      -       2,3,4,5         /etc/init.d/ppp
    18      -       2,3,4,5         /etc/init.d/portmap
    18      -       S               /etc/init.d/hwclockfirst.sh
    19      0,6     -               /etc/init.d/setserial
    20      0,1,6   2,3,4,5         /etc/init.d/exim4
    20      0,1,6   2,3,4,5         /etc/init.d/fam
    20      0,1,6   2,3,4,5         /etc/init.d/inetd
    20      0,1,6   2,3,4,5         /etc/init.d/lpd
    20      0,1,6   2,3,4,5         /etc/init.d/makedev
    20      0,1,6   2,3,4,5         /etc/init.d/ssh
    20      -       0,6             /etc/init.d/sendsigs
    20      -       S               /etc/init.d/modutils
    21      -       2,3,4,5         /etc/init.d/nfs-common
    25      0,6     -               /etc/init.d/hwclock.sh
    30      -       0,6             /etc/init.d/urandom
    30      0,6     S               /etc/init.d/etc-setserial
    30      -       S               /etc/init.d/checkfs.sh
    30      -       S               /etc/init.d/procps.sh
    31      -       0,6             /etc/init.d/umountnfs.sh
    32      -       0,6             /etc/init.d/portmap
    35      -       0,6             /etc/init.d/networking
    35      -       S               /etc/init.d/mountall.sh
    36      -       S               /etc/init.d/discover
    36      -       S               /etc/init.d/mountvirtfs
    38      -       S               /etc/init.d/pppd-dns
    39      -       S               /etc/init.d/dns-clean
    39      -       S               /etc/init.d/ifupdown
    40      -       0,6             /etc/init.d/umountfs
    40      -       S               /etc/init.d/hostname.sh
    40      -       S               /etc/init.d/hotplug
    40      -       S               /etc/init.d/networking
    43      -       S               /etc/init.d/portmap
    45      -       S               /etc/init.d/mountnfs.sh
    46      -       S               /etc/init.d/setserial
    48      -       S               /etc/init.d/console-screen.sh
    50      -       S               /etc/init.d/hwclock.sh
    55      -       S               /etc/init.d/bootmisc.sh
    55      -       S               /etc/init.d/urandom
    70      -       S               /etc/init.d/nviboot
    70      -       S               /etc/init.d/screen-cleanup
    70      -       S               /etc/init.d/xfree86-common
    79      0,1,6   -               /etc/init.d/nfs-common
    81      1       -               /etc/init.d/portmap
    86      0,1,6   -               /etc/init.d/ppp
    89      0,1,6   2,3,4,5         /etc/init.d/atd
    89      0,1,6   -               /etc/init.d/klogd
    89      0,6     -               /etc/init.d/hotplug
    89      -       2,3,4,5         /etc/init.d/cron
    90      0,1,6   -               /etc/init.d/sysklogd
    90      -       0               /etc/init.d/halt
    90      -       6               /etc/init.d/reboot
    99      -       2,3,4,5         /etc/init.d/gdm
    99      -       2,3,4,5         /etc/init.d/rmnologin
    99      -       2,3,4,5         /etc/init.d/stop-bootlogd
    # THE LAST LINE IS NEVER READ!

Zurück | Nach oben | Weiter
Kapitel 7. Systemadministration | Zum Anfang | 7.3 Alternativen (`update-alternatives`)

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).