IB-NAS6210 Linux

Diese Anleitung gilt ebenso fĂŒr den IB-NAS6220. Dieser besitzt 2 HDD SchĂ€chte und ein völlig anderes Webinterface. Über dieses ist es möglich, das root Passwort zu Ă€ndern (siehe diesen Forenbeitrag), was evtl. eine Neuinstallation einer Linux Distribution erĂŒbrigt.

Der Icy Box IB-NAS6210 (Affiliate Link) hat mit seiner hauseigenen Firmware nur einen beschrĂ€nkten Funktionsumfang. Es ist kein AFP oder DAAP möglich, was als Mac User von großem Nachteil ist. Deshalb muss Linux her, welches auf der verbauten ARM CPU hervorragend lĂ€uft. Es ist zwar bereits ein Linux System installiert, leider ist aber der root User nicht zugĂ€nglich.

Die Basisplattform des NAS6210 bildet die Kirkwood Plattform, welche auch im SheevaPlug und im OpenRD zum Einsatz kommt. Dies erleichtert die Suche nach einer fertigen Linux Distribution.

Update

Jayare hat mir per E-Mail mitgeteilt, dass er einen Weg gefunden hat, root Zugang zum Installierten Linux System zu bekommen. DafĂŒr folgende Schritte befolgen:

Dies Ă€hnelt den Methoden, die bei Netgear und Seagate GerĂ€ten zum root Zugriff fĂŒhren. Vielen Dank dafĂŒr, Jayare!

Hardware Modifikation

Um das Starten einer anderen Linux Distribution ĂŒber USB oder eSata zu ermöglichen, benötigen wir Zugang zum Bootloader Das U-Boot. Dieser gibt beim Booten Statusmeldungen ĂŒber den internen Seriellen Port des NAS aus und ermöglicht, den Bootprozess zu unterbrechen. Anschliessend kann ein anderer Kernel und eine passende Ramdisk zum Booten ausgewĂ€hlt werden. Eine bebilderte Anleitung zum aufspĂŒren des Seriellen Ports findet sich, auf Englisch, hier. Kurz zusammengefasst mĂŒssen die hintere Abdeckung und die hinteren FĂŒĂŸe weggeschraubt werden, danach lĂ€sst sich die Platine mitsamt der RĂŒckwand heraus schieben. Dabei sollte der Festplattenrahmen vorher entfernt worden sein. Unter dem LĂŒfter befinden sich einige Steckverbindungen auf der Platine. Davon ist eine 4 polige unbelegt. Dies ist der serielle Anschluss. Er arbeitet mit 3,3V Pegeln. Wenn der Stecker an der oberen linken Ecke sitzt, ist die Belegung wie folgt:

(GND) (TX) (RX) (3V3)

Ein passender Adapter um den Port an den Computer anzuschliessen ist schnell gemacht. Hierzu habe ich einen FT232R auf meine DIP Adapterplatine gelötet und wie folgt beschaltet (Klick vergrĂ¶ĂŸert):

Schaltplan Fertiger Adapter

Software

Nun besteht also eine Verbindung zwischen meinem Computer und dem NAS mit 115200bps. Wird letzterer nun gebootet, erscheinen U-Boots Statusmeldungen in meinem Terminal. FrĂŒher oder spĂ€ter erscheint ein Countdown. Wird dieser mit dem drĂŒcken einer beliebigen Taste unterbrochen, findet man sich in U-Boots Kommandozeile wieder. Hier kann zum Beispiel U-Boots eigenes USB System gestartet werden, damit ein Kernel von einem angeschlossenen USB Stick geladen werden kann. Alternativ kann ein Kernel von einem TFTP Server geladen und gestartet werden. Ausserdem können Umbgebungsvariablen angezeigt, geĂ€ndert, und im NAND gespeichert werden:

printenv
setenv name wert
saveenv

Zum Starten eines anderen Kernels muss zunĂ€chst die Variable "mainlineLinux" auf "yes" gesetzt werden. Anschliessend Ă€ndern wir die "arcNumber" auf "2361". Dies gaukelt dem Debian Linux Kernel ein anderes System vor, da es den NAS6210 nicht kennt und deshalb sonst nicht booten will. Die Originale arcNumber lautet 3104. Nun wird noch "ipaddr" auf die gewĂŒnschte NAS IP gesetzt und "serverip" auf die IP des Rechners, der im nĂ€chsten Schritt einen TFTP Server startet. Geschrieben werden die Änderungen dann mit saveenv.

setenv mainlineLinux yes
setenv arcNumber 2361
setenv ipaddr 192.169.2.107
setenv serverip 192.168.2.101
saveenv

Nun wird auf einem Rechner im selben Netzwerk ein TFTP Server gestartet. Ich habe auf meinem Mac TftpServer verwendet. Dieser muss ein uImage und eine uInitrd zur VerfĂŒgung stellen. Die verlinkten Dateien sind die des aktuellen Armel OpenRD Debian Installers. Der Installer wird nun auf dem NAS gebootet:

tftpboot 0x01100000 uInitrd
tftpboot 0x00800000 uImage
setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x00800000 0x01100000

Die Installation kann sowohl auf einem USB-Stick, einem eSATA oder einem internen SATA Laufwerk erfolgen. Ich habe Debian auf einen 8GB USB-Stick installiert. Beim Debian Support gibt es Hilfe zur Installation. Ist die Installation abgeschlossen, muss U-Boot konfiguriert werden, um sie zu starten. Zuerst die folgenden 2 Zeilen eingeben:

setenv bootargs_console console=ttyS0,115200
setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_slk; bootm 0x00800000 0x01100000'

FĂŒr eine USB-Stick Installation nun folgendes Eingeben:

setenv bootcmd_slk 'usb start; ext2load usb 0:1 0x01100000 /uInitrd; ext2load usb 0:1 0x00800000 /uImage'

Dieses Kommando funktioniert so nur, wenn /boot auf der ersten, als ext2 formatierten Partition liegt. Ansonsten den Pfad anpassen. Ext3 und 4 werden von U-Boot nicht unterstĂŒtzt.

FĂŒr SATA oder eSATA:

setenv bootcmd_slk 'ide reset; ext2load ide 0:1 0x01100000 /uInitrd; ext2load ide 0:1 0x00800000 /uImage'

Nun noch ein "saveenv", um das ganze zu speichern. Jetzt reicht "run bootcmd" um die U-Boot Kommandozeile zu verlassen und das neu Installierte Debian zu booten.

Ein neuer Kernel muss her

Der Standard Kernel von Debian unterstĂŒtzt den NAS6210 nicht wirklich, weshalb die grĂŒne LED dauernd blinkt und das GerĂ€t nach dem herunterfahren nicht ausgeht. Abhilfe schafft ein selbst kompilierter Linux Kernel mit dem richtigen Patch. Dieser ist auf der oben verlinkten Tutorial Seite zu finden, oder auch hier. Wer sich die MĂŒhe machen will, kann seinen eigenen Kernel nach diesem Ausschnitt des Debian Kernel Handbook selbst konfigurieren und kompilieren. Ich habe mir diese MĂŒhe bereits gemacht, und fertige .deb Pakete erstellt (18MB), welche nur noch mittels diesem Befehl installiert werden mĂŒssen:

dpkg -i linux-image-3.1.0-rc742_xy42_armel.deb

Achtung: dpkg scheint nicht mehr mit Buchstaben in der Versionsnummer (“xy42”) klarzukommen. Bei Problemen, bitte eigenen Kernel kompilieren!

Im /boot Verzeichnis des NAS findet sich nun der neue Kernel als "vmlinuz-3.1.0-rc742" und die neue Ramdisk als "initrd.img-3.1.0-rc742". Diese 2 Dateien mĂŒssen nun mittels mkimage in U-Boot Images verwandelt werden:

mkimage -A arm -O linux -T kernel -C none -a 0x8000 -n Kernel -d vmlinuz-3.1.0-rc742 uImageN
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x8C800000 -n RamDisk -d initrd.img-3.1.0-rc742 uInitrdN

Das erzeugt die Dateien uInitrdN und uImageN, welche gebootet werden mĂŒssen. Dazu neu starten und folgendes im U-Boot Prompt eingeben:

setenv bootcmd_slk 'usb start; ext2load usb 0:1 0x01100000 /uInitrdN; ext2load usb 0:1 0x00800000 /uImageN'
setenv arcNumber 3104
saveenv

Ausserdem wird die arcNumber auf die des NAS6210 gestellt, welche dem neuen Kernel bekannt ist. Falls du nicht auf einen USB-Stick installiert hast, musst du das SATA Kommando von oben entsprechend anpassen.

Das wars! Nun kann beliebige Software installiert werden, um den Server fĂŒr die eigenen BedĂŒrfnisse anzupassen. Bei mir lĂ€uft folgendes:

Power Button nutzen

Per E-Mail hat mich Waepu auf seinen Weg aufmerksam gemacht, den Power Button nutzbar zu machen. DafĂŒr muss ein neuer Kernel kompiliert werden. Neben dem oben verlinkten Patch muss folgende kleine Änderung angewendet werden:

static unsigned int nas6210_mpp_config[] __initdata = {
  MPP0_NF_IO2,
  MPP1_NF_IO3,
  MPP2_NF_IO4,
  MPP3_NF_IO5,
  MPP4_NF_IO6,
  MPP5_NF_IO7,
  MPP18_NF_IO0,
  MPP19_NF_IO1,

  MPP20_SATA1_ACTn,    /* HD1 LED red */
  MPP21_SATA0_ACTn,    /* HD0 LED red */
  MPP22_GPIO,    /* Power LED red */
  MPP23_GPIO,    /* Power button */

  MPP24_GPIO,    /* Power off device */
  MPP25_GPIO,    /* Power LED green */
  MPP27_GPIO,    /* USB transfer LED */
  MPP28_GPIO,    /* Reset button */
  MPP29_GPIO,    /* USB Copy button */
  0
};

Erst wenn im Struct MPP23_GPIO hinzugefĂŒgt wird, funktioniert folgendes Bash Script.

#!/bin/sh
echo 23 > /sys/class/gpio/export
while : ; do
  s=`cat /sys/class/gpio/gpio23/value`
  if test "$s" == 0 ; then
    shutdown -h now
    exit 0
  fi
  sleep 1
done

Der Button auf MPP23_GPIO hat eine Art Flip-Flop Funktion. Wenn man den Button fĂŒr ein paar Sekunden hĂ€lt, Ă€ndert sich der Status von MPP23_GPIO und bleibt so bis zum Reboot.

Ersetzt man im Kernel MPP20_SATA1_ACTn und MPP21_SATA0_ACTn durch MPP20_GPIO und MPP21_GPIO können per Bash auch die HDD LEDs angesteuert werden. Dann funktioniert jedoch die Anzeige der FestplattenaktivitÀt nicht mehr.

Vielen Dank an Waepu hierfĂŒr!

Booting your own Linux on an Icybox NAS6210 box
comments powered by Disqus
Analytics