2013-08-04
Seit neuestem habe ich hier ein Synology DS213j NAS stehen. Nachdem was ich mir angelesen habe und den technischen Spezifikationen zufolge schien mir dieses Modell am geeignetsten für meine Zwecke zu sein. Das günstige und sparsamste Modell mit 2 Plattenschächten und 512MB RAM.
Ein Plan von mir war, gewisse Ordner des NAS regelmäßig per duply auf mein Telekom Mediacenter WebDAV zu sichern. Duply ist ein einfaches Skript und duplicity auf dem es aufbaut ist in Python geschrieben für das es ein fertiges Paket von Synology gibt.
Leider musste ich aber feststellen, daß alle Beschreibungen im Internet über das Installieren von z.B. duplicity für mein System ins Leere greifen; das ganze ipkg-Zeugs und die Pakete dazu gibt es einfach nicht für die ARMv7 Marvell-370 Plattform der DS213j.
Ein Versuch das alles aus den archlinux|ARM-Paketen nachzurüsten scheiterte an einer inkompatiblen glibc-Version. Also habe ich mich mal über das CrossCompiling für die Diskstation schlau gemacht.
Erstmal eine virtuelle Ubuntu-Maschine installiert (bei mir als 12.4-er Download direkt von Parallels aus) und gemäß dieser Anleitung die richtige “Tool Chain” heruntergeladen (für meine DS213j mit DSM4.2 war das gcc464_glibc215_hard_armada370-GPL.tgz
) und nach /usr/local
ausgepackt. Da die von Parallels bereitgestellte Maschine aber 64-bitig ist und die Programme der “Tool Chain” in 32-bit vorliegen braucht es noch etwas Nacharbeit um diese auch lauffähig zu machen: sudo apt-get install ia32-libs
duplicity benötigt librsync
, also besorgen wir uns diese mal und entpacken es in einem temporären Ordner in der Linux-Machine (Synology
bei mir im Homeverzeichnis). Zum Cross-Kompilieren braucht es ein paar Umgebungsvariablen, die sicherstellen, daß mit den richtigen Tools für das richtige Ziel übersetze wird. Dazu habe ich mir zwei Dateien im Synology
-Ordner angelegt
synconf.sh:
env PATH=$PATH:/usr/local/arm-marvell-linux-gnueabi/bin CC=/usr/local/arm-marvell-linux-gnueabi/bin/ CC=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-gcc \
LD=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ld \
RANLIB=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ranlib \
CFLAGS=" -I/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include -mhard-float -mfpu=vfpv3-d16" \
LDFLAGS=" -L/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/lib" \
./configure --host=arm-marvell-linux-gnueabi --target=arm-marvell-linux-gnueabi --build=i686-pc-linux --prefix=/opt
synmake.sh:
env PATH=$PATH:/usr/local/arm-marvell-linux-gnueabi/bin make
Um sie jeweils an die entsprechende Pakete noch anzupassen kopiere ich mir diese in die entsprechenden Ordner. Um z.B. die librsync
nicht nur als statische Bibliothek sondern auch als dynamische zu bauen braucht es für ./configure
noch die Option --enable-shared
. Das configure
-Skript wird dann aus dem entsprechenden Unterordner heraus per . synconf.sh
aufgerufen und make
per . synmake.sh
.
Beim Übersetzen der librsync
hat es gleich mal einen Fehler gegeben. errno.h
wurde im Ordner /usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include/asm
vermutet, lag da aber nicht. Also in den Ordner gewechselt und die aus asm-generic
da hinein verlinkt (sudo ln -s ../asm-generic/errno.h .
). Eine dynamische Bibliothek habe ich trotzdem nicht zustande gebracht ./.libs/librsync.so: undefined reference to 'RollsumUpdate'
. Also neuer Versuch mit der 0.9.6-er Version statt der 0.9.7-er; mit der hat es dann geklappt.
Weiter sollte es mit GnuPG 2.0 gehen. synconf.sh
lief auch durch, hat aber auf soviele fehlende Pakete aufmerksam gemacht, daß ich es dann aufgegeben habe. Denn eigentlich habe ich mich ja für die Synology entscheiden weil ich etwas wollte an dem man nicht herumbasteln muß, sonst hätte es ein Rasberry sicher auch getan.
Jetzt sichere ich die Daten erstmal vom Mac aus und werde mir bei Gelegenheit mal die verschlüsselten Ordner und die integrierten Backuptools ansehen.
Alles was die Synology von Haus aus so anbietet und was ich davon nutze funktioniert übrigens einwandfrei und ist leicht zu konfigurieren, wenn man jedoch zusätzliche Software nutzen will sollte man entweder zu einem System mit verbreiteterer CPU greifen, abwarten bis sich ARMv7 durchsetzt oder sich auf einiges an Bastelei einstellen.