Kleines HowTo, um mit dem Flexmenü Platz in /var/ zu sparen!
Verfasst: Sa 05 Mär 2005, 14:48
Hallo,
ich hab mich in den letzten Tagen ein wenig mit dem Flexmenü auseinandergesetzt.
Download: hier
Die Installation ist im Readme beschrieben. Anschließend befindet sich im Ordner /var/plugins die Datei Shellexec mit einer Größe von 35.9 KB und im Ordner /var/tuxbox/plugins die Dateien shellexec.so (9,19KB) und shellexec.cfg (ca.86Byte), sowie die Datei shellexec.conf im Ordner /var/tuxbox/config (Große kommt hier drauf an, was ihr hier reinschreibt).
Damit sind jetzt erst mal, selbst bei leerer shellexec.conf schon mal ca. 46KB weg. Das ist eine Menge Platz, kann aber zu einem nicht unerheblichen Teil wieder rein geholt werden.
So z.B. wenn man andere Plugins ersetzen kann, die man dann natürlich nicht mehr bzw. nur noch zum Teil installieren muss.
Beispiele:
Das EPG-Reset Plugin:
Leider habe ich das alte Original nicht mehr gefunden, aber es bestand aus 3 Dateien: scrplug1.cfg, scrplug1.so und der shell1. Sinn der .cfg und .so war eigentlich nur, das Skript in der shell1 auszuführen. Das könnte man heute schon leichter machen, indem man das nach den Skript-Regeln ummodeln würde (s. dazu hier mehr). Aber dann hat man immer noch 2 Dateien und einen Eintrag im Menü der blauen Taste, was eh schon mehr als voll genug ist. Da der Inhalt der Shell recht einfach aufgebaut war, kann man es auch komplett in das Flexmenü übernehmen.
Shell1 enthielt diesen Code:
Daraus wird im Flexmenü der Eintrag
Beispiel 2: NTSC/PAL Plugin
Das beinhaltet normalerweise 6 Dateien und setzt 2 Einträge ins Menü der blauen Taste.
Inhalt der shell1:
Inhalt der shell2:
Mit ein wenig Studium der Anleitung zu saa von hier ist im Flexmenü mit diesen Zeilen alles getan:
Aufgrund dieser Anleitung kann man auch gleich das Zoom-Plugin mit einbauen :
statt 8 Dateien in /vat/tuxbox/plugins und 4 weiteren Einträger in dem Menü der blauen Taste.
Beispiel3: Das Reset-Plugin
Leider habe ich dieses auch nicht mehr gefunden, aber im Flexmenü reicht ein einfacher Eintrag:
Das kann allerdings auf nicht korrekt eingerichteten Images manchmal nicht ausreichen, dann kann man dies durch diese Zeile ersetzen:
Also spart dieses kurze shellexec.conf spart 19 Dateien im /var und Zoom und Pal/NTSC sind schon 34,6KB groß. Und statt 8 Einträgen in dem Menü der blauen Taste ist dort nur einer (der des Flexmenüs) vorhanden.
Hier habe ich die Zoombefehle in ein Untermenü gepackt, das macht das Ganze etwas übersichtlicher.
Weitere Spar- und Aufräummaßnahmen:
Manche Plugins wie das Sysinfo oder auch Tuxwetter können direkt aus dem Flexmenü gestartet werden und damit auf die .cfg und .so Dateien entfallen, in diesem Beispiel genügen dann diese Zeilen:
Hier wird diesmal nicht der Befehl Action sondern der Befehl Dependon eingesetzt, damit diese Zeile nur erscheint, wenn diese Dateien auch wirklich vorhanden sind. Dieses funktioniert mit einer Reihe von Plugins.
Die Plugins auf der blauen Taste werden ja nun nicht von jedem verwendet, aber einige davon sind ja fest im Image eingebaut. Um diese dennoch aus dem Menü der blauen Taste verschwinden lassen zu können, muss man folgendermaßen vorgehen:
Man kopiert die entsprechende .cfg-Datei vom Ordner /lib/tuxbox/plugins nach /var/tuxbox/plugins und ändert den Eintrag type=2 in type=0 um. Das Plugin ist damit aus dem Menü der blauen Taste verschwunden.
Will man das Plugin trotzdem noch benutzen können, muss man einen Link auf die .so-Datei in dem Ordner /var/tuxbox/plugins erzeugen. Dies klappt am besten mit Telnet. Dazu öffnet man in Windows NT/2K/XP ein Dos-Fenster per Start – Ausführen – cmd und gibt dort „telnet box-ip“ (z.B. telnet 192.168.0.4) ein. Dann wird der Benutzer abgefragt, in unserem Falle heißt der root und das Passwort ist im JtG-Image dbox2. Nun kann man in dem Telnet Befehle auf der Dbox auslösen. Der Befehl ln –s /lib/tuxbox/plugins/lcdcirc.so /var/tuxbox/plugins/lcdcirc.so verknüpft z.B. die lcdcirc.so in den Plugin-Ordner. Sollte es in der .cfg-Datei definierte Abhängigkeiten geben (bei der lcdcirc.cfg ist die Zeile „depend=libfx2.so“ enthalten, was eine Abhängigkeit von dieser Datei definiert) ist es erforderlich auch diese Datei dorthin zu verlinken, im Beispiel also „ln –s /lib/libfx2.so /var/tuxbox/plugins/libfx2.so“. Um das Plugin zu starten kann man wget nutzen, im Beispiel sieht diese Zeile dann so aus:
Diese Methode kostet zwar wieder ein paar Bytes in der /var, aber dafür gibt es mehr Übersicht in dem Menü der blauen Taste.
Um Dateien zu wechseln, gibt es ja auch Plugins, z.B. das Avia-Wechsel-Plugin und das VNC für mehrere Rechner Plugin. Dies kann man mit dem Flexmenü aber auch direkt umsetzen. Dazu werden die Ausgangsdateien umbenannt und ein Link erzeugt, der dann vom jeweiligen Programm genutzt werden kann.
Bsp:
Wobei bei dem Aviatausch die Dateien avia600.022 und avia600.028 vorrausgesetzt sind.
Beim Tausch der VNC-Konfigurationen wird vorausgesetzt, das diese in den Dateien vnc1 und vnc2 vorhanden sind und im Ordner /var/plugins/vnc liegen.
Eine weitere Möglichkeit Platz in /var zu erhalten, ist natürlich Dateien in ein gemountetes Verzeichnis auszulagern. Im Beispiel nehme ich dazu fbshot, was allein durch seine Größe sonst nur in /tmp eingesetzt werden kann. Das Plugin fbshot erzeugt Snapshots des Framebuffers, die dann als .png-Datei nach /mnt/custom geschrieben werden. Ein Delay von ca. 10sek. Eingebaut, damit man das entsprechende Menü erst mal aufgerufen werden kann. Durch ändern des Wertes nach Sleep lässt sich das natürlich auch individuell anpassen. Der Snapshot wird mit einem Timestamp im Dateinamen gesichert und dadurch kann man mehrere Snapshots machen und hat diese dann schon zur weiteren Verwendung auf dem Rechner.
Hier wieder mit dem Aufruf Dependon damit diese Funktion nur zur Verfügung steht, wenn das Verzeichnis mit fbshot wirklich als /mnt/custom gemountet ist.
Das funktioniert auch mit anderen Dateien, Sysinfo z.B. könnte man so auch auslagern. Selbst ein Flashen oder Sichern des Images wäre so problemlos möglich. Auch alle .sh-Skripte könnte man so auslagern. Diese lassen sich übrigens direkt aus dem Flexmenü starten.
Die Beispiel shellexec.conf sieht dann jetzt so aus:
Sortieren kann man die Einträge auf der blauen Taste übrigens auch. Dazu einfach den Namen von .so- und .cfg-Datei umbenennen nach dem Muster 0x_Pluginname.z – wobei x=Nummer im Menü ist (ACHTUNG: die 01 ist reserviert für Tuxtxt) und z dann die Dateiendung. Beide Dateien müssen natülich immer noch namensgleich sein (z.B. 02_shellexec.so und 02_shellexec.cfg) und die .so-Datei muß natürlich ausführbar bleiben (chmod 755).
Ich hänge sie gezippt auch noch mal an. Sie ist mittlererweile 1,6KB groß, aber für die vielen Funktionen meiner Meinung nach durchaus eine vertretbare Größe, die durch den Ersatz der enthaltenen PlugIns locker ausgeglichen werden sollten. Ich benutze als Editor den Crimson Editor, der sehr Problemlos funktioniert und Änderungen per FTP direkt machen kann, ohne das man zusätzlich die Datei ständig noch per FTP zwischen Rechner und Box hin- und herschieben muss.
Ich hoffe, dieses kleine Howto bringt Euch das Flexmenü etwas näher und macht euch Lust dazu dafür auch mal etwas eigenes zu basteln.
cu
Jens
ich hab mich in den letzten Tagen ein wenig mit dem Flexmenü auseinandergesetzt.
Download: hier
Die Installation ist im Readme beschrieben. Anschließend befindet sich im Ordner /var/plugins die Datei Shellexec mit einer Größe von 35.9 KB und im Ordner /var/tuxbox/plugins die Dateien shellexec.so (9,19KB) und shellexec.cfg (ca.86Byte), sowie die Datei shellexec.conf im Ordner /var/tuxbox/config (Große kommt hier drauf an, was ihr hier reinschreibt).
Damit sind jetzt erst mal, selbst bei leerer shellexec.conf schon mal ca. 46KB weg. Das ist eine Menge Platz, kann aber zu einem nicht unerheblichen Teil wieder rein geholt werden.
So z.B. wenn man andere Plugins ersetzen kann, die man dann natürlich nicht mehr bzw. nur noch zum Teil installieren muss.
Beispiele:
Das EPG-Reset Plugin:
Leider habe ich das alte Original nicht mehr gefunden, aber es bestand aus 3 Dateien: scrplug1.cfg, scrplug1.so und der shell1. Sinn der .cfg und .so war eigentlich nur, das Skript in der shell1 auszuführen. Das könnte man heute schon leichter machen, indem man das nach den Skript-Regeln ummodeln würde (s. dazu hier mehr). Aber dann hat man immer noch 2 Dateien und einen Eintrag im Menü der blauen Taste, was eh schon mehr als voll genug ist. Da der Inhalt der Shell recht einfach aufgebaut war, kann man es auch komplett in das Flexmenü übernehmen.
Shell1 enthielt diesen Code:
Code: Alles auswählen
#!/bin/sh
killall -9 sectionsd
sleep 2
sectionsd
exit;
Code: Alles auswählen
ACTION=EPG Reset, killall –9 sectionsd ; sleep2 ; sectionsd , EPG gelöscht
Das beinhaltet normalerweise 6 Dateien und setzt 2 Einträge ins Menü der blauen Taste.
Inhalt der shell1:
Code: Alles auswählen
#!/bin/sh
pzapit --ntsc
saa -n
exit;
Code: Alles auswählen
#!/bin/sh
pzapit --pal
saa -p
exit;
Code: Alles auswählen
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa –ntsc
Code: Alles auswählen
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
Beispiel3: Das Reset-Plugin
Leider habe ich dieses auch nicht mehr gefunden, aber im Flexmenü reicht ein einfacher Eintrag:
Code: Alles auswählen
ACTION=Reboot, reboot, Box wird neu gestartet
Code: Alles auswählen
ACTION=&Reboot, killall sectionsd;killall camd2;killall controld;killall timerd;reboot, Box wird neu gestartet
Code: Alles auswählen
# ShellExec Version 1.44, Greez SnowHead
FONT=/share/fonts/micron_bold.ttf
FONTSIZE=20
PAGING=1
MENU=PLUGINS
ACTION=&Reboot, reboot, Box wird neu gestartet
ACTION=&EPG Reset, killall -9 sectionsd ; sleep 3 && sectionsd, EPG neu gestartet
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa --ntsc
MENU=Format
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
ENDMENU
ENDMENU
Weitere Spar- und Aufräummaßnahmen:
Manche Plugins wie das Sysinfo oder auch Tuxwetter können direkt aus dem Flexmenü gestartet werden und damit auf die .cfg und .so Dateien entfallen, in diesem Beispiel genügen dann diese Zeilen:
Code: Alles auswählen
DEPENDON=§Sysinfo,/var/plugins/sysinfo,/var/plugins/sysinfo
DEPENDON=&Tuxwetter,/var/plugins/tuxwet/tuxwetter,/var/plugins/tuxwet/tuxwetter
Die Plugins auf der blauen Taste werden ja nun nicht von jedem verwendet, aber einige davon sind ja fest im Image eingebaut. Um diese dennoch aus dem Menü der blauen Taste verschwinden lassen zu können, muss man folgendermaßen vorgehen:
Man kopiert die entsprechende .cfg-Datei vom Ordner /lib/tuxbox/plugins nach /var/tuxbox/plugins und ändert den Eintrag type=2 in type=0 um. Das Plugin ist damit aus dem Menü der blauen Taste verschwunden.
Will man das Plugin trotzdem noch benutzen können, muss man einen Link auf die .so-Datei in dem Ordner /var/tuxbox/plugins erzeugen. Dies klappt am besten mit Telnet. Dazu öffnet man in Windows NT/2K/XP ein Dos-Fenster per Start – Ausführen – cmd und gibt dort „telnet box-ip“ (z.B. telnet 192.168.0.4) ein. Dann wird der Benutzer abgefragt, in unserem Falle heißt der root und das Passwort ist im JtG-Image dbox2. Nun kann man in dem Telnet Befehle auf der Dbox auslösen. Der Befehl ln –s /lib/tuxbox/plugins/lcdcirc.so /var/tuxbox/plugins/lcdcirc.so verknüpft z.B. die lcdcirc.so in den Plugin-Ordner. Sollte es in der .cfg-Datei definierte Abhängigkeiten geben (bei der lcdcirc.cfg ist die Zeile „depend=libfx2.so“ enthalten, was eine Abhängigkeit von dieser Datei definiert) ist es erforderlich auch diese Datei dorthin zu verlinken, im Beispiel also „ln –s /lib/libfx2.so /var/tuxbox/plugins/libfx2.so“. Um das Plugin zu starten kann man wget nutzen, im Beispiel sieht diese Zeile dann so aus:
Code: Alles auswählen
ACTION=LCD-Circ,wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=lcdcirc.cfg
Um Dateien zu wechseln, gibt es ja auch Plugins, z.B. das Avia-Wechsel-Plugin und das VNC für mehrere Rechner Plugin. Dies kann man mit dem Flexmenü aber auch direkt umsetzen. Dazu werden die Ausgangsdateien umbenannt und ein Link erzeugt, der dann vom jeweiligen Programm genutzt werden kann.
Bsp:
Code: Alles auswählen
MENU=Avia tauschen
ACTION=&Avia600vb022 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.022 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ACTION=&Avia600vb028 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.028 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ENDMENU
MENU=VNC für mehrere Rechner
ACTION=VNC für Rechner 1 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc1 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ACTION=VNC für Rechner 2 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc2 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ENDMENU
Beim Tausch der VNC-Konfigurationen wird vorausgesetzt, das diese in den Dateien vnc1 und vnc2 vorhanden sind und im Ordner /var/plugins/vnc liegen.
Eine weitere Möglichkeit Platz in /var zu erhalten, ist natürlich Dateien in ein gemountetes Verzeichnis auszulagern. Im Beispiel nehme ich dazu fbshot, was allein durch seine Größe sonst nur in /tmp eingesetzt werden kann. Das Plugin fbshot erzeugt Snapshots des Framebuffers, die dann als .png-Datei nach /mnt/custom geschrieben werden. Ein Delay von ca. 10sek. Eingebaut, damit man das entsprechende Menü erst mal aufgerufen werden kann. Durch ändern des Wertes nach Sleep lässt sich das natürlich auch individuell anpassen. Der Snapshot wird mit einem Timestamp im Dateinamen gesichert und dadurch kann man mehrere Snapshots machen und hat diese dann schon zur weiteren Verwendung auf dem Rechner.
Code: Alles auswählen
DEPENDON=Fbshot in 10 sec, chmod 755 /mnt/custom/fbshot ; sleep 10 && /mnt/custom/fbshot /mnt/custom/`date +%Y%m%d%H%M%S`.png ,/mnt/custom/fbshot
Das funktioniert auch mit anderen Dateien, Sysinfo z.B. könnte man so auch auslagern. Selbst ein Flashen oder Sichern des Images wäre so problemlos möglich. Auch alle .sh-Skripte könnte man so auslagern. Diese lassen sich übrigens direkt aus dem Flexmenü starten.
Die Beispiel shellexec.conf sieht dann jetzt so aus:
Code: Alles auswählen
# ShellExec Version 1.44, Greez SnowHead
FONT=/share/fonts/micron_bold.ttf
FONTSIZE=20
PAGING=1
MENU=PLUGINS
ACTION=&Reboot, reboot, Box wird neu gestartet
ACTION=&EPG Reset, killall -9 sectionsd ; sleep 3 && sectionsd, EPG neu gestartet
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa --ntsc
MENU=Format
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
ENDMENU
DEPENDON=§Sysinfo,/var/plugins/sysinfo,/var/plugins/sysinfo
DEPENDON=&Tuxwetter,/var/plugins/tuxwet/tuxwetter,/var/plugins/tuxwet/tuxwetter
ACTION=LCD-Circ,wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=lcdcirc.cfg
MENU=Avia tauschen
ACTION=&Avia600vb022 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.022 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ACTION=&Avia600vb028 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.028 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ENDMENU
MENU=VNC für mehrere Rechner
ACTION=VNC für Rechner 1 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc1 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ACTION=VNC für Rechner 2 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc2 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ENDMENU
DEPENDON=Fbshot in 10 sec, chmod 755 /mnt/custom/fbshot ; sleep 10 && /mnt/custom/fbshot /mnt/custom/`date +%Y%m%d%H%M%S`.png ,/mnt/custom/fbshot
ENDMENU
Ich hänge sie gezippt auch noch mal an. Sie ist mittlererweile 1,6KB groß, aber für die vielen Funktionen meiner Meinung nach durchaus eine vertretbare Größe, die durch den Ersatz der enthaltenen PlugIns locker ausgeglichen werden sollten. Ich benutze als Editor den Crimson Editor, der sehr Problemlos funktioniert und Änderungen per FTP direkt machen kann, ohne das man zusätzlich die Datei ständig noch per FTP zwischen Rechner und Box hin- und herschieben muss.
Ich hoffe, dieses kleine Howto bringt Euch das Flexmenü etwas näher und macht euch Lust dazu dafür auch mal etwas eigenes zu basteln.
cu
Jens