P89626/usb key func
Über die "USB Key Function" des MEDION LIFE P89626 (MD 86407) NAS.
<< zurück zur Hauptseite 'P89626'
Information
Mit einem USB-Stick und bestimmten Dateien darauf, kann man recht frühzeitig im Bootprozess eigene Aktionen per Skript starten. Den Bootprozess weiter führen oder abbrechen...
Link zum Thema: http://zyxel.nas-central.org/wiki/Usb_key_func.sh
Vorlage Dateien findet man hier: https://github.com/jedie/NAS7820-Tools/tree/master/usb_key_func
Stick Formatieren
Dazu braucht man einen Stick mit vFat. Diese läßt sich z.B. auf der Box so einrichten:
/ # mkdosfs /dev/sda1 -v -n USB_vFAT -i 12345678 mkdosfs 2.11 (12 Mar 2005) /dev/sda1 has 255 heads and 63 sectors per track, logical sector size is 512, using 0xf8 media descriptor, with 1028096 sectors; file system has 2 16-bit FATs and 16 sectors per cluster. FAT size is 251 sectors, and provides 64222 clusters. Root directory contains 512 slots. Volume ID is 12345678, volume label USB_vFAT .
Ein anderes Dateisystem geht wegen einem Bug (weil iocharset=utf8 beim mounten genutzt wird) nicht, siehe http://www.mikrocontroller.net/topic/240238?page=2#2452052
Einrichten
Auf den Stick legt man folgende Dateien (jeweils im root Verzeichnis) an:
usb_key_func.sh
#!/bin/sh echo "Hello from usb_key_func.sh !!!" exit 1
(Info: Beendet sich das Skript mit exit 1, wird der Bootprozess fortgesetzt. Andernfalls nicht.
STG212_check_file
/mnt/parnerkey/usb_key_func.sh /mnt/parnerkey/usb_key_func.md5
usb_key_func.md5 Diese Datei muß man auf der Box erstellen und enthält die Ausgabe von md5sum. z.B.:
~ # cd /e-data/XXX/ # <- XXX ist irgendeine ID deines Sticks! /e-data/XXX/ # cat /etc/Zy_Private usb_key_func.sh | md5sum > usb_key_func.md5
alternative usb_key_func.sh
Hier eine Alternative Version von usb_key_func.sh, die nicht weiter bootet, aber die Box per telnet erreichbar macht:
#!/bin/sh echo "Hello from usb_key_func.sh !!!" # IP mittels DHCP setzten /sbin/udhcpc -i egiga0 telnetd -l /bin/sh &
Möchte man dann normal starten kann man den Stick ziehen und neustarten, oder per Telnet den Stick "deaktivieren" das machen:
/ # mount -o remount,rw /mnt/parnerkey / # mv /mnt/parnerkey/STG212_check_file /mnt/parnerkey/_STG212_check_file
Nun kann man mit "reboot" natürlich neu starten, oder quasi den init Fortsetzten mit:
/ # /etc/init.d/rcS
Hintergrund Info
Auf der Box ist die Datei /etc/init.d/rcS für die Aktion zuständig. Kurz zusammengefasst:
Es wird versucht jeden USB Stick nach /mnt/parnerkey zu mounten. Ist dies Erfolgreich und befindet sich dann die Datei STG212_check_file drauf, wird mit /sbin/check_key die "Integrität" überprüft. Ist alles ok, wird letztlich /mnt/parnerkey/usb_key_func.sh Ausgeführt.
Der Inhalt der Datei /etc/Zy_Private ist anscheinend auf allen Boxen gleich. Er ist sogar der selbe, wie auf den Zyxel NSA
Ausblick
Nützlich ist das ganze Prozedur, um ein Debian vom USB Stick zu starten, ohne uBoot/Kernel im Flash ändern zu müssen. Siehe: http://zyxel.nas-central.org/wiki/Debian_without_need_to_flash
Jedoch ist dazu reloaded-2.6.31.14_SMP_820.ko nötig, siehe: http://www.mikrocontroller.net/topic/240238?goto=2452465#2452465 um den Kernel komplett zu tauschen.
Ohne reloaded könnte man versuchen über chroot ein Debian System zu erhalten. Das klappt allerdings noch nicht, siehe: http://www.mikrocontroller.net/topic/240238?goto=2452465#2452369