Forum: PC Hard- und Software Linux Programmstart, zum Nicht-starten aus /etc/init.d entfernen?


von debbie (Gast)


Lesenswert?

Bis man Linux einigermassen verstanden hat, vergehen Jahre und dann 
vergisst man wieder alles.. Naja.

Ich möchte auf einer NSLU2 mit Debian 5.03 (Lenny) sshd gegen dropbear 
tauschen. sshd läuft, dropbear wird noch nicht gestartet (weil sshd 
erkannt wurde).

Da ich das Ding über ssh steuere, muss wohl sshd aus den startup 
skripten irgendwie raus, dropbear rein, dann neustart.

Wie geht das mit dem Tausch im einzelnen?

von Klaus W. (mfgkw)


Lesenswert?

NICHT aus /etc/init.d entfernen!

Die Skripte in /etc/init.d können (oder müssen) mit einem Parameter
aufgerufen werden; von sich aus tun sie nichts und stören folglich
auch nicht.

Vielmehr geht der init-Prozess beim Wechsel des run levels in das
Verzeichnis /etc/rc<x>.d (wobei <x> dem alten run level entspricht)
und führt darin in alphabetischer Reihenfolge alles aus, was mit K
beginnt mit dem Parameter "stop" (zum Beenden), anschließend geht
init in das Verzeichnis /etc/rc<x>.d (wobei <x> jetzt dem neuen
run level entspricht) und führt darin alles aus, was mit S beginnt
mit dem Parameter "start".

(bei anderen Linuxen als Debian können /etc/init.d bzw. /etc/rc...
auch etwas anders liegen, aber das Prinzip wird überall gleich sein.)

Der Trick zur einfacheren Verwaltung ist nun der, daß die Skripte
in /etc/rc...d gar keine sind, sondern nur symbolische Links auf die
tatsächlichen Skripte in /etc/init.d.
Um einen weiteren Dienst zu aktivieren, schreibt man einfach in
das entsprechende /etc/rc<x>.d einen symbolischen Link mit dem
Namen S_irgendwas, der auf die passende Datei in /etc/init.d
verweist, und zum Deaktivieren löscht man den Link aus
/etc/rc<x>.d wieder.

Die Zahl hinter K... bzw. S.. dient nur dazu, die Reihenfolge
der Skripte untereinander zu steuern (erst Netzwerk, dann sshd
und so weiter).

Früher hatte ich SuSE-Rechner, da gab es meines Wissens ein
Kommando um so einen symbolischen Link anzulegen, ob es das
unter Debian auch gibt, weiß ich nicht. Ich mache es immer
von Hand, indem ich einfach den Link setze.

Falls man einen Dienst komplett neu einrichten will, für den
es in /etc/init.d noch nichts gibt, dann legt man dort ein
passendes Skript ab, das mit dem Argument "start" halt das
jeweilge Programm anwirft, mit "stop" wieder beendet und
mit "reload" anhält und neu startet, und macht dann wie
beschrieben die Links in den /etc/rc<x>.d, je nachdem, in
welchen run leveln das Ding laufen soll.

Welcher der normale run level ist, der nach dem Hochfahren
angesteuert wird, wenn nichts anderes beim boot loader
angegeben wird, steht übrigens in der /etc/inittab in der
Zeile, die mit initdefault markiert ist, z.B.:
1
id:2:initdefault:
führt bei mir zum default-run level 2.

von Klaus W. (mfgkw)


Lesenswert?

Aber was ich nicht verstehe: wenn man sshd deinstalliert und
dropbear dafür installiert, sollte das die Paketverwaltung
automatisch machen, oder nicht? Die stopppt und startet doch
Dienste normalerweise passend, je nachdem was installiert wurde?

von (prx) A. K. (prx)


Lesenswert?

Die Links in den rcN.d Directories werden mit update-rc.d verwaltet.

Normalerweise werden die automatisch über die debian Paketverwaltung 
eingerichtet, d.h. bei zwei Alternativen fliegt die andere raus.

Es gibt aber Pakete, die trotz vorhandener Links von Haus aus 
deaktiviert sind, weil man sie erst in /etc/defaults/paketname 
konfigurieren muss.

von debbie (Gast)


Lesenswert?


von debbie (Gast)


Lesenswert?

oh, danke für die Antworten. Habe ich irgendwie übersehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.