← Back to team overview

sslug-teknik team mailing list archive

Re: Ingen lyd efter ny kerne

 

Steffen wrote:
Den Fri, 09 Apr 2004 20:56:04 +0200. skrev Jon Svejgaard:


g prop modprobe-kommandoerne ind i det; sørg for at scriptet bliver kørt under opstart af systemet. Kig på scriptene i etc/rc3.d for at få inspiration.


Hvordan sørger jeg for at scriptet bliver kørt ved opstart?
*Minikursus i opstarts-(og stop-)scripts for RedHat m.fl.:*

I /etc/init.d (så vidt jeg husker) ligger der master scripts for opstarts-handlinger. Disse scripts linkes til forskellige directories i /etc. Disse directories hedder rc<runlevel>.d, således at til runlevel 3 findes der et directory, som hedder /etc/rc3.d.

Lave du nu et symbolsk link fra et script i /etc/init.d til /etc/rc3.d og kalder linket SxxNoget (hvor xx er et nummer,af hensyn til rækkefølgen, tingene skal ske i), vil systemet udføre disse SxxScripts ved skift til det pågældende runlevel efter konventionen, at der udføres kommandoen "/etc/rcy.d/SxxScript start", idet konventionen også er, at et sådant script kan tage parametrene "start" og "stop" og reagere intelligent på dem, således at man kan bruge det samme script til start hhv. stop af en service. Alle scripts, som hedder noget med KxxNavn vil blive brugt som "stop-scripts" i forbindelse med skift af runlevel. Det er derfor, der i etc/rc0.d er en lang række "KxxSsripts", eftersom runlevel 0 jo er ensbetydende med nedlukning af maskinen, hvor alle servces skal bringes til standsning...

Skift af runlevel sker forresten med kommanoden "telinit level" hvor "level" kan være 0 for nedlukning, 6 for genstart, og 2,3,4 eller andet for normal "produktionslevel". Der er typisk et level for multiuser mode (2 eller 3) og for multiuser med X-Window aktiveret (4,5).

DVS du laver et script som du lægger i /etc/init.d (eller hvad det nu hedder), som ser således ud:

<script>
#!/bin/bash
# modprobe script
case $1 in
start)
	modprobe modul1
	modprobe modul2
	......
	;;
stop) ;; #ingenting, moduler stoppes ikke
esac
</script>
Scriptet skal være eksekverbart (chmod 755).

derefter laver du et symbolsk link til /etc/rcx.d, hvor "x" er det runlevel, i hvilket du gerne vil bruge de pågældende moduler; det symbolske link kalder du f.eks. SyyMymodules, hvor "yy" er et tal, som får scriptet til at glide ind på en plads, så det bliver eksekveret EFTER andre scripts, som er en forudsætning for at scriptet kan fungere, og FØR andre scripts, som det kan tænkes at være en forudsætning for.

Det er lidt nemmere at overskue, hvis man kigger i /etc/rcx.d og ser hvilke scripts, som ligger dér.

Lidt snusen rundt kombineret med lidt tankevirksomhed vil gøre underværker for forståelsen af principperne i det; forresten kaldes metoden "SYSVinit" efter UNIX System V (5).

Håber det gav lidt hjælp; ellers spørg igen.

MVH

Jón



Follow ups

References