{"id":25,"date":"2011-02-07T18:00:33","date_gmt":"2011-02-07T16:00:33","guid":{"rendered":"http:\/\/www.anginf.de\/?p=25"},"modified":"2014-07-10T17:15:46","modified_gmt":"2014-07-10T15:15:46","slug":"d-link-dns-323-nas","status":"publish","type":"post","link":"https:\/\/www.anginf.de\/?p=25","title":{"rendered":"D-Link DNS-323 NAS"},"content":{"rendered":"<p>Das D-Link DNS-323 NAS enth\u00e4lt ein fertiges Linux, welches man ohne \u00c4nderungen an der Firmware und damit auch OHNE Garantieverlust mit eigener Software ausstatten kann. Diese Projektseite befasst sich mit den entsprechenden Erweiterungen, die ich erstellt habe.<\/p>\n<p>Achtung, f\u00fcr alle auf dieser Webseite ver\u00f6ffentlichten Skripte gilt die GPL v2!<\/p>\n<h3>Buildroot Umgebung \/ Toolchain<\/h3>\n<p>Leider sind die Sourcen, die D-Link zur Verf\u00fcgung stellt, nicht &#8222;direkt&#8220; nutzbar, und m\u00fcssen daher zun\u00e4chst noch ein wenig angepasst werden, bevor man diese Produktiv auch nutzen kann. Um eine saubere Toolchain-Umgebung mit gcc-3.3 als Cross-Compiler f\u00fcr die DNS-323 zu erreichen, m\u00fcssen erst noch \u00c4nderungen an den heruntergeladenen Sourcen durchgef\u00fchrt werden. Diese Toolchain ist die Voraussetzung daf\u00fcr, weitere Programme f\u00fcr das NAS zu &#8222;crosscompilen&#8220;.<\/p>\n<p>Ich habe ein vorgefertigtes Shell-Script hierf\u00fcr erstellt. Es kompiliert die Buildroot-Umgebung und f\u00fchrt notwendige Korrekturen durch. Au\u00dferdem l\u00e4dt das Skript alle auf dieser Seite vorgestellten .mk-Dateien herunter.<br \/>\nACHTUNG! Damit das Skript ordnungsgemaess funktioniert, M\u00dcSSEN zun\u00e4chst auch ein paar notwendige Programme installiert werden, die nicht bei allen Linux-Distributionen beigelegt sind:<br \/>\ngcc bison m4 flex gettext patch ncurses-devel<br \/>\nAuf einer Ubuntu\/Debian-Umgebung reicht ein<\/p>\n<pre lang=\"bash\">\r\napt-get update\r\napt-get install gcc bison m4 flex gettext patch libncurses5-dev\r\n<\/pre>\n<p><a href=\"download\/dns323\/make108.sh\">make108.sh<\/a> (Stand 16.09.2010)<\/p>\n<p>Die Sourcen werden von der DLink-Seite f\u00fcr die Firmware 1.08 der DNS-323 heruntergeladen. Leider ist das Paket 450 MB gro\u00df, man kann sich nicht nur die ben\u00f6tigten Teile herunterladen. Ausserdem ist die Build-Umgebung darin inkl. der Binaries schon vorhanden, was leider nur Platz verschwendet, denn die Pfade vom Entwickler sind leider in der Toolchain hartverdrahtet. Folgerichtig wird auch als erstes die &#8222;aktuelle&#8220; Toolchain weggeworfen und eine neue erstellt<\/p>\n<h3>tor kompilieren<\/h3>\n<p>TOR ist ein Anonymisierungsnetzwerk. Da es ein leichtes ist, das NAS auch als &#8222;kleinen&#8220; Server f\u00fcr tor zu betreiben, wollen wir uns diesen Luxus auch g\u00f6nnen. Mit der oben angegebenen Toolchain kann man TOR nun auch kompilieren. Dazu f\u00fcgen wir einfach folgende Dateien in das Verzeichnis<\/p>\n<pre lang=\"bash\">uclibc-toolchain-src-20040609\/gcc-3.3.x\/make<\/pre>\n<p>hinzu. Anschlie\u00dfend kann man das ganze mit einem<\/p>\n<pre lang=\"bash\">make tor<\/pre>\n<p>kompilieren. Die Skripte erkennen selbstt\u00e4tig, welche vorausgesetzten Pakete noch zu erstellen sind und besorgen sich auch automatisch den korrekten Quellcode. Die fertige ausf\u00fchrbare Datei &#8222;tor&#8220; liegt dann in diesem Verzeichnis:<\/p>\n<pre lang=\"bash\">uclibc-toolchain-src-20040609\/gcc-3.3.x\/toolchain_build_arm\/tor-0.2.0.32\/src\/or<\/pre>\n<p>Damit das ganze auch halbwegs sinnvoll funktioniert, lohnt es sich, den Privoxy auch gleich mit zu kompilieren. Das Kompilieren funktioniert analog wie bei tor.<\/p>\n<p>Die Dateien k\u00f6nnen hier heruntergeladen werden:<br \/>\n<a href=\"download\/dns323\/tor.mk\">tor.mk<\/a><br \/>\n<a href=\"download\/dns323\/libevent.mk\">libevent.mk<\/a><br \/>\n<a href=\"download\/dns323\/openssl.mk\">openssl.mk<\/a><br \/>\n<a href=\"download\/dns323\/zlib.mk\">zlib.mk<\/a><br \/>\n<a href=\"download\/dns323\/privoxy.mk\">privoxy.mk<\/a><\/p>\n<h3>samba kompilieren<\/h3>\n<p>samba ist der Schl\u00fcssel, um den Austausch von Dateien zwischen Linux und Windows bereits zu stellen. Dabei sind beide Richtungen m\u00f6glich, ein Windows-Client kann auf die Verzeichnisse und Dateien auf einem Linux-Ger\u00e4t zugreifen und auch umgekehrt kann Linux die Freigaben auf Windows-PCs nutzen.<\/p>\n<p>Der samba-Server auf der DNS-323 (smbd und nmbd) ist v\u00f6llig in Ordnung, den wollen wir hiermit nicht austauschen. Allerdings ist der &#8222;smbclient&#8220; etwas kaputt, er kann auf Windows-Shares keine &#8222;tar&#8220;-Archive erzeugen. Da ich gerne BackupPC mit smbclient einsetzen wollte, musste eine L\u00f6sung her &#8211; eben das selbstkompilieren.<\/p>\n<p>Mit der oben angegebenen Toolchain kann man samba nun auch kompilieren. Dazu f\u00fcgen wir einfach die folgende Datei in das Verzeichnis<\/p>\n<pre lang=\"bash\">uclibc-toolchain-src-20040609\/gcc-3.3.x\/make<\/pre>\n<p>hinzu. Anschlie\u00dfend kann man das ganze mit einem<\/p>\n<pre lang=\"bash\">make smb35client<\/pre>\n<p>kompilieren. Das Skript erkennt selbstt\u00e4tig, welche vorausgesetzten Pakete noch zu erstellen sind und besorgt sich auch automatisch den korrekten Quellcode. Die fertige ausf\u00fchrbare Datei &#8222;smbclient&#8220; liegt dann in diesem Verzeichnis:<\/p>\n<pre lang=\"bash\">uclibc-toolchain-src-20040609\/gcc-3.3.x\/toolchain_build_arm\/samba-3.5.5\/bin\/smbclient<\/pre>\n<p>Die &#8222;smb35client.mk&#8220; kompiliert die 3.5.5, die &#8222;smbclient.mk&#8220; hingegen die 3.0.34. (Ich selbst setze auf meiner DNS-323 die &#8222;\u00e4ltere&#8220; Version ein).<\/p>\n<p>Die Dateien k\u00f6nnen hier heruntergeladen werden:<br \/>\n<a href=\"download\/dns323\/smb35client.mk\">smb35client.mk<\/a><br \/>\n<a href=\"download\/dns323\/smbclient.mk\">smbclient.mk<\/a><\/p>\n<h3>Linux Kernel Modules<\/h3>\n<p>Insbesondere das USB-Storage Modul, was man braucht, damit ein angesteckter USB-Stick auch als solcher erkannt wird und als Datentr\u00e4ger genutzt werden kann. Um das zu kompilieren, reicht auch unsere fertige toolchain aus. Das entsprecehnde Makefile (.mk) ist hier auch zu Download bereitgestellt:<\/p>\n<p><a href=\"download\/dns323\/linux.mk\">linux.mk<\/a><\/p>\n<h3>rtorrent<\/h3>\n<p>Bei der DNS-323 kann man einen Bittorrent-Client auch &#8222;im Standard&#8220; nutzen. Ich wollte lieber einen verwenden, den ich nach meinen belieben konfigurieren kann. Entsprechend schnell fiel die Wahl auf rtorrent. Das ist allerdings abh\u00e4ngig von &#8222;ncurses&#8220; und der Torrent-Bibliothek &#8222;libtorrent&#8220;. Letztere Bibliothek hingegen braucht noch libsigc++-2.0 und sinniger Weise openssl. Daher bitte alle .mk-Dateien unter diesem Punkt herunterladen und anschlie\u00dfend mit einem &#8222;make rtorrent&#8220; das Binary kompilieren lassen.<\/p>\n<p>Um rtorrent &#8222;sinnvoll&#8220; auf der DNS-323 nutzen zu k\u00f6nnen, braucht man noch das Programm screen. Da ich ansonsten sowieso das &#8222;fun-plug 0.5&#8220; nutze, habe ich das Package screen installiert. (Weitere Infos auf der fun-plug 0.5 Homepage Damit screen auch sinnvoll funktioniert, muss man noch die TERMINFO-Dateien kopieren (siehe &#8222;Weitere Tools kompilieren&#8220;).<\/p>\n<p>Ich rufe rtorrent entsprechend mit diesem Kommando auf (mache das noch nicht \u00fcber die \/ffp\/start\/*.rc Dateien):<\/p>\n<pre lang=\"bash\">stty stop undef\r\nstty start undef\r\nTERMINFO=\"\/ffp\/mybin\/\" \/ffp\/mybin\/rtorrent<\/pre>\n<p><a href=\"download\/dns323\/rtorrent.mk\">rtorrent.mk<\/a><br \/>\n<a href=\"download\/dns323\/libtorrent.mk\">libtorrent.mk<\/a><br \/>\n<a href=\"download\/dns323\/ncurses.mk\">ncurses.mk<\/a><br \/>\n<a href=\"download\/dns323\/libsigcpp.mk\">libsigcpp.mk<\/a><br \/>\n<a href=\"download\/dns323\/openssl.mk\">openssl.mk<\/a><\/p>\n<h3>Weitere Tools kompilieren<\/h3>\n<p>Es gibt noch ein paar weitere Tools, welche ich auf der DNS-323 einsetze, die dazu ben\u00f6tigten Make-Skripte stelle ich ebenfalls hier zur Verf\u00fcgung. Sie k\u00f6nnen genauso eingesetzt werden wie die oben angegebenen Skripte.<\/p>\n<p>Die Dateien k\u00f6nnen hier heruntergeladen werden:<br \/>\n<a href=\"download\/dns323\/fmirror.mk\">fmirror.mk<\/a> &#8211; ein Tool zum Abgleichen von FTP-Directories, auch mit Passwort.<br \/>\n<a href=\"download\/dns323\/wget.mk\">wget.mk<\/a> &#8211; die busybox-Variante kennt einige f\u00fcr mich wichtige Parameter nicht, daher hier die &#8222;volle&#8220; Version.<br \/>\n<a href=\"download\/dns323\/jhead.mk\">jhead.mk<\/a> &#8211; Kann sinnvoll ein &#8222;Autorotate&#8220; durchf\u00fchren.<br \/>\n<a href=\"download\/dns323\/jpegtran.mk\">jpegtran.mk<\/a> &#8211; Dieses Tool wird von jhead ben\u00f6tigt.<br \/>\n<a href=\"download\/dns323\/exifprobe.mk\">exifprobe.mk<\/a> &#8211; liefert wichtige EXIF-Daten<br \/>\n<a href=\"download\/dns323\/rsync.mk\">rsync.mk<\/a> &#8211; Schneller Abgleich auch \u00fcber SSH<br \/>\n<a href=\"download\/dns323\/bc.mk\">bc.mk<\/a> &#8211; Ein einfacher Rechner, ideal f\u00fcr Skripte (kann aber mehr als einfach nur expr)<br \/>\n<a href=\"download\/dns323\/mp3info.mk\">mp3info.mk<\/a> &#8211; Ein auf ncurses (s.o.) basierendes Programm, um ID3-Tags auszulesen und\/oder zu manipulieren.<br \/>\n<a href=\"download\/dns323\/htop.mk\">htop<\/a> &#8211; Ein auf ncurses (s.o.) basierendes Programm, welches das klassische &#8222;top&#8220; ersetzt.<\/p>\n<p>Wer \u00fcbrigens einen Fehler bzgl. des vt102-Terminals bei Programmen wie rtorrent oder htop erh\u00e4lt (&#8222;Error opening terminal: vt102&#8220;), sollte einfach aus dem oben auch angegebenen ncurses die Datei toolchain_arm\/share\/terminfo\/v\/v102 an einen g\u00fcnstigen Platz auf dem Zielsystem kopieren, allerdings auch dort in einen Unterordner \/v und auf den dar\u00fcberliegenden Ordner die Variable TERMINFO setzen. So k\u00f6nnte es entsprechend aussehen:<br \/>\nKopie nach \/ffp\/mybin\/v\/v102<br \/>\nAufruf von htop:<\/p>\n<pre lang=\"bash\">TERMINFO=\"\/ffp\/mybin\/\" \/ffp\/mybin\/htop<\/pre>\n<p>Das funktioniert nat\u00fcrlich auch mit dem Programm screen ganz genauso, hier muss die entsprechende Datei &#8230;\/s\/screen kopiert werden und anschlie\u00dfend funktionieren hier ebenfalls die Aufrufe von htop oder rtorrent unter screen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das D-Link DNS-323 NAS enth\u00e4lt ein fertiges Linux, welches man ohne \u00c4nderungen an der Firmware und damit auch OHNE Garantieverlust mit eigener Software ausstatten kann. Diese Projektseite befasst sich mit den entsprechenden Erweiterungen, die ich erstellt habe. Achtung, f\u00fcr alle auf dieser Webseite ver\u00f6ffentlichten Skripte gilt die GPL v2! Buildroot Umgebung \/ Toolchain Leider sind &hellip; <a href=\"https:\/\/www.anginf.de\/?p=25\" class=\"more-link\"><span class=\"screen-reader-text\">D-Link DNS-323 NAS<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-25","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/posts\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anginf.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25"}],"version-history":[{"count":10,"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions"}],"predecessor-version":[{"id":44,"href":"https:\/\/www.anginf.de\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions\/44"}],"wp:attachment":[{"href":"https:\/\/www.anginf.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anginf.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anginf.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}