Dit is een archief-pagina

Dit is een archief-pagina. Ik werk deze pagina niet meer actief bij.
Informatie kan verouderd zijn, en links lopen mogelijk dood.
Maar, misschien heeft iemand er nog wat aan.


NSLU2 Netwerk Disk

Augustus 2012: Beste lezer; ik ga over op de Raspberry Pi als home server, en daarmee zijn deze pagina's dus verouderd (worden niet meer bijgewerkt)...

NSLU2Ik heb een Linksys NSLU2 in mijn lokale netwerkje hangen: een klein kastje ('twee pakjes sigaretten', vreemde vergelijking overigens voor iemand die zelf niet rookt). Dit kastje is een 'Netwerk Storage Link Unit', een interface tussen een losse USB2 harde schijf en mijn lokale ethernet netwerk.

Ik ben van uNSLUng overgegaan op Debian, en daarmee is de pagina die je nu leest niet meer de nieuwste! Ga naar NSLU2 met Debian...

Op deze manier kan iedereen hier thuis bij deze schijf, zonder dat er continue een zware PC aan hoeft te staan (de nslu gebruikt maar een paar Watt). Ook heb ik zo een reserve-schijf om back-ups op op te slaan, met behulp van SyncBack. Sterker nog, ook op afstand kan ik aan deze schijf en dus mijn bestanden (op een veilige manier, dank zij SSH en samba).

Network share vergeet steeds het wachtwoord? Kan te maken hebben met de verificatiemethode: NTLM2 bij Vista, terwijl veel NAS/SMB servers alleen LM en NTLM ondersteunen. Zet met regedit de sleutel HEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel van 3 op 1. Misschien iets minder veilig, maar op een goed lokaal netwerk is dit geen probleem.

Het 'Openen' van de NSLU

Ps: de NSLU2 web-interface van LinkSys blijft gewoon bruikbaar na deze operatie, dus voor de standaard handelingen merk je niets van deze vervanging.

Specs NSLU2

  • Intel IXP420 (stripped-down IXP425, maar met DSP extensies) met ARMv5TE XScale processor @ 266 MHz
  • 8 MB Flash memory (boot)
  • 32 MD SDRAM
  • Ethernet, 5xUSB (2 op connectoren), 2xserial, general purpose I/O
  • Meer info: CPUoverview

Het leuke van dit kastje is dat er ook open-source software voor beschikbaar is, waarmee je de functionaliteit uit kunt breiden.Ik heb mijn Linux NSLU2 'geopend' voor extra software packages met behulp van uNSLUng. Daarna heb ik extra software er op gezet; met name een kleine editor om instellingen en zo makkelijk te kunnen wijzigen; het SSH pakket, en nog zo het een en ander. Zijn veel meer pakketten voor te krijgen, als email- en web-servers, audio streamers, etc; zie Unslung.Packages (volgens het commando 'ipkg list' zijn er nu al 1313 packages voor de nslu, met 'ipkg update' zorg je dat je nslu ook de meest up-to-date lijst gebruikt).

Van het installeren van de uNSLUng software zal ik nog wel eens een meer gedetailleerd verslag doen, maar voor nu zie de bijhorende web pages... Vooral de README.TXT van de download goed lezen. Met name even zoeken wat in deze minimale versie van Linux (een gestripte BusyBox) nu eigenlijk de boot sequence is, en waar je daar zelf zaken kan toevoegen. Geen run levels etc; ik plaats mijn opstartscripts in /opt/etc/init.d/

Problemen?

Ook een NSLU is niet onfeilbaar... Ik gebruik de NSLU als backup, maar zorg dat ik ook een lange-termijn backup heb, bijvoorbeeld op DVD. Want wat als je NSLU kapot gaat? Dit was pas bij mij het geval (nu ja, niet de NSLU zelf, maar de voeding, maar toch was hierdoor ook de systeempartitie op de disk beschadigd).

Gelukkig kan je de USB-disk die er aan hangt ook direct aan je PC koppelen. Het filesysteem op een door de NSLU geformatteerde disk is EXT3, een Linux file systeem. Standaard Windows kan hier niets mee (wel met EXT3 voor Windows?). Gezien ik naast Windows ook Ubuntu op mijn systeem heb staan had ik verder geen probleem om de zaak weer draaiend te krijgen.

Wel zal je nautilus (het equivalent van 'explorer') met super-user rechten moeten draaien: Ubuntu starten, USB-disk inpluggen en vanuit een terminal 'sudo nautilus').

En, op koninginnedag voor 80 cent een nieuwe voeding gekocht (geschakeld, geen trafo, dus lichtgewicht en hoog rendement)...

Ps: zijn ook nog andere Linux-versies (zoals Debian) beschikbaar voor de NSLU, al zijn die meer voor mensen met ruime Linux-ervaring (bv geen Linksys-stijl web-interface). Zie het overzicht van NSLULinux firmware versies.

SSH op de LinkSys NSLU2 netwerk fileserver

Ik gebruik ssh (een beveiligd communicatie-protocol) om met mijn NSLU te praten, in plaats van het onveiliger telnet. Ik heb het NSLU2 openSSH package geïnstalleerd ('ipkg install open-ssh'), plus het openssh-sftp-server pakket (anders wordt alleen SCP ondersteund, en dat werkt niet samen met FileZilla). Zo kan ik met behulp van PuTTY overal op een veilige manier bij mijn NSLU komen, zelfs vanaf de andere kant van de wereld (zie mijn ssh page, en de nslu page UseOpenSSHForRemoteAccess). telnet access is nu niet meer nodig.

Wel heb ik voor de veiligheid de openssh configuratiefile wat aangepast (zie ook UseOpenSSHForRemoteAccess), bijvoorbeeld om alleen met public/private key files te werken en niet met wachtwoorden (PasswordAuthentication no). Op deze manier heb je de private key file nodig om in te loggen (zie hierboven), en niet alleen maar een wachtwoord. Ook heb ik het standaard SSH poortnummer aangepast van poort 22 naar een andere waarde (boven de 1024!). Meer details op de sshd_config man page. Bijwerken van de configuratiefile kan op de NSLU2 met de nano editor (zie verderop): nano /opt/etc/openssh/sshd_config. Na wijziging de NSLU2 (en PuTTY) herstarten! Voor een gebruiker: een /home/username/.ssh aanmaken met access alleen voor de gebruiker, en de public key naar authorized_keys kopieren.

Daarna mijn router aangepast zodat de gekozen poort wordt doorgesluisd naar mijn NSLU2, en klaar (zie mij server pagina): ik kan via internet veilig op mijn NSLU2 inloggen. Zelfs met mijn Qtek9100 Windows Mobile mobieltje dank zij PocketPutty. Gezien ik van mijn provider geen vast IP adres heb, heb ik een account bij DynDNS: kan inloggen via <gekozennaam>.dyndns.org in plaats van een IP-adres te moeten onthouden.

De nano editor, core-utils

Let op: nano (en andere commando's) werken niet vanuit een telnet sessie, alleen vanuit een ssh sessie!

Een kleine editor om configuratiefiles en zo te bewerken is de nano editor (ook eerst installeren). Om de een of andere reden geeft nano soms wat problemen bij het eerste keer gebruiken, een keer opnieuw booten ('reboot' commando) brengt uitkomst. Daarna geen problemen meer.

Daarnaast heb ik ook het coreutils package en het which commando geïnstalleerd, daar het standaard aanwezige pakket Linux commando's wel erg beperkt is (de standaard Lunix op de NSLU is de 'Slingbox' versie, een gestripte BusyBox).

Overklokken naar 266 MHz

Ik heb een van de eerste NSLU2's, en die gingen nog niet zo hard: de ARM werd op 133 MHz geklokt, in plaats van de mogelijke 266 MHz. Op de uNSLUng site is een handleiding voor het overklokken te vinden (indien nodig; nieuwere versies draaien soms al op 266 MHz, zie de handleiding voor de snelheidsbepaling). Eerst de pagina voor het openmaken van de NSLU lezen! Vond het geen plezierig idee een onderdeel (R83) kapot te moeten knippen... Ik heb daarom gekozen voor de manier verderop de pagina beschreven: een schakelaar en pull-up weerstand (5.6K) op de aansluitingen van R81 (die er standaard niet op zit, lege aansluiting direct onder R83) solderen; zie onder kop 'A turbo-button alternative to removing R83' haast onderaan de pagina.

Ik heb hier gekozen voor een drukknop, omdat alleen bij het aanzetten van de NSLU de waarde op A22 van belang is. Indrukken voor 266 MHz tijdens opstarten, en als je dat niet doet start hij op de oude 133 MHz op. Altijd even zoeken waar je zo'n knopje laat: heb hem op de ethernetaansluiting-connector gelijmd, en een gaatje geboord boven de ethernetaansluiting waardoor ik de knop in kan drukken.

En jawel, met het commando 'cat /proc/cpuinfo' krijg ik nu "BogoMIPS: 263.78" (dat is 266 MHz, binnen de meetfout). En, met via SSH inloggen gaat een stuk sneller!

Stand-by

Om het energiegebruik te verminderen heb ik een utility om de disk in stand-by te zetten gebruikt/aangepast. Het lastige hier is dat dit wat afhankelijk is van onder andere de harde schijf die je gebruikt. Zie onder andere de volgende links (ook voor andere tips/schijven): SpinDownUSBHarddisks en SetSpinDownTimeOnMaxtorOneTouch. Wat heb ik gedaan:

  • Zorg dat de disk niet door het systeem zelf wordt gebruikt! Voeg de 'noatime' mount optie toe aan alle partities op de USB disk, bijvoorbeeld via een script dat met boot time wordt gedraaid. Dit voorkomt dat de disk wakker wordt alleen maar om de 'last access time' flag van een file bij te werken. Ik heb zelf een script /opt/etc/init.d/S90noatime gemaakt, dat de partitions remount met noatime. De benodigde commando's in het script zijn:
        mount -o remount,noatime /dev/sda1
        mount -o remount,sync,noatime /dev/sda2
    Vergeet niet het script de goede rechten te geven: chmod 755 S90*
  • Zorg dat ook je log files niet naar de USB disk geschreven worden, maar naar bijvoorbeeld de RAM disk. Een taak als syslogd schrijft bijvoorbeeld elk kwartier hier een 'MARK' message naar de file messages. Ook hiervoor heb ik een script aangepast en in /opt/etc/init.d/ geplaatst (iets te lang om hier uit te schrijven): S37mount_var_dev.sh
  • Zet een aantal door cron geplande taken op een lager pitje, zoals CheckDiskFull (normaal 3 keer per dag, nu een keer) en hwclock tijdscontrole (normaal elk uur, nu een keer per dag), door de file /etc/crontab aan te passen (alles rond 1 uur 's nachts):
    15 1 * * 1 root /usr/sbin/CheckDiskFull &>/dev/null
    0 1 * * * root /usr/sbin/WatchDog &>/dev/null
    9 1 * * * root /usr/sbin/hwclock -s &>/dev/null
  • Installeer een packet om scsi-disks in standby te plaatsen: 'ipkg install scsi-idle'. Test met 'scsi-stop /dev/sda1' (aannemende dat je een disk in gebruik hebt), je zou nu de disk moeten  horen vertragen/uit gaan.
  • Ik heb een aangepaste versie van het script gemaakt (gebaseerd op SpinDownUSBHarddisks#method3) dat regelmatig checkt of er nog disk-activiteit is geweest, en zo niet de disk in stand-by zet. Eigenlijk zou ik deze ook automatisch moeten laten starten, nog eens checken hoe dat moet (dit script bevat een eindeloze loop, en keert dus niet terug); start het nu met de hand met 'S91spindown.sh &'. Het script (ook in /opt/etc/init.d/): S91spindown.sh
  • Nu zou het moeten werken... Even de zaak resetten met het reboot commando.

Klok: automatisch instellen

Een probleem met de NSLU (in ieder geval bij mij) is dat de software klok niet zo nauwkeurig loopt (±1%, dat is zo'n 15 minuten per dag...). Meer mensen hebben hier blijkbaar last van, zie het volgende recept voor een betere klok-synchronisatie met ntp, het gelijk zetten van de klok met een tijdserver (ik gebruik nl.pool.ntp.org). Een uitgebreider (maar niet door mij getest) alternatief is te vinden in de pagina over FixTheClockUsingAdjtimexAndNtpclient.Lastig om uitleg te vinden over ntpclient: zie deze (pseudo) ntpclient man page voor meer uitleg. Kijk op Wikipedia over Network_Time_Protocol voor een uitleg van ntp.

Ben het nog aan het testen en ik heb er wat problemen mee; ntpclient raakt de draad kwijt en stop dan met updaten... ('# inconsistent' melding in de logfile). Heb dus een iets andere aanpak gedaan: een script dat zelf elke tien minuten een keer ntpclient aanroept (zonder dat deze als achtergrondtaak gaat lopen, dus geen '-l'). Script is vrij eenvoudig, eigenlijk niet meer dan een eindeloze loop met 'sleep 600' gevolgd door '/var/log/ntpclient -f 0 -s -g 100000 -h nl.pool.ntp.org >>/var/log/ntp.log'. Wel heb ik de executable van ntpclient gekopieerd naar /var/log op de RAMdisk, om de harde schijf niet wakker te maken als'ie in slaapstand is. En, even bovenstaande crontab (in sectie Stand-by) aanpassen: de regel met hwclock kan er nu uit.

Het script S92ntpclient staat in de map waarin de startup scripts staan; het start het eigenlijke script run_S92ntpclient.sh in de achtergrond.

Downloaden (en screen)

Nog een taak van de nslu: het downloaden van grote bestanden als Ubuntu Linux distributies zonder een zware computer een nacht aan te laten staan. Het programma wget kan gebruikt worden om bestanden vanaf een URL te downloaden. Voor torrents is er een aparte torrent downloader, maar die heb ik nog niet geïnstalleerd. wget syntax op de NSLU (waar wget een vereenvoudigde versie is!) zoals ik die gebruik, plus een voorbeeld:

wget -q -P <de_output_directory> <de_URL> > logfile &

wget -q -P download \
http://ftp.osuosl.org/pub/nslu2/releases/Unslung-6.10-beta-README.txt \
> download/wget.log &

Screen: belangrijkste ctrl-a commands

^a d detach (connect met 'screen -r'); ^a c new shell window, ^a k kill window; ^a S split screen; ^a 0 .. ^a 9 switch to window 0..9; ^a " list screens; ^a i window info; ^a ? help; ^a A set title

Te laat, al je programma gestart voor je je realiseerde dat je screen wilde gebruiken? reptyr kan je programma 'reparent'en; een andere ouder geven... Start in een andere terminal screen, en do reptyr <PID> met PID het proces ID van het programma dat je in screen wilt hebben.

Een probleem voor langere downloads is dat als je uitlogt, ook je lopende processen (en dus de download) worden gestopt. Bovendien kan je ondertussen niets anders doen. Een oplossing hiervoor is het 'screen' programma, dat meerdere 'windows' (maar dan textueel) aan kan, en dat blijft draaien als je de SSH-verbinding verbreekt. Bij opnieuw verbinding leggen kan je dan met screen -r weer verder waar je was. Installeren met ipkg install screen, hier beknopte uitleg van de screen versie op de NSLU, uitgebreidere uitleg op de screen man pages.

Putty, en wel of niet screen actief (schermen zien er hetzelfde uit)? Geef je normale achtergrond een andere kleur (bijvoorbeeld blauw); doe ik door de string <esc>[44m af te drukken met 'cat blue_bg.txt' (die string, met <esc> het escape character, hex code 1B, staat in die file). De screen schermen blijven zwart. Meer uitleg over dit soort codes ook in de screen man pages.

Wat extra commando's

Misschien nuttig:
Opvragen vrij geheugen: cat /proc/meminfo
Processorgegevens: cat /proc/cpuinfo

Nog meer?

In de toekomst voeg ik misschien nog wel meer toe (bijvoorbeeld een printer-driver om mijn USB-printer op de NSLU aan te sluiten in plaats van op een PC). Hier vast enige nuttige links: