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.
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?
Hallo,
hier mal ein Link zu den Runlevel:
http://de.wikipedia.org/wiki/Runlevel (//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
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?
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...
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
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".
Doch noch mal gelesen...
Steht in der Definition der LSBinitScripts.
http://wiki.debian.org/LSBInitScripts/ (//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.
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
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 ?
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 ;-)
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" ;-)
Oh ... verpennt aber erstmal maulen ;-)
Schönen Sonntag noch allen FHEMlern
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 (//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 (//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 (//www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=12747)
Hoffe, geholfen zu haben.
Helmut
Wer das DbLog Modul nutzt, sollte noch bei "# Required-Start:" die entsprechende DB eintragen.
Sonst startet fhem beim Systemstart ohne DB.
Hallo,
anscheinend ist's niemandem aufgefallen:
In der Startsequenz darf natürlich nicht vergessen werden, den COC über die GPIO17/GPIO18 zu initialisieren (siehe http://www.busware.de/tiki-index.php?page=COC_Installation (//www.busware.de/tiki-index.php?page=COC_Installation)).
Ich habe mal mein aktuelles Startskript angehängt.
Hoffe, jemandem geholfen zu haben.
Helmut.
ich denke, die Änderungen müsste Rudi ins deb Package einbauen
Zitat von: Tobias schrieb am Di, 28 Mai 2013 11:21ich denke, die Änderungen müsste Rudi ins deb Package einbauen
Das Init-Skript für den RasPi würde ich in <contrib/init-scripts> zur Verfügung stellen und einen Eintrag ins FHEM-Wiki vornehmen. Und Herr Tostmann sollte es in sein busware-Image einbauen.
Das Debian-Package ist ja nicht nur für den RasPi, sondern auch für 'richtige' Debian-Systeme.
Ich denke daher, es reicht, wenn das Init-Skript beim Bauen des Packages in die Datei 'conffiles' eingetragen wird. Dann wird der Benutzer vor dem Überbügeln zumindest darauf hingewiesen und gefragt, ob er das auch wirklich will.
Cheers
Helmut
Zitat von: C64Emulator am 22 Mai 2013, 21:07:25
Hoffe, geholfen zu haben.
Helmut
Mir auf jeden Fall, vielen Dank!
Kann es sein, dass die Zeitsynchronisation nach dem Booten sehr lange dauert? In der Grössenordnung 10 Minuten und länger? Das ist aber ziemlich lästig finde ich.