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.
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)...
Ik 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
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:
^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.
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: