Achtung: Etwas veraltet.
Auf x86-NAS-Systemen verwendet man heute meist Docker mit einem iperf-Container.
Manchmal möchte man einfach einmal prüfen, wie schnell denn das Netzwerk ist (besonders übers WLAN). Ein Programm, welches das ermöglicht ist die Open Source Software Iperf.
Um diese auf einer Synology-NAS zum laufen zu bekommen gibt es mehrere Wege:
Ich habe mich für die letztere Variante entschieden.
Um ein SPK-Paket zu installieren benötigt man zuerst einmal das gewünschte Programm in Binärform für den entsprechenden Prozessor. Man kann es sich selbst kompilieren (Hilfe dazu gibt es hier), oder man kann, so wie ich, bereits kompilierte Software nutzen. Ich habe mich dazu bei den ipkg-Quellen bedient. Meine Synology DS215j besitzt einen Marvell Armada 750 SoC. Dieser ist kompatibel mit dem Marvell Kirkwood mv6281. Deswegen kann man die Software von hier nutzen.
Die IPK-Dateien sind GZIP-Komprimierte Programmdateien. Deswegen kann man diese auch z.B. mit 7Zip extrahieren.
Anschließend muss man die Struktur einer SPK-Datei aufbauen. Diese muss genau wie folgt aussehen (exakter Dateiname wichtig):
iperf.spk ---scripts ------postinst ------postuninst ------preinst ------preuninst ------start-stop-status ---INFO ---package.tgz
Bei scripts handelt es sich um einen Ordner. Alles andere sind Dateien.
Die INFO-Datei kann so aussehen:
package="iperf" displayname="Iperf" version="1.0" maintainer="Michael" description="Port of Iperf to Synology" arch="noarch" package_icon="iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAwBQTFRF/+u3tsjj8/P/u7u7s7Oz//jm8fHxo6Oj1dfsRkZGNzc3/ueoq6ur2NnZ0NHR5eblk5OT4eHh/f79goODm5ubc3Nzi4uLwMDA7e3u+fn56Onpzc3Ne3t71dXVYmJi9fX1xcXFycnjbGxslLDZycnJ3d3dJicnU1NT1cqs7e39//vx2OLwXFxcDw8Pw8PeuLvW//TYxNPp7PD36+XY6dmw6ez2oLnc//HMuLSq4eL0/+3Ad4edsrnC4un04+Ts3d3y//35/+WeqKq6rbjLxL2r+Pr9497Uj5mr9/f++/z78+/kb3uNztDS5eX5rK+w0NDP8PH5WmNunKO33d7n7+7w5+jphouZ+/z96uji4+Pj8OrZ+fbv6urr0tTf6+zsrq6trKqkUllmrK/J5+fn4+Tjvr/BY2x7aHR9x8jI//G+t7u/z87NPERI9/f38fT529jS6uvqz8/P8vTz9/j35ufm7Ovs4+Tk6+LJ19fX2tva7/Dv19jX5+fozs/OSkpKc3N81tfWoKqsipGe5OTkSFBY3Nzc2trayMjH7Ozs39/fy8vL9PT02tzexsbGy8zM5OPk09PT1NPU2NfZZWVlhomKwsLC+vr6y8rKUlpd1NLS8/Pz0tLSxsfG6urqlZWV1NTUhYWF4uLipaWlMzMzubm5UVVf/Pv80tPS8/L0ysrKw8TEqsDgOzs73NvdzMvMpqamzMzMwsPCX2psGyEhnsDndnl+xMTEw8LB6Oj029vbyMjIKyssz8/nuLi4vr6+x8fHtra2xMPEl5iaGBkahJ3Br6+vsLCwgICAf39/PT0+YGBgp6enUE9QiYmJV1dXlZiXZ2dnb29vVlZWdnZ2cHBwd3h3cG9xbm5uQEBAkJCQqKioT09Pf3+AXmBgh4eKfn5+WVlZh4iHl5eXMTExX19faWlpWFdYZmZmnZ2emZiZHh4eoKCgYF9gUFBQPz8/j4+Pjo6OHx8fQkJCh4eHLi4vISEjISEhn5+fubi5eXl5d3d3MDAwmJiYTU1NAAAA////Sp+mbQAACkBJREFUeNqkmG1MW9cZx48J2HAdv3CdaxuMY1Kwm5CEvKwhC1MbUJvKjlY5a4NSugmmEnVrERGE0jp2gywhXBPmym0UquL5hThKx+K25AstGAyTBq5VEbXgKpBOIpBlSTRBjCFZ83b/+2AgDpDgtv8v59577vM79jnPc859HjIT0+1btzUajX9u7orXS1E+X2h6dDSaFlN9ff38VTQ6Oh3y+SjK670yN+f3azS3bt2OAchMOBwOh8MMwzAjd+9kZY1/HQxKJB7P7MTQkFQqlUbmJZVKpdKhoYlZj0ciCf5rfDwr6873IyMMw4TD4XB4hswE9Xq9XigUOhx2u9utVJrNZoPBZDIJBBaLxWLpWtAxi8UiEAhMJpOh2+VZ61a63Xa7wyEUCvV6fXCGzAT1+Ikqb27IPc/EP/mZIDMlZsSuVUEqa7O8RH318Rx543ctSx4JVwLdWdfr5d2fRVZk7ZpshgYElxS8cgAeybr+jjv4TtKQfPfu1drlIOHSIW0UD4ChvNrn5T0FXrOPd9k1AQjXdFGUDye9Loq6R6kfAUluk1uSx4DsFK+NcY/TyrT1uP9fMaCnJpSSEPSX+qQyWTsdb+GQ3CK3JI5lIC8PgJISo/Y81VTtOtPrCFwHhD4juKVAafvEUguHR0NueR4DslA8oIbqS6d8Por6DjBTse5Sx+xSi088GqLxONBmLFlUbzps93gAGikeRGpfuqk+4HA4SgDBAsi9DGT3aIjGY+/bysZpxm265hlRorE8IJb5RvCNuO/OuvGLcaDlv8g94Sf+Wfsl9vX81E1JWm3SS6n5rwvWp1Hrpy5D4A2VTt1Xw5TsU7svXAbGfDGrCs/4MtCQn/gn3CNsfk8MtGlvTz6bOTw8fEENs3cLsz4TgGoLEx52AJFgzEo3e3op6Ld/0pC5ITfD9vyFu6apqelwdfpXqaxzIRB4iUXMvtSC6+NzZE6qZNhUEddWVtbOlb1t2bQAioR6E6DQqTlvtdGBqxpyRapk2KQ6qHMrDn+a3JubtABKQEc4nGyVqo/D+SDijYG072TqlCYldLoWVaKgIxzOl9xaB+fcTsB8kyLeiJlhtYL3M1UtxlpVhu5vrLOYvz2PfjJFu+OcrKTFwCl4FgBgGKMIddPMsNp0lMrMh9u7BW83s059t6z/13xSXJhSFGe7nZBCUgQAh3bkBER01/MFmxf6YiADwyZVnMjtrVAoHR+oD7BOtKi4zga1ucYmS36B8It3p9Ao4lcqTQZhd8rOc5yPM7inOJwjcYN8JPYRaszAsJsaWnR92QGRTpfxFetsbMg0qjJA13Ll76WbHCdkPw4+82aNpU1Uqra/2qFqVjxKAWASh4hPbGDYVHltg+iddJFRfXQP6zw90CvrFpqa3rZyq2i0qA4625ps5jYrVy7q+nw/59yuZVMWA5kYNv+VCsExbsa+fV/t3cBWF6XsJsXkj5eSA50KpfpwplHVglxLRWuLqqyphr/S3Atc0yQkNk2x23r2LoTINnbB1fK2F/L5G78Y7JW1f7o/99h7zboqa7r+xXM7di4C5rZuZbeeBASuUTItNj0a/Vu7Hx2tKGV3If81m7lNzpWLuj74PX22pOYtTg5nsxbo4YraGlhAMBkl0y4BLsUbrhBh25PNLccFbaJStZ3sKCjY1qk+Crn679sK9smFyuMsYJmMklGXYDUf5ic3qlT7FUqTQZibAgBHNnNyOG/pM3V06zGFkQUs99MSAJEzjS1c5drdJJeQlLhw3bWj4Dk6vYmeB0VXAdHFZ9Jb5Pq1u1fq3PCSNimVBSw30kh0UgCgN9Af61oHfBv/ah4/9z26QvZMyoqjGI1Go/FLoOtGGolOWgDACNEI99urWT9cOxnCv5MRjn0k5JHjcqSfKs578r/vWpdG0u5bAKAZ14O9WxoxBoziYtcEzgBA3sZKbkvpmuIirAaqXwClwTP8v1AY0hBGcWESoacAbN/oNlap1/BX48SDlirEACkDSlWVoZ9P4xeAALr4x/QMuf707gR2yyeBaCJLp+UnTm/HLwMVkT4RnfnxxgVO+XybpQdCABBNDFREbH9AZucL8+4jO1l+41LjXQAI4OlJqapRoscX13qnfHGgyRVAeaTDqWvo5C+4YSbKMS29GgPBIy23oBUA0ixPBhUOuFVVhv7ixeW6ueUMQhe3AMAQEIqccWEUeDpYH37okNHloN39guZmU3khnfBJGQMtDdri/qaq1k8HCn/CB7PlxgrRXxxQnzXavyEJU7jrV9qPigptTjT844WUJ9qeZ9n81F1JWm3SptR8lg1b7qeR6UdAeaQj85AowH8yBx729Q2x4+LA3g3bWJtlMkqmxaaHL6Q887mRbpKttmuAYTd8VnVQVVulO0uX5bOZgskoCcWBUpI/OVjb1Fu86nIx7F6ZQu4QNZ2oKM1MZZ0C1+gCKI/w299819SaYeklq+4aYNiqGrrT7D5u5QIvsU6Ba5pQEQOA4ly7pUvg+GvrhwktF8O+ImvQ0TqapmldEus0iacJxbycs2OXzd4kKmlQC/evfZMkIIY9UJsBADRN67Ss0yQOkbmsdpS82mGpMLYaRab2V222bFu2zWaz2RaaFcSwh/T0oEJ9QmFSQMs6TWIfoSQv52x7Ta+2qnQqZ1dHS+tjdDT+hmG1nWpdwOruECp0WtZpGPMRb8QM8GvUZSpdq7Oro9ZaVme1llnLrHXVdXVl1XVl1jJrdV11mbWu2mqtq6suK6urq2PYUuP8DOl0SazTMEYRr9QMpHz8UYPV6GxT/jkwODA4MDg4ODDfLFzE2oHBgYHBwYEBht1TUn20icvlVhh1e1in+SZFrkiVAEiNJb20SdBRmJKQGLbnuYNyo47WHcrY1cM6zREvmZMqYwfhh0q74ldFicXpRTa/Z8+mJK02KWlPTz7LVUa8ZE7qjm1mxfx3XzRzEgONLsbapr0btrEqpfQe8Q+5F/s51vObEwKVSuI/zd4odUvniH/2IQg5RtnOhEhnK2WLqjwL95CfaDz2uESHo+Psw0+Xe2IJCAee5+Y8vLsmXo2wfj4VnfUTzaPJ8R53G+dZAOj/tjcrsgVYgzO0xBoMIIsCcDO59SpPElwn/mbwqiwQHh7/z2JOuzRdL+j9TL8PgB1ZGAaAzCkGlz02BAHA17Uu+BSArgojqgLANd5iun57SQFhV25Vw04AyOJCCAAy2Bnc8eAiAFwYwfgwsq4/WI8sIQ+YUiwWEJaWNA5xHI84k4ubwGQLVwCBg5yfvGrC4O3l1ZqfB5ohM0GZTCY7dep8Z3a2re/97tx/nvhNR4eisrKmRq8XCoVCocPhcDgcQqFQqNfX1FRWKjo6TrS353Z399myszvPnz8lk8mC88U6hmFGvo9V6iRveH43JJVKI5GbY2PimFyuWDs2djMSkUpjFbvg17F6XaxcN0Pmi4cajd8/d++Kl/J5Q1Q0mpZWX//gwQ9TU08/1NTUDw8e1NenpUWj0yEfRXmv3Jvz+xcKiP8fAOPqT5nBghsZAAAAAElFTkSuQmCC"
Das package_icon ist ein Base64-Kodiertes PNG-Bild. Zum konvertieren gibt es einfache Web-Tools (z.B. hier). Der Rest sollte klar sein.
Base64 ist ein Verfahren zur Kodierung von 8-Bit-Binärdaten (z. B. ausführbare Programme, ZIP-Dateien oder Bilder) in eine Zeichenfolge, die nur aus lesbaren ASCII-Zeichen besteht.
Es findet im Internet-Standard Multipurpose Internet Mail Extensions (MIME) Anwendung und wird dort zum Versenden von E-Mail-Anhängen verwendet. Nötig ist dies, um den problemlosen Transport von beliebigen Binärdaten zu gewährleisten, da SMTP in seiner ursprünglichen Fassung nur für den Versand von 7-Bit-ASCII-Zeichen ausgelegt war. Durch die Kodierung steigt der Platzbedarf des Datenstroms um 33–36 % (33 % durch die Kodierung selbst, bis zu weitere 3 % durch die im kodierten Datenstrom eingefügten Zeilenumbrüche). Base64 wird zum Beispiel auch zur Kodierung von Benutzernamen und Passwort in der HTTP-Basisauthentifizierung und zur Übertragung von SSH-Server-Zertifikaten verwendet.
preinst und preuninst werden nicht benötigt, weswegen diese so aussehen:
#!/bin/sh exit 0
postinst sieht bei mir so aus:
#!/bin/sh eval $(env | grep "^SYNOPKG_PKGDEST=") ret=`ln -s "${SYNOPKG_PKGDEST}/iperf" /usr/syno/synoman/webman/3rdparty/iperf` ret=`chown -R admin.users $SYNOPKG_PKGDEST` exit 0
Es wird ein Symbolischer Link erzeugt und sich die Rechte für das iperf-Verzeichnis beschafft.
postuninst sieht so aus:
#!/bin/sh rm -f /usr/syno/synoman/webman/3rdparty/iperf exit 0
Damit wird das gelinkte Vezeichnis wieder gelöscht.
Und das Herzstück start-stop-status:
#!/bin/sh DIR="/usr/syno/synoman/webman/3rdparty/iperf" cd "$DIR" case $1 in start) "$DIR/iperf" -s & exit $? ;; stop) pkill -SIGKILL iperf & exit $? ;; status) if [ `pidof iperf` > "0" ] then exit 0 # Server is running else exit 2 # Server seems to have died fi ;; log) exit 0 ;; *) exit 0 ;; esac
In diesem Script gibt es eine Fallunterscheidung für start, stop und status. Bei start wird der Iperf-Server gestartet (nicht als Daemon, da diese Iperf-Version einen Bug besitzt, der im Daemon-Modus für 100% CPU-Auslastung sorgt…). Bei stop wird der Iperf-Server anhand von seinem Prozess-Namen gekillt. Bei status wird zurückgegeben, ob der Prozess noch lebt. pidof gibt bei laufendem Prozess die PID zurück.
Ansonsten muss noch die Iperf-Programmdatei in den Ordner iperf gelegt werden, diesen mit 7Zip in ein .tar.gz Archiv gepackt werden und dieses anschließend in .tgz umbenannt werden.
Anschließend muss noch die fertige Ordnerstruktur mit allen Dateien als .tar gepackt werden und in .spk umbenannt werden.