Firmware-Infos und Updates

Aus NAS Wiki

Wechseln zu:Navigation, Suche

Inhaltsverzeichnis

Hersteller-Support

Der deutsche Hersteller Raidsonic bietet auf seiner Homepage unter Service - Treiber Download die aktuellste Firmware inklusive diverser Erweiterungstools wie zum Beispiel einen SSH Server an.


Liste der Firmware-Updates

Aufbau der Firmware-Updates

Die Firmware-Update-Dateien sind bisher so aufgebaut, dass man sie theoretisch ändern könnte, um eigene Updates einzuspielen.

Der Aufbau wird hier am Beispiel Update-Datei IB-NAS4220fw.zip erläutert.

  • Die Datei selbst ist ein ZIP-Archiv und lässt sich einfach entpacken.
  • Die enthaltene Datei 2.6.0.IB.1.RS.1-webup-20071026.tgz wird zum Installieren des Updates nicht entpackt, kann für eigene Untersuchungen aber gut entpackt werden.
  • In diesem Archiv stecken zwei Dateien:

ImageInfo enthält Basis-Informationen zur Firmware:

   UpgradeImages="rd.gz"
   productName="IB-NAS4200-B"
   hardwareName="SL3516 Verification Board"
   productVendor="StorLink Semiconductors, Inc."
   manufacturerURL="http://www.storlinksemi.com"
   Description="IB-NAS4200-B"
   hostname="IB-NAS4200-B"
   softwareVersion="2.6.0.IB.1.RS.1"
   TSS="enabled"
   DIRECT_MODE="disabled"
   Raid_Support="raid0_raid1_linear"
   RaidTestDiskSize="0"
   DEFAULT_LAN_IPADDR="192.168.1.1"
   DEFAULT_LAN_NETMASK="255.255.255.0"
   DEFAULT_LAN_BOOTPROTO="dhcp"
   DEFAULT_WAN_BOOTPROTO="none"
   DEFAULT_WAN_ENABLED="no"
   DEFAULT_WLAN_DEVICENAME="ra0"
   DEFAULT_LAN_DEVICENAME="eth0"
   DEFAULT_HW_LAN_DEVICENAME="eth0"
   DEFAULT_WAN_DEVICENAME="eth1"
   DEFAULT_HW_WAN_DEVICENAME="eth1"
   SUPPORT_FILESYSTEM="ext2_ext3_fat32"
   SUPPORT_ENCRYPT_FILESYSTEM="ext2"
   DEFAULT_DHCP_ENABLED="0"
   SUPPORT_CODEPAGE="CP437_CP950_CP936_CP1145_CP1250_CP1252_CP932_CP949"
   DEFAULT_SERVER_CODEPAGE="CP950"
   FACTORY_RESET_ADMIN="0"
   BUILD_DATE=�g�|  8��  9 16:23:28 CST 2007

rd.gz ist ein Archiv, das eine Image-Datei (new_Ramdisk) enthält.

  • Die Image-Datei enthält ein Datei-System im EXT2-Format und kann gemountet werden:
    gunzip rd.gz
    mkdir /mnt/tmp
    mount -t ext2 -o loop rd /mnt/tmp

Ein ll /mnt/tmp zeigt folgenden Inhalt:

   ll /mnt/tmp
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 volume2
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 volume1
   drwxr-xr-x    8 root     root         1024 Aug  9 10:23 var
   drwxr-xr-x    9 root     root         1024 Aug  9 10:24 usr
   drwxrwxrwx    2 root     root         1024 Aug  9 10:23 tmp
   drwxr-xr-x    2 root     root         1024 Sep 10 15:13 sbin
   drwxr-xr-x    2 root     root         1024 Aug  9 10:24 root
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 proc
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 mnt
   lrwxrwxrwx    1 root     root           11 Oct 26 11:27 linuxrc -> bin/busybox
   drwxr-xr-x    3 root     root         1024 Aug  9 10:24 lib
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 initrd
   drwxrwxrwx    2 root     root         1024 Aug  9 10:23 home
   drwxr-xr-x    5 root     root         1024 Oct 26 11:27 etc
   drwxr-xr-x    3 root     root         4096 Aug  9 10:23 dev
   drwxr-xr-x    2 root     root         1024 Aug  9 10:23 bin
   drwx------    2 root     root        12288 Aug  9 10:24 lost+found
   drwxr-xr-x    4 root     root         1024 Jan  1 17:21 ..
   drwxr-xr-x   18 root     root         1024 Oct 26 11:27 .

An dieser Stelle könnte man einzelne Dateien austauschen, einfügen oder ändern, um sich eine angepasst "Firmware-Version" zu erstellen. Danach sollte man auch die Zeile softwareVersion in ImageInfo und /mnt/tmp/etc/ImageInfo anpassen. Nach dem umount der Ramdisk sind die gemachten Änderungen automatisch in der Datei rd enthalten und das ganze kann wieder zu einem Image verpackt werden:

   umount /mnt/tmp
   gzip rd
   tar cvzf MyNewImage.tgz rd.gz ImageInfo

Das neue Image kann genauso wie das Originalimage installiert werden. Eine Sicherung durch eine Checksumme gibt es meines Wissens nicht.

Quelle: Holgers Web

Ein Beispiel für eine neue Ramdisk mit erweiterter Busybox im Forum

Allgemeines zur Firmware

Embedded Linux

Auf dem NAS-4220 läuft ein Embedded Linux.

Der Quellcode kann beim Hersteller heruntergeladen werden unter IB-NAS4220 Sources.

Als Boot-Loader kommt anscheinend das frei verfügbare RedBoot zum Einsatz, wie man mit folgendem Kommando in der SSH-Konsole erfahren kann:

   cat /proc/mtd

Zeigt folgende Infos an (bei der Firmware 2.6.0.IB.1.RS.1):

   dev:    size   erasesize  name
   mtd0: 00020000 00020000 "RedBoot"
   mtd1: 00300000 00020000 "Kernel"
   mtd2: 00600000 00020000 "Ramdisk"
   mtd3: 00600000 00020000 "Application"
   mtd4: 00020000 00020000 "VCTL"
   mtd5: 000a0000 00020000 "CurConf"
   mtd6: 00020000 00020000 "FIS directory"

Mehr Infos zu RedBoot gibt es auch bei WikiPedia.

Die einzelnen Firmwarebestandteile kann man auslesen mit folgendem Befehl:

   for i in 0 1 2 3 4 5 6; do dd if=/dev/mtd$i of=<Ausgabeverzeichnis>/mtd$i.bin; done

Diese Dateien kann man dann z.B. mit einem Hexeditor analysieren. Der Inhalt von /dev/mtd2 ist genau die Datei "rd.gz" aus dem Firmwareupdate (aufgefüllt mit 0xFF), /dev/mtd3 ist eine bzip2-komprimierte tar-Datei (aufgefüllt mit 0x00), die das Verzeichnis /system/hddapp enthält.

BusyBox Kommandozeilen-Tools

Das Embedded Linux stellt eine reduzierte Menge der Standard-LINUX-Kommandozeilen-Tools mit Hilfe von BusyBox (GNU General Public License) bereit.

BusyBox vereint die vielen Kommandozeilen-Tools in eine ausführbare Datei

   /bin/busybox

Ein Kommando wird als Aufruf-Parameter an diese ausführbare Datei übergeben, z. B.

  /bin/busybox ls

Damit die ausführbare Datei nicht immer angegeben werden muss, wurden bei der NAS-4220B symbolische Links angelegt, die auf die ausführbare Binärdatei von BusyBox zeigen, z. B.

  ln -s /bin/busybox ls

So könnte man wahrscheinlich auch wichtige Kommandos aufrufen, die (absichtlich?) fehlen (z. B. chroot, su).


Mehr Infos zu den Kommandos gibt es auf der Website der BusyBox.


Weitere Infos zu BusyBox im Internet gibt es hier:


Eigene Firmware-Erweiterungen

Applets

BusyBox kann durch sog. Applets erweitert werden. Eine Anleitung könnt Ihr euch HIER runterladen.

Manipulierte Firmware-Update-Dateien

Eigene angepasste Firmware-Updates könnte man auch durch eine manipulierte Firmware-Update-Datei erstellen.

Siehe: Modifizierte Firmware (dort auch: "Kernel im debian-chroot auf der Box kompilieren")

Firmware Features und Buglist

Alle Bugs und Fehler aus der Firmware 2.6.3 vom 29.9.2008 die auftreten oder festgestellt werden,
bitte hier in der Liste eintragen! Vielen Dank!

Firmware 2.6.3 Buglist

  • Samba vergisst den Workgroup-Namen nach dem Spindown der HDD´s ( statt z.B. den eingegebenen Namen "Arbeitsgruppe" steht´s bis zum Neustart der NAS wieder auf "WORKGROUP" )
  • Spindown noch nicht fehlerfrei: Der samba server smbd greift alle 30 Minuten auf /system/hddapp/etc/samba/secrets.tdb zu. siehe auch hier.
  • telnet-Server lässt sich nicht aktivieren.

(Bzw. wer von der alten 2.6.1 mit aktiviertem Telnet updatet, bei dem bleibt Telnet aktiv, läßt sich dann aber nicht mehr per Web ausschalten, )

  • Menübaum im webinterface ist nach dem update nicht sichtbar.
    Abhilfe verschafft üblicherweise ein Leeren des Browser-cache. Falls das auch nichts nützt, hilft ev. diese Vorgehensweise (bitte noch bestätigen).
  • Torrent-Client arbeitet immer noch nicht fehlerfrei (Portänderung etc. werden nicht oder nur manchmal übernommen).
  • Weiterhin - bei vereinzelten usern - das Problem mit Aussetzern beim Streamen von Multimedia-Files (Filme, Musik,etc...), das unabhängig vom verwendeten Raid-Modi oder Netzwerkaufbau auftritt!
  • Festplatten werden in JBOD-Konfiguration und mit neuem Kernel als ide3 und ide4 eingebunden (in der alten fw hießen sie ide1 und ide2), dies verursacht Probleme bei der Installation von Zusatzpaketen über "new software"
    Dieses Problem tritt nur dann auf, wenn vor 2.6.3 eine Testvariante benutzt wurde. (z.B. wenn RS die firmware im Zuge eines board Tauschs gleich mit auslieferte, im Zeitraum vor der Veröffentlichung von 2.6.3). Diese Testvariante tauschte auch den Kernel aus, der nun die Laufwerke als ide3 und ide4 anspricht. User die von der alten fw auf 2.6.3 direkt umstiegen, sollten dieses Problem nicht haben, da mit dem final release von 2.6.3 der kernel nicht geflasht wird
    Betroffene Pakete (bitte erweitern):
    • ssh-server. (Das ssh-server Paket funktioniert bei RAID-Konfigurationen übrigens schon (Laufwerksbezeichnung md1))
  • Es können auch andere Pakete betroffen sein die nicht mit IDE3/4 klar kommen. Pakete die Probleme machen bitte hier Posten.

Firmware 2.6.3.1 Features

Verbesserungen der Firmware 2.6.3.1 vom November 2008 laut Raidsonic:

  • Festplattenkompatibilität wurde weiter verbessert. Mit 1.5TB und 1TB Laufwerken aufgetretene Probleme sind behoben
  • SSH Server Paket kann jetzt auch wieder im JBOD-Modus installiert und verwendet werden, eine Korrektur der Laufwerksbenennung wurde durchgeführt
  • Produktname auf der Verwaltungsoberfläche wurde auf IB-NAS4220-B eingestellt, vorher wurde IB-NAS4200-B verwendet
  • Für klarere Kommunikation wird eine neue Versionsinfo verwendet
  • Firmware wurde für die Anwendungsentwicklung und Verwendung existierende Anwendungen geöffnet

Firmware 2.6.3.1/2 Buglist

Festgestellte Mängel nach einer Diskussion im Forum bitte hier eintragen

Nach ersten Tests sind alle bei Firmware 2.6.3.1 beobachteten Mängel auch in Firmware 2.6.3.2 noch vorhanden

  • Die eingebaute Versionskontrolle verhindert einen Downgrade auf eine ältere FW-Version.

Lösung: in /usr/sausalito/handlers/base/upgrade2/CheckImage.sh vor dem Up- oder Downgrade die folgenden Zeilen mit # auskommentieren oder entfernen:

...
if [ $Vendor_local != $Vendor_now ]; then
     echo "Error:The VendorID is wrong."
     exit 4
fi
...


Ursache: Im Verzeichnis /system/codb/objects/1 fehlt ggf. die Datei Telnet.enabled und der zugehörige Eintrag in /system/codb/objects/1/_SCALARS.

Lösung 1 (mit ssh-Package und putty):

 echo -n 1 > /system/codb/objects/1/Telnet.enabled
 echo "Telnet.enabled," >> /system/codb/objects/1/_SCALARS

Lösung 2 (mit userscript-Package; z.B. als Datei "enable_telnet.sh" in applications/userscript/scripts):

 #!/bin/sh
 killall inetd
 echo "telnet    stream  tcp     nowait  root    /usr/sbin/telnetd       telnetd" >> /etc/inetd.conf
 /usr/sbin/inetd

Die Datei muss mit einem "Unix-fähigen" Editor (z.B. Notepad++) erstellt werden (also nur LF am Zeilenende, nicht CR,LF).

In beiden Fällen sollte die Box dann nach einem Reboot wieder über telnet erreichbar sein.


  • Nach Plattenausfall und Rebuild ist das Raid 1 sofort wieder degraded.

Ursache: Raidsonic hat scheinbar in FW 2.6.3 die Default-Größe der /system-Partition von 100MB auf 500MB erhöht. Wenn das NAS noch mit einer älteren FW partitioniert und formatiert wurde und dann auf 2.6.3.1 upgegradet wurde, liegt die Größe der /system-Partition weiterhin bei 100MB. Nach einem Plattenausfall wird die /system-Partition der neuen Platte aber mit 500MB angelegt. Der Rebuild schaut leider nicht auf die Partitionsgrössen der intakten Platte. Wenn die neue Platte gleich groß ist wie die alte Platte, reicht der Plattenplatz zwar für den Rebuild von /dev/md0 (/system), aber nicht mehr für den Rebuild von /dev/md1 (/mnt/md1, Datenpartition). Daher: "Böse Falle". Die Partionen können mit "fdisk -l /dev/hda" bzw "fdisk -l /dev/hdb" angezeigt werden.

Lösung: Partitionierung der intakten Platte händisch auf die neue Platte übertragen und Repair manuell anstossen (Vorgehen siehe z.B. hier) oder NAS komplett neu aufsetzen.


  • cron-Jobs werden doppelt ausgeführt.

Ursache: Auf dem NAS laufen zwei crond-Prozesse

Lösung: userscript mit folgendem Inhalt:

 #!/bin/sh
 (sleep 20;echo "only one crond ...";killall crond;/usr/sbin/crond)&

Der sleep ist notwendig, um den ganze etwas zu verzögern, da die Userscripts doch recht früh beim Booten laufen.

Wer möchte, kann hier auch gleich seine eigenen Cron-Jobs einbauen:

 crontab -l > /tmp/cronjobs
 echo "0 0 * * * <Pfad_zu_Script>" >> /tmp/cronjobs
 #...
 crontab /tmp/cronjobs
 rm /tmp/cronjobs


  • Nach Nutzung des NAS als Printserver funktioniert Spindown nicht mehr

Ursache: Der lpd behält in der Standardkonfiguration den jeweils letzten Druckjob in der Printerqueue. Die ständige Prüfung des Queue-Status verhindert den Spindown der Platten.

Lösung: userscript mit folgendem Inhalt:

 #!/bin/sh
 #
 #set up lpd to delete jobs after printing
 echo "reconfigure lpd ..."
 killall lpd
 echo "done_jobs=0" >> /system/hddapp/etc/lpd/lpd.conf
 lpd


  • Spindown, Platten wachen ca. alle 30 Minuten auf

Ursache: Der Samba-Server weckt die Platten durch zyklische Zugriffe auf /system/hddapp/etc/samba/secrets.tdb

Lösung: Verlagerung von /system/hddapps/etc/samba auf die RAM-Disk, userscript mit folgendem Inhalt:

 #!/bin/sh
 #
 # move /system/hddapps/etc/samba to /etc/samba on RAM-Disk to help spindown
 echo "moving /system/hddapps/etc/samba to /etc and restart samba ..."
 /system/hddapp/etc/rc.d/S80samba.sh stop
 cp -r /system/hddapp/etc/samba /etc
 mount -o bind /etc/samba /system/hddapp/etc/samba
 /system/hddapp/etc/rc.d/S80samba.sh start

obwohl damit auch die smb.conf auf der RAM-Disk liegt, bleiben Änderungen an den Einstellungen der Shares auch nach einem Reboot erhalten, da die smb.conf aus /system/codb (Sausalito) beim Booten neu aufgebaut wird.


  • Probleme mit mc (Midnight Commander) und Samba

Wenn mc über "Applications -> New Software" eingespielt wird, kann es Probleme mit Samba geben. Forum

Lösung: mc per Hand einspielen, hier stehts. Aber macht evtl. trotzdem Probleme - also Vorsicht.


  • Der Printer-Server druckt nach mehreren Aufträgen nicht mehr erst wieder nach einen Reboot; nach dem Reboot werden alle schon gesendeten Aufträge ausgedruckt

evtl. gleiches Problem wie oben