update-rc.d - runlevel - Reihenfolge

Begonnen von kud, 05 April 2013, 16:44:06

Vorheriges Thema - Nächstes Thema

kud

Wer von den Spezis kann was zum dem Startscript in der init.d bzw. zu update-rc.d fhem defaults, startinvoke-rc.d fhem start sagen.
Mein FHEM startet nur noch von Hand;-((
Möchte auch, dass FHEM später als zB. Ramlog startet.

Vielen Dank.





kud

Habe dann selbst noch ein wenig geforscht:

Eigentliche sollte ein :

update-rc.d -f fhem remove

und
update-rc.d fhem start 99 2 3 4 5 stop 01 0 1 6

den Start von fhem in den Runleveln 2,3,4 und 5 mit S99fhem ganz an das Ende legen.
Aber! Macht es nicht. Der Befehl läuft sauber durch aber in den Ordnern /etc/rc2.d etc steht immer noch S01fhem drin.
Was funktioniert ist das Umbenennen der Links in den Startordnern. mv S01fhem S99fhem
Mein Problem mit Ramlog ist jedoch nicht gelöst. Nur nach 2 x reboot ist ramlog aktiv.

Schlussfrage: Wie sollte die Start und Endreihenfolge sein und in welchen Runlevels?





Puschel74

Hallo,

hier mal ein Link zu den Runlevel:

http://de.wikipedia.org/wiki/Runlevel

Und für die Startreihenfolge bin ich noch am suchen.
Ich hatte erst diese Woche eine Website offen wo dies recht gut erklärt wurde.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kud

Also ich habe FHEM in den Leveln 2-5 auf 99Sfhem gelegt.
Es wird nicht gestartet ;-(
Kann man irgendwo sehen welche Dienste wann gestartet werden?
Habe gerade mal nach den Logs geschaut und in den "bootstrap.log" stand was von
Setting up rsyslog (5.8.11-2) ...
Starting enhanced syslogd: rsyslogd
Warning: Fake start-stop-daemon called, doing nothing


Hat es vielleicht was damit zu tun?

kud

Also begriffen habe ich es nicht!
Nachdem ich GOOGLE bemüht habe kamen aber auch keine neuen Erkenntnisse.
Wie werden bei Debian (RasPi) die Autostarts angelegt ?

ein update-rc.d fhem defaults trägt die Links in den Runleveln
2,3,4 und 5 ein. Da steht jeweils ein Link Namens S01fhem drin.
Ramlog steht auch drin mit S01ramlog. Alphabetisch steht FHEM also vor RAMLOG.
Jetzt habe ich mir mal den Spaß gemacht und das Start/Stopscript in /etc/init.d in zzz_fhem umzubenennen.
Ein lockeres update-rc.d -f fhem remove und update-rc.d zzz_fhem defaults, hat die passenden Runlevel mit den Links des Startprogramms versorgt.
Nach einem Reboot lief Ramlog und FHEM ...?

??? Reihenfolge der Dienste bleiben weiter im Dunkeln...

 

Prof. Dr. Peter Henning

Ein "Spezi" bin ich zwar nicht, das mit den Runlevels ist aber ganz einfach.

In der Datei /etc/inittab ist festgelegt, dass der Default-Runlevel des RPi 2 ist (text single user). Das kann man so lassen, weil das auf Debian-Systemen eigentlich keinen Unterschied macht.

Die genannten Hilfsprogramme machen nichts weiter, als in den Verzeichnissen /etc/rc<S>.d (wobei <S> für den Runlevel steht) links auf die Startskripte in /etc/init.d anzulegen. Beim Systemstart werden die Skripte Sxxirgendwas in der nummerischen Reihenfolge xx aufgerufen- und zwar mit dem Namen "irgendwas" und dem Parameter "start"
Auf die alfabetische Untersortierung "irgendwas" sollte man sich nicht verlassen, sondern die nummerische Reihenfolge richtig wählen. Beim Systemstopp werden die Skripte Kxxirgendwas aufgerufen, und zwar ebenfalls als "irgendwas", aber mit Parameter "stop"

Der langen Rede kurzer Sinn: will man die Startreihenfolge verändern, kann man auch manuell andere Links in /etc/rc2.d setzen. Keinesfalls sollte man Links umbenennen, sondern sie bitte ordentlich löschen und mit "ln" neu anlegen. Man sollte auch nicht künstlich die hohe Startnummer 99 vergeben - 06 reicht vollkommen aus.

Wenn ein Skript nicht startet, sollte man nicht irgendetwas raten, sondern die Logfiles kontrollieren. Und im Zweifelsfall auch mal manuell mit "/etc/init.d/fhem start" probieren, woran es liegt.

Meine Vermutung für den hier geschilderten Fehler: durch mehrfaches Kopieren und verschieben von Links sind diese nicht mehr ordentlich mit den zugehörigen Dateien verbunden, sondern laufen ins Leere.

LG

pah

kud

OK.
Aber was startet nun früher S01fhem oder S01ramlog?
Beide Links stehen in der /etc/Rc2.d.
Ohne mein Zutun startete fhem nicht.
Nach dem Umbenennen von /etc/init.d/fhem in zzz_fhem, läuft es.
Warum sollte man nicht umbennen und 99er... Namen vergeben. Was ist der Unterschied zwischen 06xyz (was nicht in der rc2.d vorkommt ) und 99xyz.
zZeit läuft Harry Potterim TV und den kann ich eher nachvollziehen als den Bootmechanismus im Pi.

PS: Bitte, wer es kann erklärt das "kurz".


kud

Doch noch mal gelesen...
Steht in der Definition der LSBinitScripts.

http://wiki.debian.org/LSBInitScripts/

Die Lösung war im Startscipt /etc/init.d/fhem hinter

# Required-Start:       $all

einzutragen.

Jetzt wartet fhem für den Start solange , bis alle Dienste hochgefahren sind.






Prof. Dr. Peter Henning

Das ist eine sehr unsaubere Lösung, und zwar aus den folgenden Gründen:

1. Das führt dazu, dass das zugehörige Start-Skript zwar gestartet wird, dann aber den Ablauf aller anderen Startskripte abwartet. Der Link-Bezeichnung S01fhem ist das aber nicht mehr anzusehen.

2. Damit kann man sein System lahmlegen, es reicht aus, dass man in einem anderen Start-Skript ebenfalls ein #Required-Start: $all hat .

Was um Himmels Willen (außer Harry Potter) spricht denn dagegen, die saubere Lösung mit

ln -s ../fhem S06fhem

durchzuführen ?

LG

pah

kud

Es spricht nichts dagegen.
Nur wie ist die Lösung einen Link S06fhem zu bekommen?
Per Hand ln -s S06fhem /etc/init.d/fhem ? Ein folgendes update-rc.d zerschiesst doch wieder alles?
Ein, wie oben schon aufgeführtes, update-rc.d fhem start 99 2 3 4 5 stop 01 0 1 6
funktioniert nicht.
Also wie erstellt man diesen Link sauber gem. LSBinit ?

kud

ln -s S06fhem /etc/init.d/fhem ist natürlich Käse.
ln -s /etc/init.d/fhem S06fhem wäre richtig.

Wann kommt die Editierfunktion ;-)

Puschel74

Hallo,

Tante Edith gibt es schon lange ;-)
Geht aber nur bei Beiträgen die noch nicht beantwortet wurden.

Bis eben hättest du deinen noch editieren können ;-)
Solange niemand auf meinen Beitrag antwortet kann ich diesen noch editieren.

Grüße

Edith: Heisst hier nur "Ändern" ;-)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kud

Oh ... verpennt aber erstmal maulen ;-)

Schönen Sonntag noch allen FHEMlern

C64Emulator

Hallo zusammen,
ich habe auch seit kurzem einen RasPi mit COC-Erweiterung. Der Einfachheit halber habe ich das Raspian-Image von Busware genommen.
Mir ist auch aufgefallen, dass FHEM sehr früh gestartet wird. Was mich aber stört: es wird sogar vor dem NTP-Daemon gestartet. Und das ist IMHO schlecht: Für FHEM ist eine korrekte und stabile(!) Uhrzeit wichtig (siehe dazu auch die Ausführungen im Wiki <http://www.fhemwiki.de/wiki/Kategorie:Raspberry_Pi>#Probleme).
Was habe ich gemacht?

>>> 1) Ich habe erstmal ntpdate installiert ("sudo apt-get install ntpdate").
Bei der Installation von ntpdate wird ein Skript in </etc/network/if-up.d/> (oder </etc/ppp/ip-up.d/> by dial-up-Verbindungen) eingetragen, das dafür sorgt, dass die Uhrzeit gesetzt wird, sobald das Netzwerk gestartet ist.
Das ist zwar genial, aber gibt ein Problem bei einem Stromausfall: das funktioniert nur, wenn nach einem Stromausfall der DSL-Router schneller oben ist als der RasPi, was leider nicht immer der Fall ist.
Übrigens: ntpdate ist "deprecated" (<https://support.ntp.org/bin/view/Dev/DeprecatingNtpdate>). Ein ntpd -gq bewirkt das gleiche. Falls auf ntpdate verzichtet wird, sollte in der ntp.conf hinter die Server ein ,,iburst" eingetragen sein, um eine schnelle Synchronisation mit den Zeitservern beim Start auch dann sicherzustellen, wenn der DSL-Router etwas länger zum Hochfahren benötigt. Wer ntp.conf ändern will, sollte beachten, dass bei der Nutzung einer dynamischen IP-Adresse über dhcp oft auch der NTP-Server vom DHCP-Server gezogen wird. Dann gibt es im System auch eine <ntp.conf.dhcp> (je nach distro in <var/lib/...> oder </etc/...> ) und Änderungen in </etc/ntp.conf> werden ignoriert.

>>> 2) Ich habe das Init-Skript von FHEM geändert:
Die Zeile
    # Required-Start:       $local_fs $remote_fs
habe ich geändert in:
    # Required-Start:       $local_fs $remote_fs ntp
mit
sudo update-rc.d -n fhem defaults
kann man sich die neuen Links anschauen, mit
sudo update-rc.d -f fhem remove
werden die alten Links gelöscht und mit
sudo update-rc.d fhem defaults
werden sie neu angelegt.

Außerdem habe ich in der Start-Sequenz noch ein ntp-wait eingefügt. Die Sequenz schaut bei mir nun so aus:

'start')
        ntp-wait -v
        echo "Starting fhem..."
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;


Das ist IMHO die sauberste Lösung, um FHEM zeitlich in der richtigen Reihenfolge zu starten und damit sicherzustellen, dass die Zeit stimmt.

Blöd ist nur, dass nach jedem
sudo dpkg --install fhem-x.y.deb
das init-skript aus dem Paket eingespielt wird. Aber das ist kein Thema, wenn das eigene init-skript gesichert wurde.

Nachtrag: die Startreihenfolge ist bei ramlog anscheinend ein größeres Problem. Wen es interessiert:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=12747

Hoffe, geholfen zu haben.
Helmut

Tobias

Wer das DbLog Modul nutzt, sollte noch bei "# Required-Start:" die entsprechende DB eintragen.
Sonst startet fhem beim Systemstart ohne DB.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter