Startreihenfolge der Init Scripts beeinflussen

  • Hi,
    Ich habe in /etc/init.d einige Scripte drin die den VDR starten und ein paar andere Dinge.


    Via yast kann ich nun komfortabel im Runlevel Editor den VDR beim Systemstart starten lassen.
    Die anderen Dinge sollten aber vor dem VDR starten, kann ich einem Script eine priorität geben ?

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Ahoi,


    die Priorität bzw. Reihenfolge legst Du in init-script selbst fest.
    Zwar geschieht das im Block "INIT-INFO" der zwar scheinbar auskommentiert ist (beim Ausführen des Skripts durch die Shell also ignoriert wird), von chkconfig bzw. insserv aber trotzdem ausgewertet wird:


    Das war zB. das start-script für smart. (provides: smartd), welches erst gestartet werden darf, nachdem syslog und remote_fs geladen sind (required-start: $syslog, $remote_fs).
    Ausserdem wird mit dem Start auch gewartet, bis sendmail aktiv ist, sofern es überhaupt gestartet wird. (Should-Start: sendmail).


    Für Deine Zwecke ist es jetzt wohl am einfachsten, einen Dienst zu suchen, der möglichst spät dran kommt, und diesen dann als Required-Start zu verwenden.


    Dazu wechselst Du ins Verzeichnis /etc/init.d/rc5.d (oder rc3.d, je nachdem, in wleches runlevel Du normalerweise bootest) und machst dort ein

    Code
    1. ls S*


    Du siehst dann haufenweise symbolische Links auf diverse init-scripts, beginnend mit Sxx, wobei xx Ziffern von 0-9 sind.
    Diese Scripts werden genau in alphabetischer Reihe abgearbeitet, also erst S01a... dann S01b... dann S02a... und irgendwann dann S99zzz...
    Nun könntest Du natürlich einfach per Hand eine entsprechende Nummer vor Dein script setzen, eleganter ist es aber, das über die Init-Info zu regeln, das überlebt dann auch Updates und sonstige Schweinereien.


    Bei mir ist ein sehr spätes script S15smartd (die Nummern können bei Dir durchaus anders sein, smartd ist bei Dir möglicherweise auch gar nicht aktiv), ich würde also dieses verwenden, Du suchst Dir eines mit einer schön hohen Nummer hinter dem "S".
    Nun sehe ich noch nach, was in diesem unter "provides" steht:

    Code
    1. grep Provides S15smartd


    da kommt dann etwas raus wie zB

    Code
    1. # Provides: smartd


    Und genau das fügst Du dann in Deinem vdr-init-script als Required-Start ein:

    Code
    1. # Required-Start: smartd


    Wenn Du nun noch mit Yast (oder auch zu Fuss per chkconfig oder insserv) den Autostart Deines vdr-scriptes einmal deaktivierst und wieder aktivierst, dann sollte es in der Reihenfolge hinter smartd drankommen.


    Zu überprüfen wieder mit ls S* im Verzeichnis /et/init.d/rc3.d (oder rc5.d).


    HTH,


    bellofant :D

    :vdr2 @openSUSE 12.3: Core i3-2120T / 8 GB / 40GB SSD + 2*1TB HDD (RAID 1) / TT S2-6400 / VDR 2.0.3 + div. PlugIns

  • Hallo, bellofant


    Das hatte ich heute Nachmittag selbst rausgefunden, wollte es gerade schreiben..


    trotzdem Danke.


    Außerdem war deine Erklärung besser als das was ich im Netz gefunden habe.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber