NetBSD Initialisierung und Startup Kontrolle

Die Initialisierung des Basissystems wurde in NetBSD 1.5 leicht geändert und nutzt nun rc scripts um die verschiedenen Services zu kontrollieren. Dieses Dokument liefert einen Überblick der rc Konfiguration unter NetBSD 1.5 (und später).

Die rc.d Konfiguration (zurück)

Die rc Dateien des Systems liegen in /etc und sind:

/etc/rc
/etc/rc.conf
/etc/rc.d/*
/etc/rc.lkm
/etc/rc.local
/etc/rc.shutdown
/etc/rc.subr
/etc/defaults/*
/etc/rc.conf.d/*

Wichtige Scripts mit Basis-Funktionalität:

  • /etc/rc - führt die Scripts in /etc/rc.d aus
  • /etc/rc.subr - enthält gemeinsame Funktionen der rc Scripts
  • /etc/shutdown - führt die Scripts in /etc/rc.d in umgekehrter Reihenfolge aus

Weitere Scripts ausserhalb des rc.d Verzeichnisses:

  • /etc/rc.lkm - verwaltet Loadable Kernel Moduls
  • /etc/rc.local - das (nahezu) letzte Script in der Bootsequenz, Systemeigene Daemons können hierdurch gestartet werden

Hier ein Beispiel wie der Apache Web Server in /etc/rc.local gestartet wird:

if [ -f /usr/pkg/etc/rc.d/apache ]; then
       /usr/pkg/etc/rc.d/apache start
fi

Im /etc/defaults Verzeichnis befinden sich die standardgemässen Einstellungen für NetBSD -- diese sollten nicht geändert werden. Die einzige Datei von Interesse in diesem Zusammenhang ist rc.conf: sie beinhaltet die Standard rc Konfiguration des NetBSD Systems. Um eine dieser Einstellungen zu überschreiben, kann sie in /etc/rc.conf geändert werden. Sollten Sie z.B. den Secure Shell Daemon starten wollen, sähe dies so aus:

# cd /etc; grep ssh defaults/rc.conf
sshd=NO                 sshd_flags=""
# echo "sshd=YES" >> rc.conf

Natürlich können Sie die Datei auch mit Ihrem bevorzugten Editor bearbeiten um diese und andere Änderungen vorzunehmen.

Wahlweise können Sie rc.conf auch auf diese Weise erstellen:

# cd /etc/defaults
# cat rc.conf >> ../rc.conf

Anschliessend können Sie alle Einstellungen, die Sie nicht benötigen, dort entfernen.

Des Weiteren kann das /etc/rc.conf.d/ Verzeichnis auch für Scripts weiterer Anbeiter verwendet werden.

Die rc.d Scripts (zurück)

Die eigentlichen Scripts, welche die verschiedenen Services kontrollieren befinden sich in /etc/rc.d. Im Folgenden finden Sie alle rc Scripts am Beispiel von NetBSD 1.5:
DAEMON
LOGIN
NETWORK
SERVERS
accounting
amd
apmd
bootconf.sh
bootparams
ccd
cleartmp
cron
dhclient
dhcpd
dhcrelay
dmesg
fsck
gated
inetd
ipfilter
ipmon
ipnat
ipsec
kdc
ldconfig
lkm1
lkm2
lkm3
local
lpd
mopd
motd
mountall
mountcritlocal
mountcritremote
mountd
mrouted
named
network
nfsd
nfslocking
ntpd
ntpdate
postfix
ppp
pwcheck
quota
raidframe
rarpd
rbootd
root
route6d
routed
rpcbind
rtadvd
rtsold
rwho
savecore
screenblank
securelevel
sendmail
sshd
swap1
swap2
sysctl
sysdb
syslogd
timed
ttys
virecover
wscons
xdm
xfs
ypbind
yppasswdd
ypserv

Wenn ein Script in /etc/rc.conf aktiviert wurde, kann es auch direkt von der Kommandozeile gestartet werden, so zum Beispiel wenn der Administrator die Secure Shell starten will:

# /etc/rc.d/sshd start
Starting sshd.

Die rc scripts akzeptieren folgende Argumente:

  • start
  • stop
  • kill
  • restart

Wenn zum Beispiel ein neuer Eintrag in die named Datenbank eingefügt wurde, kann named wie folgt neu gestartet werden:

# /etc/rc.d/named restart
Stopping named.
Starting named.

Ein etwas komplexeres Beispiel wäre, wenn die ipfilter Regeln eines Firewalls sowie die ipnat Konfiguration geändert wurden und der Secure Shell Server den Verschlüsselungsalgorithmus gewechselt hat:

# cd /etc/rc.d
# ./ipfilter restart; ./ipnat restart; ./sshd restart

Wie rcorder und die rc Scripts zusammenarbeiten (zurück)

Nach dem System Manager's Manual ist rcorder "entwickelt, um eine Abhängigkeits-Ordnung voneinander abhängiger Dateien auszudrucken." Im Grunde ermittelt es die Reihenfolge der Ausführung. Unter einigen Unix Systemen wird dies durch eine Numerierung der Dateien oder durch bestimmte sog. run level Verzeichnisse erreicht. Dies wird leicht unübersichtlich. Unter NetBSD wird dies durch explizites Erwähnen der Abhänigkeiten und der gelieferten Services in jedem rc Script erreicht.

Ein rc Script enthält daher eine Reihe der folgenden Schlüsselwörter:

  • REQUIRE
  • PROVIDE
  • BEFORE
  • KEYWORD

Diese bestimmen die Abhängigkeiten der entsprechenden rc Scripts wodurch rcorder sich leicht entweder "hoch" oder "herunter", entsprechend der Situation, arbeiten kann. Hier ein Beispiel des nfsd rc Scripts:

. . .
# PROVIDE: nfsd
# REQUIRE: mountd

. /etc/rc.subr         
. . .

Der nfsd Service wird durch dieses Script angeboten (PROVIDE), doch es benötigt (REQUIRE) den mountd Service.

Links (zurück)

  • Einer der Hauptverantwortlichen Entwickler der rc.d Implementation in NetBSD ist Luke Mewburn. Auf der USENIX 2001 Konferenz gab Luke eine hervorragende Präsentation des rc.d Systems. Diese kann von Luke's Webseite im PDF Format heruntergeladen werden.
  • Will Andrews' DaemonNews Artikel über NetBSD's rc.d System

Zusammenfassung (zurück)

Die neue rc Technik erlaubt es, Services einfach und elegant zu kontrollieren. Das erneute Starten eines Daemons erfordert nun nicht mehr ein kill -HUP oder Herumtüfteleien mit /var/run Dateien.

Home page
Zurück zu Dokumentation

(Ihre Meinung) $NetBSD: index.html,v 1.10 2005/09/28 17:24:43 mishka Exp $
Copyright © 1994-2003 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.