/usb/bin/rc.usb

Aus M740 WikiWeb

Wechseln zu: Navigation, Suche

Datei: /usb/bin/rc.usb

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:

  • 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)

Persönliche Werkzeuge