[erledigt] modulare init-skripte anstatt monolithischer rcS
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: "modulare" init-skripte anstatt monolithischer rcS
Sieht bei mir soweit auch ganz gut aus.
Zu den Keymaps: Werden die außer für kb2rcd noch für andere Sachen benötigt?
Wenn nicht, könnte man die Erzeugung des Skripts und das Laden doch davon abhängig machen.
Zu den Keymaps: Werden die außer für kb2rcd noch für andere Sachen benötigt?
Wenn nicht, könnte man die Erzeugung des Skripts und das Laden doch davon abhängig machen.
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: "modulare" init-skripte anstatt monolithischer rcS
Aus dem Log:
Sollte start_enigma gar nicht erst installiert werden?
Code: Alles auswählen
install -m755 start_enigma /home/Striper/MY_Image/dbox2/cdkflash/var-neutrino/etc/init.d/start_enigma
Re: "modulare" init-skripte anstatt monolithischer rcS
Bilde ich mir das nur ein oder bootet die Box jetzt gefühlt um einiges schneller. Wenn das so ist, war das schon mal genial...
Re: "modulare" init-skripte anstatt monolithischer rcS
Hallo,
das wirst Du Dir wohl einbilden.
Sie braucht einiges länger zum Booten. Wenigstens bei mir.
Gruss
das wirst Du Dir wohl einbilden.
Sie braucht einiges länger zum Booten. Wenigstens bei mir.
Gruss
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: "modulare" init-skripte anstatt monolithischer rcS
Finde ich nicht so gut, wenn kein halt mit rein gebaut wird. Es ist ja im repo drin wird aber vom make nicht übernommen. Gewollt?rhabarber1848 hat geschrieben: Wenn 06hdd (oder irgendein anderer Name) existiert,
kann dieses Skript die unmount-Befehle durchführen.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Könntest Du das für mich bitte etwas ausführlicher erklären?dbt hat geschrieben:Finde ich nicht so gut, wenn kein halt mit rein gebaut wird.rhabarber1848 hat geschrieben:Wenn 06hdd (oder irgendein anderer Name) existiert,
kann dieses Skript die unmount-Befehle durchführen.
"Es" = 06hdd? Diese Datei gibt es nicht im CVS.dbt hat geschrieben:Es ist ja im repo drin wird aber vom make nicht übernommen. Gewollt?
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: "modulare" init-skripte anstatt monolithischer rcS
06hdd ist klar genau wie 07mounts, die habe ich gerade im Ide-Menü verwurstet und schubse damit die IDE/FS und hdparm-Sachen beim Booten an. Die GUI erzeugt diese Scripte zur Laufzeit beim Abspeichern, das klappt auch, sogar beim Booten wird das richtige genommen, astrein eigentlich, aber darum gings eigentlich weniger.rhabarber1848 hat geschrieben:Könntest Du das für mich bitte etwas ausführlicher erklären?dbt hat geschrieben:Finde ich nicht so gut, wenn kein halt mit rein gebaut wird.rhabarber1848 hat geschrieben:Wenn 06hdd (oder irgendein anderer Name) existiert,
kann dieses Skript die unmount-Befehle durchführen."Es" = 06hdd? Diese Datei gibt es nicht im CVS.dbt hat geschrieben:Es ist ja im repo drin wird aber vom make nicht übernommen. Gewollt?
Mir gings um das halt-Script. Das wird von make nicht mitgebaut bzw. angelegt, also es ist weder in Yadd noch im Image in /etc/init.d zu finden obwohl Links dafür existieren (Khalt, Shalt) und das obwohl es im cdk liegt (Absicht?). Bei Shalt weiß ich nicht ob man das haben muß, auch bei Khalt weiß ich auch nicht so recht. Deshalb meine ich man sollte es nur beim STOP direkt aufrufen und entweder eine eingebaute Standardversion oder /var-Version verwenden können, die evtl. auch benutzerdefiniert erstellt werden kann. Wenn es natürlich besser geht, kein Problem. Habe mich nur gewundert, dass halt fehlt.
Ich hatte das ja schonmal gepostet, mit dem Gedanken dass man es evtl. so ähnlich verwenden könnte:
Code: Alles auswählen
#!/bin/sh
# $Id: halt,v 1.6 2009/11/21 13:35:52 rhabarber1848 Exp $
echo "system shutdown..."
trap "echo" INT SEGV QUIT TERM
set +e
VENDOR_ID=`/bin/tuxinfo -v`
if [ $VENDOR_ID -eq 2 ]; then
# Philips/Sat
/bin/switch -rv 3 3 -rv 2 2 -ra 3 2 -v 0 -fnc 0
else
/bin/switch -fnc 0
/bin/switch -fblk 0
fi;
#kill rtc if available
if [ -e /var/etc/.rtc ]; then
/bin/hwrtc systohw
fi;
#kill nfs
if [ -e /var/etc/.nfsd ]; then
kill `pidof rpc.nfsd`
kill `pidof rpc.mountd`
kill `pidof portmap`
fi;
#kill samba
if [ -e /var/etc/.samba ]; then
kill `pidof smbd`
kill `pidof nmbd`
fi;
#kill automounter, tuxmail, tuxcal
DEAMONLIST="automount tuxmaild tuxcald"
for d in $DEAMONLIST ; do
if pidof $d > /dev/null; then
killall $d
i=5
while expr $i != 0 > /dev/null; do
if [ -e /tmp/$d.pid ]; then echo "Waiting for $d (max. $i seconds)"
else break;
fi
i=`expr $i - 1`
sleep 1
done
fi;
done
reverse ()
{
local _line
while read -r _line ; do
reverse
echo "$_line"
break
done
}
sync
# unmounting filesystems
MPATH=/lib/modules/$(uname -r)/kernel/fs
FSLIST=`ls $MPATH`
reverse < /proc/mounts | \
while read des fs type rest; do
for f in $FSLIST ; do
case "$type" in
$f) echo "Unmounting '$f' on '$fs'"
umount -f $fs
;;
esac
done
done
reverse < /proc/mounts | \
while read des fs type rest; do
case "$type" in
jffs2) echo "Unmounting 'jffs2' on '$fs'"
UMOUNT_FAILED=false
umount -f $fs || {
UMOUNT_FAILED=true
}
if [ "$UMOUNT_FAILED" = true ]; then
echo "Oops: umount failed :-( -- trying to remount readonly..."
mount -v -n -o remount,ro $type $fs
fi;
sleep 1
;;
esac
done
echo "Ready to shutdown system..."
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Ich dachte eigentlich an folgendes: Dein Code erstellt 06hdddbt hat geschrieben:Die GUI erzeugt diese Scripte zur Laufzeit beim Abspeichern, das klappt auch, sogar beim Booten wird das richtige genommen
und verlinkt nach S06hdd und K06hdd, alles in /var/etc/init.d/
Die Skript haben dann folgende Struktur:
Code: Alles auswählen
#!/bin/sh
case $1 in
start)
;;
stop)
;;
esac
exit 0
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Das geschieht bereits in 31nfsserver stopdbt hat geschrieben:#kill nfs
if [ -e /var/etc/.nfsd ]; then
kill `pidof rpc.nfsd`
kill `pidof rpc.mountd`
kill `pidof portmap`
fi;
Das geschieht bereits in 31sambaserver stopdbt hat geschrieben:#kill samba
if [ -e /var/etc/.samba ]; then
kill `pidof smbd`
kill `pidof nmbd`
fi;
Auch das Stoppen dieser Daemons wird im jeweiligen Skript erledigt.dbt hat geschrieben:#kill automounter, tuxmail, tuxcal
DEAMONLIST="automount tuxmaild tuxcald"
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: "modulare" init-skripte anstatt monolithischer rcS
Ja, das halt-script war ja nur ein Vorschlag, weil ich mich gewundert habe, das darauf gelinkt ist, obwohl keins da ist, aber jetzt dämmerts, muss mal schauen. Wenn es so ist, braucht man fast nichts ändern. Das schraubt den Aufwand für die Dateiausgabe etwas höher, aber sollte kein Problem sein.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Das ist ein Überbleibsel und wird noch von mir gelöscht.dbt hat geschrieben:Mir gings um das halt-Script. [...] es im cdk liegt (Absicht?).
Beim Herunterfahren wird nun rcK aufgerufen, dort findet
sich auch der "switch -fnc"-Aufruf aus halt und der Aufruf
aller Initskripts mit dem stop-Parameter.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Wenn Du nicht viele Sachen im Image hast, kann es durchaus sein, dadixidix hat geschrieben:Bilde ich mir das nur ein oder bootet die Box jetzt gefühlt um einiges schneller.
weniger Code beim Start abgearbeitet wird, in rcS war halt alles drin.
Auch das kann möglich sein, da der Aufwand um die Init-Skripts herumMourice hat geschrieben:Sie braucht einiges länger zum Booten. Wenigstens bei mir.
etwas mehr geworden ist.
@Euch beide: Ohne belastbare Zahlen ist ein Vergleich allerdings nicht möglich.
Ich habe schon oft von Usern gelesen, dass das jeweils neu Image etwas
schneller geworden ist. Wenn das kumuliert stimmen würde, würde die
66 MHz-CPU der Dbox2 auch für aktuelle Boxen ausreichen
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: "modulare" init-skripte anstatt monolithischer rcS
Die mounts für /var usw. werden generell jetzt direkt ausgeführt oder täusche ich mich? Dann kann das doch eigentlich aus fstab raus?
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Die RTC-Unterstützung fehlt in der Tat noch in Neutrino und den Startskripts.dbt hat geschrieben:Ich hatte das ja schonmal gepostet, mit dem Gedanken dass man es evtl. so ähnlich verwenden könnte:Code: Alles auswählen
#kill rtc if available if [ -e /var/etc/.rtc ]; then /bin/hwrtc systohw fi;
JtG-Riker hat mich ebenfalls darauf hingewiesen und mir seinen Patch zur
Verfügung gestellt, der noch auf rcS basiert. Mit den Anpassungen an die
aktuelle Init-Struktur habe ich den Patch committed:
http://article.gmane.org/gmane.comp.vid ... x.scm/1610
http://article.gmane.org/gmane.comp.vid ... x.scm/1611
http://article.gmane.org/gmane.comp.vid ... x.scm/1612
http://article.gmane.org/gmane.comp.vid ... x.scm/1613
http://article.gmane.org/gmane.comp.vid ... x.scm/1614
-
- Image-Team
- Beiträge: 252
- Registriert: Sonntag 23. Mai 2004, 23:10
Re: "modulare" init-skripte anstatt monolithischer rcS
Bei mir wird beim 1. Start nach dem flashen die initialize nicht gestartet, d.h. kein lcdip (Dbox mit E1).
Schreib ich das Startscript für lcdip in die rcS geht es.
CU
Schreib ich das Startscript für lcdip in die rcS geht es.
CU
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
In der alten rcS.m4 stand folgendes:HorstH hat geschrieben:Bei mir wird beim 1. Start nach dem flashen die initialize nicht gestartet, d.h. kein lcdip (Dbox mit E1).
Code: Alles auswählen
ifmarkerfile({initialize},{/etc/init.d/initialize && rm /var/etc/.initialize})
werden, danach wird /var/etc/.initialize gelöscht. Da im CVS nirgendwo
/var/etc/.initialize angelegt wird, habe ich die o.g. Funktion nicht migriert.
Ich habe einen Verweis auf /etc/init.d/initialize nur in lcdmenu gefunden.
Kannst Du mir sagen, wie /var/etc/.initialize ins Image kommt, außer
per customization und zu welchem Zweck?
-
- Image-Team
- Beiträge: 252
- Registriert: Sonntag 23. Mai 2004, 23:10
Re: "modulare" init-skripte anstatt monolithischer rcS
Ok, ich denke mal es liegt daran das ich die Sache aus dem Yadi übernommen habe. Da läuft das nicht über /var/etc/.initialize sondern /etc/network/interfaces.
Wenn interfaces fehlt wird lcdip gestartet.
somit kannst du nach dem flashen eines Komplettimages beim 1. Start die IP, Subnet, Gateway und Namesserver über das LCD eingeben
Wenn interfaces fehlt wird lcdip gestartet.
Code: Alles auswählen
if [ ! -e /etc/network/interfaces ]; then
/bin/lcdip
ifup -a
fi
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
http://www.tuxbox-cvs.sourceforge.net/f ... 79#p288279HorstH hat geschrieben:Da läuft das nicht über /var/etc/.initialize sondern /etc/network/interfaces.
Ich kann den von Barf beschriebenen Weg in cdk/root/etc/init.d/10network einbauen,Barf hat geschrieben:Zweitens habe ich Support für ein Initialisierungsskript implementiert. Falls die Datei /var/etc/.initialize vorhanden ist, wird /etc/init.d/initialize ausgeführt. Was diese Datei enthalten soll, kann mann diskutieren. In meine Version setze ich IP mit Hilfe von carjays lcdip (etwas erweitert).Ist nicht per Default eingeschaltet, der Imagebuilder muss, z.B. in root-local.sh touch $(flashprefix)/var/etc/.initialize machen.
um die bisherige Funktionalität aus rcS.m4 nachzustellen. Du müsstest dann diese
Datei patchen, um statt /var/etc/.initialize auf /etc/network/interfaces zu prüfen
oder die von Barf beschriebene customization-Lösung verwenden.
Wäre das so in Ordnung?
-
- Image-Team
- Beiträge: 252
- Registriert: Sonntag 23. Mai 2004, 23:10
Re: "modulare" init-skripte anstatt monolithischer rcS
Ja wäre in Ordnung, Danke!
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: "modulare" init-skripte anstatt monolithischer rcS
Eine halbwegs elegante lösung wäre auch ein eigenes "S05initialize"-initskript, das, wenn es erfolgreich war, ein "touch /var/etc/init.d/S05initialize" macht und sich somit selbst deaktiviert.
Evtl. mit anderer Nummer, aber ich denke die Idee wird klar.
Evtl. mit anderer Nummer, aber ich denke die Idee wird klar.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
ungetestet: EDIT: Patch ist im CVSseife hat geschrieben:Eine halbwegs elegante lösung wäre auch ein eigenes "S05initialize"-initskript, das, wenn es erfolgreich war, ein "touch /var/etc/init.d/S05initialize" macht und sich somit selbst deaktiviert.
-
- Image-Team
- Beiträge: 252
- Registriert: Sonntag 23. Mai 2004, 23:10
Re: "modulare" init-skripte anstatt monolithischer rcS
Patch funktioniert wunderbarrhabarber1848 hat geschrieben: ungetestet: lcdip_init.diff
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
Es gibt hier ein prinzipielles Problem. Bis jetzt wurde lcdip beim
Image-Start nie genutzt, es sei denn, per customization wurde
es aktiviert. Wenn der Patch, so wie er jetzt ist, ins CVS kommt,
wird lcdip beim erstmaligen Imagestart immer gestartet, es findet
also eine Veränderung des Imageverhaltens statt, die nicht überall
gut ankommen würde. Mich würde es stören, da hier
/etc/networks/interfaces bereits per Patch korrekt eingestellt ist.
Darüberhinaus ist /bin/lcdip in allen Images enthalten, obwohl es
nur von den wenigsten genutzt wird. Deshalb würde ich vorschlagen,
folgendes zum Patch hinzuzufügen:
"make flash-lcdip" muss dann in root-local.sh eingetragen werden, wenn es
im Image gewünscht ist. Das Init-Skript sorgt schon jetzt selbst dafür, dass
es nur im Image ist, wenn auch /bin/lcdip vorhanden ist.
/etc/init.d/initialize ist deshalb im Image nicht mehr erforderlich, muss aber
noch aus apps/tuxbox/lcd/lcdmenu/lcdmenu.conf.example entfernt werden.
Ich habe den Patch aktualisiert, bitte testen, ob das so CVS-tauglich ist.
EDIT: Patch ist im CVS
Image-Start nie genutzt, es sei denn, per customization wurde
es aktiviert. Wenn der Patch, so wie er jetzt ist, ins CVS kommt,
wird lcdip beim erstmaligen Imagestart immer gestartet, es findet
also eine Veränderung des Imageverhaltens statt, die nicht überall
gut ankommen würde. Mich würde es stören, da hier
/etc/networks/interfaces bereits per Patch korrekt eingestellt ist.
Darüberhinaus ist /bin/lcdip in allen Images enthalten, obwohl es
nur von den wenigsten genutzt wird. Deshalb würde ich vorschlagen,
folgendes zum Patch hinzuzufügen:
Code: Alles auswählen
--- ../cvs/cdk/make/flashroot.mk 2009-12-05 21:14:00.000000000 +0100
+++ ./cdk/make/flashroot.mk 2009-12-13 14:36:42.000000000 +0100
@@ -33,7 +33,6 @@
$(MAKE) flash-camd2
$(MAKE) flash-ucodes
$(MAKE) flash-satfind
- $(MAKE) flash-lcdip
$(MAKE) flash-rtc
endif
$(MAKE) flash-tools_misc
im Image gewünscht ist. Das Init-Skript sorgt schon jetzt selbst dafür, dass
es nur im Image ist, wenn auch /bin/lcdip vorhanden ist.
/etc/init.d/initialize ist deshalb im Image nicht mehr erforderlich, muss aber
noch aus apps/tuxbox/lcd/lcdmenu/lcdmenu.conf.example entfernt werden.
Ich habe den Patch aktualisiert, bitte testen, ob das so CVS-tauglich ist.
EDIT: Patch ist im CVS
-
- Image-Team
- Beiträge: 252
- Registriert: Sonntag 23. Mai 2004, 23:10
Re: "modulare" init-skripte anstatt monolithischer rcS
Ich würde auf lcdip jetzt nicht allzu großen Wert legen als das es ins CVS müsste. Ausser mir hat es ja keiner vermisst und ich weiß wie ich es einbauen müsste.
Von mir (Rest von Yadi) würde es eh nur noch E1 Images geben, wenn gewünscht, von daher muss nicht allzu viel verbogen werden ;-)
Aber trotzdem danke für eure Mühen!!
Von mir (Rest von Yadi) würde es eh nur noch E1 Images geben, wenn gewünscht, von daher muss nicht allzu viel verbogen werden ;-)
Aber trotzdem danke für eure Mühen!!
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: "modulare" init-skripte anstatt monolithischer rcS
rhabarber1848 hat geschrieben:"make flash-lcdip" muss dann in root-local.sh eingetragen werden, wenn es im Image gewünscht ist.
Genauso wird es wohl laufen. Was mich an meinem letzten Patch noch nervt,HorstH hat geschrieben:ich weiß wie ich es einbauen müsste.
ist der Umstand, dass lcdip immer im Yadd landet und dank des Init-Skripts
auch aufgerufen wird, obwohl die Netzwerk-Konfiguration bereits korrekt ist.