[NAS Typ:] NAS TS mit Marvell CPU
[Firmware:] allgemein
[Getestet:] ja - TS-419P / FW 3.3.4
[Sonstige Modifikationen:] keine
Ab und an benötigt man Treiber (Kernelmodule) die in der aktuellen Firmware von QNAP nicht enthalten sind.
Diese Anleitung beschreibt einen Weg zum Bauen der fehlenden Module. Konkret für mein TS-419P die Module „usbserial.ko“ und „ftdi-sio.ko“.
Sie kann aber für alle QNAP NAS mit Marvell CPU mit kleinen Anpassungen angewandt werden.
Nach dem Download aller notwendigen Tools und Files kann man seine Module innerhalb einer Stunde erstellen.
Ein paar Dinge sind für „Linuxeinsteiger“ (u.a. für mich ) etwas ausführlicher erklärt.
1. Entwicklerumgebung
Ich nutze den VMWARE-Player unter Window und die Buildumgebung "freetz-linux" aus dem "ip-phone-forum"(von "Silent-Tears"abgesegnet :thumb: ).
VMWARE-Player:
http://downloads.vmware.com/de…wnloads/vmware_player/3_0
Beitrag im "ip-phone-forum":
http://www.ip-phone-forum.de/s…php?p=1400234&postcount=1
Download "freetz-linux":
http://sourceforge.net/project…ux-1.1.1.tar.bz2/download
oder hier:
http://freetz.falkenhain.info/freetz-linux-1.1.1.tar.bz2
Nach der Installation der VM (Buildumgebung) diese starten und sich mit User : freetz und passwd: freetz anmelden.
mit "ifconfig" die akt. IP-Adresse der VM ermitteln.
Ab hier wird besser über "PUTTY" mit der VM weitergearbeitet. da funzt wenigstens paste & copy! Die VM nun nur im Hintergrund weiter laufen lassen.
Wer die noch notwendigen Downloads gleich in der VM machen möchte und hinter einem Proxy hängt:
export http_proxy=http://192.168.1.111:3128 (natürlich mit eurer ProxyIP + Port)
2. Tools
Die wichtigsten Hinweise dazu kamen von „TERZ“ -> Toolchain , CodeSourcery, Crosskompilieren :thumb:
Weitere Hinweise und Infos fand ich in diversen Foren.
Toolchain (deutsch: Werkzeugkette) ist ein Gesamtbegriff für die Programmierwerkzeuge.
Benötigt wird immer eine Toolchain, passend für das jeweilige QNAP Nas!
Welche Toolchain die Entwickler von QNAP nutzen – das sagen sie uns hier:
Zitat
here from my 209 with 3.0 beta
[~] # cat /proc/version
Linux version 2.6.12.6-arm1 (root@NasARM4) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #4 Wed Jan 21 04:34:22 CST 2009
Eine Toolchain von CodeSourcery !!
Übersicht Toolchain CodeSourcery (arm-none-linux-gnueabi)
codesourcery 2005q1 toolchain (gcc 3.4.3) bundles glibc 2.3.4, auch zum bauen von optware/cs05q1armel
http://www.codesourcery.com/sgpp/lite/arm/portal/release286 oder direkt:
wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/gnu-csl-arm-2005Q1B-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
codesourcery 2005q3 toolchain (gcc 3.4.4) bundles glibc 2.3.6, auch zum bauen von optware/cs05q3armel
( 'ARM GNU/Linux' und 'IA32 GNU/Linux' auswählen)
http://www.codesourcery.com/gn…ins/arm/releases/2005q3-2 oder direkt:
wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2005q3-2-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
codesourcery 2007q3 toolchain (gcc 4.2.1) bundles glibc 2.5
http://www.codesourcery.com/sgpp/lite/arm/portal/release313 oder direkt:
wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2007q3-51-arm-none-linux-gnueabi.bin
codesourcery 2008q1 toolchain (gcc 4.2.3) bundles glibc 2.5, auch zum bauen von optware/cs08q1armel
http://www.codesourcery.com/sgpp/lite/arm/portal/release324
wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2008q1-126-arm-none-linux-gnueabi.bin
NICHT eine Version mit neuere gcc/libc zum Erstellen nutzen, als die in der orginalen Firmware von deinem NAS vorhandene !!
Mit den folgende Befehle auf Console von deinem QNAP-NAS (Putty) kannst du die Versionen von Linux, "gcc" und "libc" ermitteln:
cat /proc/version
strings /lib/libc* | grep GCC | uniq
strings /lib/libc.so.6 |grep 'GNU C'
Beispiel: TS-419 FW3.3.4
# cat /proc/versionLinux version 2.6.33.2 (root@BuildEnv-00) (gcc version 4.2.1) #1 Sat Oct 16 06:44:11 CST 2010
auch möglich:
[~] # strings /lib/libc.so.6 |grep 'GNU C'GNU C Library stable release version 2.5, by Roland McGrath et al.Compiled by GNU CC version 4.2.1.
4.2.1 und 2.5 =>> Toolchain: codesourcery 2007q3 in der Buildumgebung installieren.
Linuxversion: 2.6.33.2
(wichtig!) Eine Installationsanleitung für die Toolchain (getting-started.pdf) findet ihr hier:
http://www.codesourcery.com/sg…c1162/getting-started.pdf
neu:
http://www.codesourcery.com/sg…c7606/getting-started.pdf
Installation am Beispiel: - (Nicht für Toolchain als *.tar-File!!! -> siehe o.g. Anleitung)
Eine kleine Änderung bei der Anleitung kann notwendig sein! (prüfen!)
Ändern nach:
Um PATH dauerhaft zu speichern (z.B. nach Neustart der VM):
Ob es funzt, das kann man mal nach Neustart überprüfen mit
"echo $PATH" und “bzwarm-none-linux-gnueabi-g++ -v”
3. Linuxsource + QNAP GPL Source
Vorhande Linuxversion auf dem NAS (Beispiel) :
# cat /proc/versionLinux version 2.6.33.2 (root@BuildEnv-00) (gcc version 4.2.1) #1 Sat Oct 16 06:44:11 CST 2010
- download von „kernel.org“ -> Archiv „linux-2.6.33.2.tar.bz2“
und auf der Buildumgebung in ein Arbeitsverzeichnis entpackt.
Den z.Z aktuellsten QNAP GPL Source findet man hier:
http://resources.qnap.com/Stor…P_GPL_3.3_20100629.tar.gz
oder
http://files.qnap.com/download…P_GPL_3.3_20100629.tar.gz
Im Moment braucht man daraus nur das Verzeichniss „kernel_cfg“. In diesem Verzeichniss findet man für den jeweiligen NAS Type und Linuxversion den dazu gehörenden Konfigfile. Dieser File „linux-*.cfg“ wird in das Linuxsource-Verzeichnis der Buildumgebung (hier im Beispiel nach linux-2.6.33.2) kopiert und umbenannt in „ .config “ ! Da es für das TS-419P keinen CFG-File für die Linuxversion 2.6.33.2 gibt einfach den File der aktuellsten, vorhandene Linuxversion benutzen. (z.Z. linux-2.6.30.6-arm.cfg)
Für die QNAP Nas mit Marvell CPU sind die KonfigFiles unten im Beitrag als Anhang !
4. Module bauen
- ein "cd" zum neuen SourceVerzeichnis (linux-2.6.33.2)
Für QNAP NAS mit Marvell CPU:
- „System Type“ auswählen
- unter „ARM system type“ sollte Marvell Kirkwood (für TS-x10 / TS-x19) stehen!
(Ts-x09 -> Marvell Orion - aber für die gibt es keine neuere Firmware)
- unter „Marvell '...' Implementations” dein QNAP Nas auswählen
- unter „Device Drivers -> USB support ->USB Serial Converter support" die notwendigen Treiber (z.B. FTDI / Pl2303) als Module auswählen -> (M)
- Konfiguration abspeichern (verlassen)
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
make ARCH=arm modules_install INSTALL_MOD_PATH=$HOME
Eure neu erstellten Module / Treiber findet ihr nun unterhalb von $HOME/lib !!
Wenn alles fehlerfrei war, dann die Module von der Buildumgebung zum QNAP – NAS kopieren und mit „insmod“ einbinden.
----------------------------
Da dies hier von einem „Laien“ geschrieben wurde sind Kommentare, Hinweise, Ergänzungen oder andere Formulierungen ausdrücklich erwünscht!!
vg kasimodo