Inhoudsopgave
Sinds NetBSD 1.5 zijn de initialisatiescripts van het systeem aangepast zodat er rc-scripts gebruikt worden voor het bedienen van diensten. Dit is vergelijkbaar met het initialisatiesysteem dat System V en Linux gebruiken, maar dan zonder runlevels. Dit hoofdstuk biedt een overzicht van het rc-systeem en het configureren van dit systeem op NetBSD.
De opstartbestanden voor het systeem zijn opgeslagen in
/etc, dit zijn:
/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/*
Laten we eerst kijken naar de scripts die de controle over de initialisatie hebben en scripts die hier ondersteuning bij geven. Deze scripts zijn ook gedocumenteerd in rc(8).
Nadat de kernel alle apparaten geïnitialiseerd heeft,
start het gewoonlijk init(8), wat op zijn beurt weer
/etc/rc start.
/etc/rc sorteert de scripts in
/etc/rc.d met behulp van rcorder(8),
en start ze in die volgorde. Lees de rcorder(8)
handleiding voor meer informatie over hoe de volgorde
van /etc/rc.d scripts worden bepaald.
/etc/rc.subr
bevat een aantal functies die door veel
/etc/rc.d/* scripts gebruikt
worden.
Als het systeem afgesloten wordt met shutdown(8),
wordt /etc/rc.shutdown gestart. Dit
script start de scripts in /etc/rc.d in
omgekeerde volgorde (zoals gedefinieerd door rcorder(8)).
Andere scripts buiten de rc.d
directory:
/etc/rc.lkm laadt Loadable Kernel
Modules in het geheugen of verwijdert ze. Zie voor meer
informatie modload(8) en
/etc/rc.d/lkm[123].
/etc/rc.local is bijna het
laatste script dat aangeroepen wordt tijdens het starten
van het systeem. Dit script kan bewerkt worden door
de systeembeheerder om lokale daemons te starten die
niet volgens het rc concept werken.
Veel pakketten die geïnstalleerd zijn met pkgsrc voegen
hun opstartbestanden bijvoorbeeld aan
/usr/pkg/etc/rc.d toe, en de systeembeheerder
kan beslissen of deze diensten aangeschakeld moeten worden,
door ze te kopieeren/linken naar /etc/rc.d,
of door ze aan /etc/rc.local toe te
voegen. Het volgende voorbeeld laat zien hoe de Apache
webserver aan /etc/rc.local toegevoegd
kan worden:
if [ -f /usr/pkg/etc/rc.d/apache ]; then /usr/pkg/etc/rc.d/apache start fi
Er is een centraal configuratiebestand voor opstartscripts,
rc.conf(5): /etc/rc.conf.
/etc/rc.conf laadt de standaardinstellingen
uit /etc/defaults/rc.conf. Dit laatste
bestand dient niet gewijzigd te worden. U kunt een standaardinstelling
door het aan /etc/rc.conf toe te voegen.
U kunt bijvoorbeeld de Secure Shell Daemon op de volgende wijze aanzetten:
#cd /etc; grep ssh defaults/rc.confsshd=NO sshd_flags=""#echo "sshd=YES" >> rc.conf
Of bewerk /etc/rc.conf met uw favoriete editor.
Hetzelfde kan gedaan worden met andere standaardinstellingen die
veranderd moeten worden. Een veelvoorkomende stap na de
installatie van NetBSD is:
#cat /etc/defaults/rc.conf >>/etc/rc.conf#vi /etc/rc.conf
Las op dat u “>>” gebruikt, en niet
“>”, anders vernietigd u de inhoud van
/etc/rc.conf, die belangrijk is voor
het functioneren van het systeem. Nadat u de standaardinstellingen
op deze wijze heeft toegevoegd, kunt u uw wijzigingen aanbrengen
in /etc/rc.conf. Lees de rc.conf(5)
om alle instellingen in detail te leren begrijpen.
Tenslotte kan de /etc/rc.conf.d/ directory
voor instelling gebruikt worden voor scripts die afkomstig zijn
van derde partijen.
De eigenlijke scripts die de diensten bedienen staan in
/etc/rc.d. Als een dienst geactiveerd
of gedeactiveerd is in /etc/rc.conf kan
de staat van de dienst ook veranderd worden vanaf de commandoregel.
De systeembeheerder kan bijvoorbeeld de secure shell deamon starten
met:
#/etc/rc.d/sshd startStarting sshd.
De rc scripts moeten één van de volgende argumenten ontvangen:
start
stop
restart
kill
Stel dat er een nieuw domein is toegevoegd aan de named database, dan kan named herstart worden:
#/etc/rc.d/named restartStopping named. Starting named.
Het wordt complexer wanneer er een serie van instellingen veranderd zijn, bijvoorbeeld als de ipfilter regels van de firewall en de ipnat configuratie zijn aangepast, en de secure shell server een andere vorm van encryptie moet gebruiken:
#cd /etc/rc.d#./ipfilter restart; ./ipnat restart; ./sshd restart
#sh /etc/rc.d/ipfilter restart#sh /etc/rc.d/ipnat restart#sh /etc/rc.d/sshd restart
Het initialisatiesysteem van elk UNIX systeem moet de volgorde
van het starten van diensten bepalen. Op sommige UNIX systemen
wordt dit gedaan door bestanden te nummeren en/of door ze in
aparte runlevel directories te plaatsen (Solaris is bijvoorbeeld
van wildcards als /etc/rc[23].d/S* afhankelijk,
die numeriek gesorteerd worden bij het uitbreiden van de wildcard).
Of de commando's die gestart moeten worden, worden geplaatst in
een enkel monolithisch script (dit is wat oude BSD en NetBSD
versies deden voor de introductie van het rc-systeem). Dit kan
behoorlijk onoverzichtelijk zijn. Op NetBSD wordt de startvolgorde
bepaald door de rc-scripts en hun inhoud. Let op dat NetBSD niet
meerdere runlevels heeft als bijvoorbeeld System V systemen zoals
Solaris, of Linux.
Aan het begin van elke rc script in /etc/rc.d/*,
staan een aantal commentaarregels, die een van de volgende woorden
bevat:
REQUIRE
PROVIDE
BEFORE
KEYWORD
Deze woorden bepalen de afhankelijkheden van een bepaald rc
script en daardoor kan de rcorder naar “boven”
of naar “beneden” afgewerkt worden, afhankelijk
van de situatie. Dit is een voorbeeld uit het
/etc/rc.d/nfsd script:
... PROVIDE: nfsd REQUIRE: mountd . /etc/rc.subr ...
Hier zijn we dat het script de nfsd dienst biedt. Het vereist echter dat mountd reeds gestart is. Het rcorder(8) commando wordt gebruikt tijdens het starten van het systeem om alle rc scripts te lezen, en de correcte volgorde voor het starten van de scripts te bepalen (vandaar de naam van het commando).
Er zijn andere informatiebronnen beschikbaar met betrekking tot het rc.d systeem:
Eén van de ontwerpers van rc.d, Luke Mewburn, heeft een presentatie van het systeem gegeven op USENIX 2001. Het is beschikbaar in PDF formaat.
Will Andrews heeft een Daemonnews artikel geschreven met de naam The NetBSD rc.d System.