MLD-5.x > Development

Initskripte - Reihenfolge festlegen?

(1/2) > >>

cle:
Hi,

ich kämpfe gerade ein wenig damit, ein Skript an der richtigen Stelle starten zu lassen. Grund ist, dass man die Helligkeit des Pearl-Display's beim Ausschalten mit dem showpic Befehl auf 0 setzen sollte, falls man keine hellgraue Notbeleuchtung benötigt.
Zumindest bei mir hat auch das Anzeigen von Timern nicht funktioniert, weil das graphlcd-Skript zwar nach 'vdr' gestartet wird, zu diesem Zeitpunkt vdr aber noch nicht vollständig gestoppt ist und dann das graphlcd-Plugin die Anzeige wieder überschreibt.
Das funktioniert mit den Skripten unten im Prinzip nun ordentlich. Wenn die Timer aber nicht angezeigt werden sollen, bekomme ich wieder Probleme mit 'graphlcd-base',  das beim Runterfahren ja auch irgendwelche Grafiken auf das Display zeichnet.
Die Fragen also:
after und before im init-Abschnitt sind ja noch ganz verständlich, wobei after beim Stoppen before zu sein schein ;)
Unter priority kann ich mir auch noch was vorstellen (gibt's nur 0, 5 und 9?)
Wie aber kann ich feststellen, ob ein Skript bereits abgearbeitet ist oder noch läuft. Evtl. haben die 'wait'-Ordner was damit zu tun?
Ich hoffe, jemand kann mir da helfen.

Gruß
Alex


pearl:

--- Code: ---#!/bin/sh

. /etc/init.d/rc.functions

NAME=${0##*/}
TIMERFILE=/etc/vdr/timers.conf

case "$1" in
        start)
;;
stop)
if ( [ "$GRAPHLCD_TYP" == "ax206dpf" ] ) && ( [ "$GRAPHLCD_SHOW_TIMERS" != "1" ] || [ ! -s "$TIMERFILE" ] ); then
echo "Blanking Pearl Display"
#
/usr/bin/showpic -d ax206dpf -b 0 dummypic &>/dev/null
#
fi
;;
init)
stop=1      # enable stop section
priority=9
before=graphlcd-base   # init scripts that should be started after this
;;
*)
echo "Usage: $0 {start | stop}" >&2
exit 1
esac

--- End code ---
 

graphlcd:

--- Code: ---#!/bin/sh
. /etc/init.d/rc.functions
TEXTDOMAIN="vdr-plugin-graphlcd-graphlcd"

case "$1" in
start)
;;
stop)
if [ "$GRAPHLCD_SHOW_TIMERS" == "1" ]; then
echo "Show timers on graphlcd"
if [ -e "/usr/bin/perl" ]; then
graphlcd-showtimer
else
. /etc/rc.shutdown
showtext -c /etc/graphlcd.conf -i ${GRAPHLCD_TYP:+-d $GRAPHLCD_TYP} -e iso8859-0 -f fnt:/etc/vdr/plugins/graphlcd/fonts/f12bn.fnt "Next Timer:" "$(test "$utctime" \> "0" && date '+%a %m. %b %Y  %H:%M' @$utctime || echo $(gt 'none'))" "$filename"
fi
fi
;;
init)
stop=1
before=xorg
after=pearl
priority=9
;;
*)
echo "Usage $0 {start | stop}" >&2
exit 1
esac

--- End code ---

clausmuus:
Hi,

dafür gibt es die before und after regeln. Die priority (0-9 möglich) wird nur genutzt, um besonders frühe oder späte Aktionen auszuführen. Wird keine Priority angegeben, ist die Voreinstellung 0.
z.B. sorft after=vdr dafür, dass der Start des script erst dann ausgeführt wird, wenn das vdr init Script abgearbeitet ist, also nachdem der VDR läuft. Gleiches gilt in umgekehrter Reihenfolge für das herunterfahren. Also nicht nur die priority wird beim herunterfahren umgekehrt, sondern auch before und after.

Claus

cle:
Hi,

Danke für die Antwort.
So jetzt habe ich mir die ursprünglichen Dateien wieder in's Verzeichnis kopiert und nochmal von vorne angefangen.

Zunächst mal mit ausgewähltem 'show next timers':

- mit den Originaldateien werden - wie schon geschrieben -  keine Timer auf dem Display angezeigt, weil der vdr erst nach dem Ausführen des graphlcd-Skriptes gestoppt wird.

--- Code: ---System going down now.
Activating WOL
Show timers on graphlcd:
Stopping VDR
--- End code ---

- das 'before' und 'after' habe ich mir nochmal angeschaut, da waren meine Ganglien scheinbar etwas verknotet. Mit 'before=vdr' wird graphlcd zum richtigen Zeitpunkt ausgeführt und die Timer werden auf dem Display angezeigt.
- mit den entsprechenden Einträgen wird auch mein eigenes Skript richtig gestartet und schaltet den Schirm auf schwarz, sobald kein Timer anliegt

Soweit so gut. Haarig wird's aber, wenn 'show next timers' abgewählt wird.
Dann wird mit der Option before="graphlcd graphlcd-base" mein Skript zwar nach graphlcd-base gestartet, aber nicht auf dessen Beendigung gewartet,


--- Code: ---System going down now.
Stopping graphlcd-base
Activating WOL
Stopping VDR
Store sound settings:
Blanking Pearl Display (before=graphlcd graphlcd-base)
  Waiting for xorg
Stopping xorg

--- End code ---

im syslog sieht das dann so aus ('dummypic' stammt von meinem Skript):


--- Code: ---Jan 16 17:06:05 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte02.glcd' loaded.
Jan 16 17:06:06 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:06 (MLD) user.warn kernel: [   99.520224] usb 4-5: usbfs: process 3914 (showpic) did not claim interface 0 before use
Jan 16 17:06:06 (MLD) user.warn kernel: [   99.520253] usb 4-5: usbfs: process 3914 (showpic) did not claim interface 0 before use
Jan 16 17:06:06 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte05.glcd' loaded.
Jan 16 17:06:07 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:07 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte05.glcd' loaded.
Jan 16 17:06:07 (MLD) user.warn kernel: [  100.699145] usb 4-5: usbfs: process 4016 (showpic) did not claim interface 0 before use
Jan 16 17:06:07 (MLD) user.warn kernel: [  100.699175] usb 4-5: usbfs: process 4016 (showpic) did not claim interface 0 before use
Jan 16 17:06:08 (MLD) user.err vdr: video/vdpau: can't destroy output surface: An invalid handle value was provided.
Jan 16 17:06:08 (MLD) user.info kernel: [  101.573388] vdr[1198]: segfault at 7fe17542de30 ip 00007fe17542de30 sp 00007fe172e4c678 error 14 in libnsl-2.19.so[7fe1765d2000+15000]
Jan 16 17:06:09 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:09 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte05.glcd' loaded.
Jan 16 17:06:10 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:10 (MLD) user.err showpic: glcdgraphics: Couldn't load 'dummypic': showpic: UnableToOpenBlob `dummypic': No such file or directory @ error/blob.c/OpenBlob/2709 (cExtFormatFile::LoadScaled)
Jan 16 17:06:11 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:11 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte08.glcd' loaded.
Jan 16 17:06:13 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:06:13 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte09.glcd' loaded.
Jan 16 17:06:15 (MLD) syslog.info syslogd exiting

--- End code ---

Wenn ich zusätzlich priority=9 eintrage, dann wird mein Skript scheinbar zum Schluss ausgeführt, tatsächlich bleibt auf dem Schirm aber eines der Bootstep-Bilder stehen. Im Syslog ist dazu nichts Auffälliges zu finden, allerdings fehlt hier der Eintrag des letzten Bildes starte09.lcd.


--- Code: ---Jan 16 17:18:58 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:18:58 (MLD) user.debug showpic: glcdgraphics: image '/etc/graphlcd/240x128/starte08.glcd' loaded.
Jan 16 17:19:00 (MLD) user.info showpic: ax206dpf: AX206DPF initialized (320x240).
Jan 16 17:19:00 (MLD) user.err showpic: glcdgraphics: Couldn't load 'dummypic': showpic: UnableToOpenBlob `dummypic': No such file or directory @ error/blob.c/OpenBlob/2709 (cExtFormatFile::LoadScaled)
Jan 16 17:19:00 (MLD) syslog.info syslogd exiting

--- End code ---

Noch eine Idee?
Eine Möglichkeit wäre natürlich die entsprechende Zeilen in graphlcd-base zu übernehmen.

Es wär auch schön, wenn es eine zusätzliche Option geben würde, ob die Bootsteps auf dem Display angezeigt werden. Ich habe nichts gegen Pinguine im Allgemeinen, aber auf dem Pearl sieht die Grafik nicht wirklich prickelnd aus (siehe Anhang) und durch den langsamen Bildwechsel ist der Ausschaltvorgang auch nicht unbedingt vorzeigbar.

Gruß
Alex

Hier noch die beiden Dateien

graphlcd

--- Code: ---#!/bin/sh
. /etc/init.d/rc.functions
TEXTDOMAIN="vdr-plugin-graphlcd-graphlcd"

case "$1" in
start)
;;
stop)
if [ "$GRAPHLCD_SHOW_TIMERS" = "1" ]; then
echo "Show timers on graphlcd (before=vdr)"
if [ -e "/usr/bin/perl" ]; then
graphlcd-showtimer
else
. /etc/rc.shutdown
showtext -c /etc/graphlcd.conf -i ${GRAPHLCD_TYP:+-d $GRAPHLCD_TYP} -e iso8859-0 -f fnt:/etc/vdr/plugins/graphlcd/fonts/f12bn.fnt "Next Timer:" "$(test "$utctime" \> "0" && date '+%a %m. %b %Y  %H:%M' @$utctime || echo $(gt 'none'))" "$filename"
fi
fi
;;
init)
stop=1
before=vdr
;;
*)
echo "Usage $0 {start | stop}" >&2
exit 1
esac

--- End code ---

pearl

--- Code: ---#!/bin/sh

. /etc/init.d/rc.functions

NAME=${0##*/}
TIMERFILE=/etc/vdr/timers.conf

case "$1" in
        start)
;;
stop)
if ( [ "$GRAPHLCD_TYP" == "ax206dpf" ] ) && ( [ "$GRAPHLCD_SHOW_TIMERS" != "1" ] || [ ! -s "$TIMERFILE" ] ); then
echo "Blanking Pearl Display"
#
/usr/bin/showpic -d ax206dpf -b 0 dummypic &>/dev/null
#
fi
;;
init)
stop=1 
before="graphlcd graphlcd-base"
priority=9
;;
*)
echo "Usage: $0 {start | stop}" >&2
exit 1
esac

--- End code ---

Christian:
Sieht bei mir genau so aus und ich habe die glcd Dateien durch hübsche png Dateien getauscht :) ...

Man sollte beim perl addon das Script erweitern und die Dateien ersetzen.

Ein todo für den bugtracker

clausmuus:
Im graphlcd-base wird das Animations-Script im Hintergrund gestartet. Das läuft so lange, bis das System ganz herunter gefahren ist.

Bleibt das Display aus auch wenn nach dem Abschalten noch ein weiteres Animations-Bild angezeigt wird, oder springt das dann wieder an?

Würde es reichen bessere Bilder mit dem aktuellen MLD Logo zu haben? Oder willst Du die Power-off Animation auf jeden Fall abschaltbar haben?

@Christian,
Hast Du die Bilder mit MLD Logo? kannst Du die in's Paket packen? Die aktuellen sind ja schon seit Jahren veraltet.
Ich könnte auch ein kleines Script schreiben, das welche für alle Auflösungen auf Basis unseres Logos erstellt. Sowas ist ja recht einfach.

Claus

Navigation

[0] Message Index

[#] Next page

Go to full version