Seite 1 von 1

Startupskripte

Verfasst: Di 21 Nov 2006, 20:15
von palace
Hallo,

vielleicht ist hier ein Linuxer, der mir folgendes erklären kann:

1.
rcS bleibt offen
Am Ende der rcS steht:

Code: Alles auswählen

if [ -e /var/tuxbox/start_neutrino ] ; then
 /var/tuxbox/start_neutrino
else
 /etc/init.d/start_neutrino
fi;

exit 0
somit bleibt der Shellprozess "rcS" unnötig offen; muss das bei Linux so sein?
Oder hilft ein " &" hinter ".../start_neutrino"?

2.
in der "init1" steht "touch /tmp/init"
zurück in der rcS dann:

Code: Alles auswählen

/bin/sleep 2

until [ -e /tmp/init ]; do
 /bin/sleep 1
done
rm /tmp/init
Ich lese das so: Schlafe, solange "/tmp/init" existiert.
Dann lösche es... Hä?
EDIT: Aso, wartet, BIS /tmp/init vorhanden ist. also "sleep 2" unnötig?

Ansonsten schaue ich mir gerade die Startskripte an, versuche sie zu verstehen, ohne die Abhängigkeiten zu kennen ;)

Re: Startupskripte

Verfasst: Di 21 Nov 2006, 21:06
von saruman
palace hat geschrieben:1.
rcS bleibt offen
Am Ende der rcS steht:

Code: Alles auswählen

if [ -e /var/tuxbox/start_neutrino ] ; then
 /var/tuxbox/start_neutrino
else
 /etc/init.d/start_neutrino
fi;

exit 0
somit bleibt der Shellprozess "rcS" unnötig offen; muss das bei Linux so sein?
Oder hilft ein " &" hinter ".../start_neutrino"?
Ja, in diesem Fall kann ein '&' helfen. Das befördert den Prozess start_neutrino in den Hintergrund, die rcS kann weiter abgearbeitet werden und terminiert dann, weil nur noch ein "exit 0" hinter dem start_neutrino auftaucht.
palace hat geschrieben:2.
in der "init1" steht "touch /tmp/init"
zurück in der rcS dann:

Code: Alles auswählen

/bin/sleep 2

until [ -e /tmp/init ]; do
 /bin/sleep 1
done
rm /tmp/init
Ich lese das so: Schlafe, solange "/tmp/init" existiert.
Dann lösche es... Hä?
EDIT: Aso, wartet, BIS /tmp/init vorhanden ist. also "sleep 2" unnötig?

Ansonsten schaue ich mir gerade die Startskripte an, versuche sie zu verstehen, ohne die Abhängigkeiten zu kennen ;)
Ich kann jetzt mal nur vermuten, da ich Rikers Intention nicht kenne, aber ich denke mal dass hier das parallele Ausführen der Startskripte im Vordergrund steht um Bootzeit zu sparen. Weiter oben in der rcS steht ja

Code: Alles auswählen

if [ -x /var/etc/init1 ] ; then
 /var/etc/init1 &
else
 /etc/init.d/init1 &
fi;
Also wird init1 in den Hintergrund gestartet, die Abarbeitung von rcS kann weitergehen ohne auf die Terminierung von init1 zu warten. Jetzt könnte es aber zu einer Race Condition kommen: Wenn init1 zu lange läuft, wird init2 noch zur Laufzeit von init1 gestartet. Und das ist nicht gewünscht. Also wartet die rcS so lange, bis init1 das Flag /tmp/init (danach terminiert init1) setzt, damit dann init2 aus der rcS aufgerufen werden kann.

Verfasst: Di 21 Nov 2006, 21:16
von palace
@saruman: Danke! So langsam scheine ich durchzublicken...
leider sind mir die Abhängigkeiten der Module nicht bekannt :(
Zu erstens denke ich nur, dass die rcS nicht offen bleiben muss...

weiter:
in der init2: "/bin/cdkVcInfo --neutrino" läuft schneller wenn "/bin/cdkVcInfo --neutrino ?"

Der lirc Daemon/Module ($INSMOD $MODDIR/avia_gt_lirc.o) muss nicht geladen werden, wenn es keine Konfig dafür gibt...

Re: Startupskripte

Verfasst: Di 21 Nov 2006, 22:16
von robspr1
palace hat geschrieben:...somit bleibt der Shellprozess "rcS" unnötig offen; muss das bei Linux so sein?
Oder hilft ein " &" hinter ".../start_neutrino"?
Also, rcS muss nicht offen sein.

Wenn du mittels telnet den offenen Process rcS killst (bei mir hat er die ID 10, daher also kill 10), dann hat man plötzlich die virtuellen Konsolen für die dBox-Tastatur zur verfügung -> also Alt-F2 und man hat eine nette Konsole am Fernseher, mit Alt-F1 wieder zurück zum normalen Bild.

Verfasst: Mi 22 Nov 2006, 0:10
von saruman
palace hat geschrieben:in der init2: "/bin/cdkVcInfo --neutrino" läuft schneller wenn "/bin/cdkVcInfo --neutrino ?"
Das kapier ich grad nicht, liegt aber bestimmt daran dass ich nebenbei noch nen großen Change abfackel und ich auch schon nicht mehr sonderlich frisch bin.

Meinst Du, dass die init2 schneller abgearbeitet ist, wenn Du ein '&' an das cdkVcInfo hängst?
palace hat geschrieben:Der lirc Daemon/Module ($INSMOD $MODDIR/avia_gt_lirc.o) muss nicht geladen werden, wenn es keine Konfig dafür gibt...
Jo, denn mal fleissig ans Werk:

Code: Alles auswählen

if [ -e <LIRC_CONFIGFILE> ]; then
  $INSMOD $MODDIR/avia_gt_lirc.o
fi
oder auch kürzer

Code: Alles auswählen

[ -e <LIRC_CONFIGFILE> ] && $INSMOD $MODDIR/avia_gt_lirc.o
:)

Verfasst: Mi 22 Nov 2006, 14:19
von palace
saruman hat geschrieben:Meinst Du, dass die init2 schneller abgearbeitet ist, wenn Du ein '&' an das cdkVcInfo hängst?
Hi, genau so mein ich das...

Hm - wo man da aber 20 Sekunden früher zu Bild & Ton kommen sollte seh ich nicht.
Dass irgendwelche Module nicht gebraucht werden weiss und glaub ich nicht.

Es sei denn man lädt erst nur das, was für Bild und Ton benötigt wird, startet Neutrino und lädt den "Rest" parallel dazu und z.B. den FB Treiber zum Schluss...

Verfasst: Mi 22 Nov 2006, 20:58
von Riker
Das langsamere starten der aktuellen Images kommt vorallem durch LZMA Kompremierung, das dauert länger zum Entpacken, die Imageinfo kann man ja auch abstellen, mit & dahinter ruckelt die rum wenn die nächsten Treiber laden wegen dem entpacken des Dateisystems.

Riker