/usb/bin/rc.usb
Aus M740 WikiWeb
Inhaltsverzeichnis |
Einleitung
Dieser Hook soll es Benutzern ohne LAN aber mit USB-Festplatte ermöglichen, Modifikationen an ihrer Firmware vorzunehmen. Kanidaten für solche Modifikationen ist z.B. die Datei /var/etc/lemmi-settings.txt.
Dieser Hook wurde erstmalig in Firmware 1.50.6.lemmi-03 (2005-08-13 20:50) eingebaut.
Aufruf
Am Ende des Boot-Scriptes /etc/rc steht der folgende Code:
#----- /var/etc/rc.local und /usb/bin/rc.usb
if [[ "$LEMMI_FIRST_BOOT" == "no" ]]; then
[[ -f /var/etc/rc.local ]] && /bin/sh /var/etc/rc.local > /var/log/rc.local.log 2>&1 &
( sleep 30
if [[ -f /usb/bin/rc.usb ]]; then
export PATH=$PATH:/usb/bin
sh /usb/bin/rc.usb > /usb/bin/rc.usb.log 2>&1 &
fi
) &
fi
Handelt es sich nicht um den ersten Boot-Vorgang nach einem Voll-Update (im Gegensatz zu einem Mini-Update), dann wird zuerst, falls existend, /var/etc/rc.local aufgerufen. Danach wird ein inline-Script (Der Teil in den runden Klammern) im Hintergrund, gestartet.
Dieses inline-Script wartet 30 Sekunden, damit die wavebox genügend Zeit hat, die USB-Festplatte zu mounten. Sollte danach die Datei /usb/bin/rc.usb existieren, dann werden die folgenden beide Schritte ausgeführt:
- Das Verzeichnis /usb/bin wird an Ende des Pfades (Umgebungsvariable PATH) eingefügt. Damit können alle Kommandos, die sich in diesem Verzeichnis befinden, ohne Pfadangabe ausgeführt werden.
- Das Script wird /usb/bin/rc.usb wird aufgerufen. stdout und stderr werden nach /usb/bin/rc.usb.log umgeleitet. Damit ist eine Kontrolle des Scriptes möglich.
Anmerkung: /usb ist dabei ein Kürzel auf die USB-Platte (Softlink zu /var/media/USB-HDD) bzw. ab Firmware 2.x /usb1 für /var/media/USB-HDD-1 und /usb2 für /var/media/USB-HDD-2
Möglichkeiten von /usb/bin/rc.usb
lemmi-settings.txt
Der Firmware-Distribution liegen im Verzeichnis usb-bin/ zwei Scripte bei: rc.usb und check-usb-settings. Beide Scripte können direkt nach /usb/bin kopiert werden. Bei einer ext3-Partition sollten noch die Dateiflags zur Ausführung gesetzt werden, z.B. mit dem Kommando
chmod 755 rc.usb check-usb-settings'
Das Script rc.usb:
#!/bin/sh mkdir -p /usb/settings check-usb-settings
Dieses ist ein exemplarisches Script, welches das Verzeichnis /usb/settings erzeugt und danach check-usb-settings (das folgende Script) aufruft.
Das Script check-usb-settings:
#!/bin/sh
name=lemmi-settings
workdir=/usb/settings
etcdir=/var/etc/
if [[ -d $workdir ]]; then
[[ -f $workdir/$name.next ]] && rm -f $workdir/$name.next
[[ -f $workdir/$name.prev ]] && rm -f $workdir/$name.prev
[[ -f $etcdir/$name.txt ]] && cp $etcdir/$name.txt $workdir/$name.prev
if [[ -f $workdir/$name.txt ]]; then
cat $workdir/$name.txt >> $etcdir/$name.txt
mv $workdir/$name.txt $workdir/$name.old
lemmi-setup setup
cp $etcdir/$name.txt $workdir/$name.next
fi
fi
Dieses Script ermöglicht es, die Lemmi-Einstellungen zu kontrollieren und zu modifizieren:
- Das Script zeigt nur dann Wirkung, wenn das Verzeichnis /usb/settings existiert. /usb ist dabei ein Kürzel auf die USB-Platte (Softlink zu /var/media/USB-HDD) bzw. ab Firmware 2.x /usb1 für /var/media/USB-HDD-1 und /usb2 für /var/media/USB-HDD-2
- Die alte Version von /var/etc/lemmi-settings.txt wird nach /usb/settings/lemmi-settings.prev gesichert. Sollte keine alte Version existieren, dann wird /usb/settings/lemmi-settings.prev gelöscht.
- Die folgenden drei Schritte werden nur ausgeführt, wenn die Datei /usb/settings/lemmi-settings.txt exstiert:
- Der Inhalt der Datei /usb/settings/lemmi-settings.txt wird an das Ende von /var/etc/lemmi-settings.txt kopiert. Damit haben die Parameter aus /usb/settings/lemmi-settings.txt Vorrang.
- Die Datei /usb/settings/lemmi-settings.txt nach /usb/settings/lemmi-settings.old umbenannt, damit die nicht nocheinmal verwendet wird.
- Das Script lemmi-setup wird aufgerufen, um die Datei /var/etc/lemmi-settings.txt zu normalisieren. Diese normalisierte Datei wird nach /usb/settings/lemmi-settings.next kopiert.
Die Änderungen sind allerdings erst nach dem nächsten Boot-Vorgang wirksam.
Nach dem Bootvorgang befindet sich dann die Datei lemmi-settings.prev und ggf. auch die Datei lemmi-settings.next im Verzeichnis /usb/setting. Diese beiden Dateien können dann als Vorlage für eine neue /usb/settings/lemmi-settings.txt verwendet werden.
Verzeichnisse & Dateien der Firmware
/ (root file system; gemounted von /dev/mtd1)
- /data (Verzeichnis; gemounted von /dev/mtd2)
- /data/.timer (Verzeichnis)
- /data/RA_FILE
- /data/SI (Verzeichnis)
- /etc (Verzeichnis)
- /sbin (Verzeichnis)
- /usb (Softlink nach /var/media/USB-HDD) bis Firmware 1.x
- /usb1 (Softlink nach /var/media/USB-HDD-1) ab Firmware 2.x
- /usb2 (Softlink nach /var/media/USB-HDD-2) ab Firmware 2.x
- /usb/bin (Verzeichnis)
- /usb/bin/rc.usb
- /usb/bin (Verzeichnis)
- /usr (Verzeichnis)

