Update, 18.04.2006:
Diese Anleitung ist (abgesehen von der UpSlug2 Installation unter Mac OS X) überholt und unnötig kompliziert. Wer Debian auf seiner NSLU2 installieren möchte liest besser: Debian auf der NSLU2 - revisited. Alles weiter steht hier nur noch aus nostalgischen Gründen… :)
Die NSLU2 ist ein kleines NAS-Gerät von Linksys das eigentlich nur dazu gedacht war, 2 USB-Platten an ein Netzwerk zu bringen. Dank einem OpenSource Ansatz seitens Linksys kann man aber auch eigene Firmware installieren, Webcams betreiben oder auch einen Router bauen. Zentraler Anlaufpunkt für alle (auch Hardware) Hacks ist NSLU2-Linux.org.
Nach langer Zeit mit der Unslung Firmware dachte ich, das es mal an der Zeit wäre ein Debian auf die NSLU2 zu bekommen. Darin fühle ich mich am meisten “zuhause”.
Ich habe mich für den inoffiziellen Debian Ableger Debonaras (Debian On Nas And Routers And Stuff) entschieden. Der einzige Nachteil ist, das Debonaras Big Endian ist und die offiziellen Debian-Repositorys alle in Little Endian sind. Der Unterschied ist im Groben das diese beiden die Wertigkeiten der Bits genau entgegen gesetzt zählen. Für eine weiterführende Erklärung empfehle ich die Lektüre des Wikipedia Eintrags Byte-Reihenfolge. Aber es gibt trotzdem massig deb-Pakete…
Das ganze Unternehmen ist nicht so ganz ohne, man sollte schon mal eine Shell gesehen haben. Auf der anderen Seite ist es auch nicht soo schwierig, es dauert halt etwas und vieles muss von Hand geschehen…
Also auf gehts:
UpSlug installieren
Als Gerüst muss als erstes OpenSlug installiert werden.
- Das Binary Image von http://www.openslug.org runterladen (
OpenSlug-2.7-beta
). - Um das Image auf die NSLU2 zu flashen braucht man UpSlug2. Unter Mac OS X besorgt man sich am besten
upslug2-11-osx.tgz
von der UpSlug2 SourceForge Seite. - Die Mac OS X eigene
libpcap
unterstützt leider nicht alle nötigen Funktionen. Dank den DarwinPorts ist aber schnell eine aktuelle installiert:sudo port install libpcap
- upslug2 irgendwo in den
$PATH
kopieren (z.B./usr/local/bin
) DIe NSLU2 in den Upgrade Modus bringen:
NSLU2 abschalten
Eventuell vorhandene Platten abstöpseln
Reset-Button drücken und halten (Büroklammer durch das kleine Loch an der Rückseite)
Power-Button drücken und loslassen
Status LED beobachten
Nach ca. 10 Sekunden wechselt das orange auf rot. Dann sofort den Reset-Button loslassen
Die LED wechselt jetzt zwischen rot und grün, die NSLU2 ist im Upgrade ModusAuf dem Mac root werden
- Weil
eth0
die Default-Einstellung ist muss man unter Mac OS X mitupslug2 --device en0
die NSLU2 suchen - Die NSLU2 updaten:
upslug2 --device en0 --target=00:11:22:33:44:55 --image=/path/to/openslug-2.7-beta.bin
MAC und Pfad bitte anpassen Zugucken und Daumen drücken
Upgrading LKG123456 00:11:22:33:44:55 . original flash contents * packet timed out ! being erased - erased u being upgraded U upgraded v being verified V verified Display: <status> <address completed>+<bytes transmitted but not completed> Status: * timeout occured + sequence error detected 2401ff+000000 ...UUUUUUUUUUUUUUUu------------------ Rebooting... done
Nach dem Reboot sollte sich folgendes Farbenspiel in eben dieser Reihenfolge auf der LED zeigen:
Orange: RedBoot Boot Loader
Rot: Ein Piep und dann kommt mehr Kernel in den Speicher (unter anderem der LED-Treiber)
Orange blinkend: User Space Boot
Orange/Grün wechselnd: Abschliessender User Space Boot
Grün: Boot ist fertig, Login ist möglich
OpenSlug initialisieren
- An der NSLU2 per
ssh
anmelden. User: “root” PW: “opeNSLUg” - nach dem Login
turnup init
ausführen. Dieser Befehl erlaubt die Netzwerkkonfiguration und das setzen eines neuen Passworts für root. Danach mitreboot
neu starten und wieder einloggen - Jetzt eine Festplatte anschliessen auf der nichts wichtiges drauf ist! Die Platte wird komplett gelöscht!
fdisk /dev/sda
- mit
p
nachsehen ob auf der Platte noch Partitionen vorhanden sind. Falls ja können die mitd
gelöscht werden (es war ja nichts wichtiges auf der Platte, nicht wahr?) mit
n
können jetzt neue Partititonen angelegt werden als erstes eine root Partition mit z.B. 3GB. Dafür gibt man als Endzylinder die gewünschte Größe in MB an (hier also +3000MB). Als nächstes eine Swap Partition mit 768MB. Den restlichen Platz habe ich für eine große Partititon benutzt.Der Typ der zweiten Partition muss jetzt noch mit dem
t
Befehl auf Linux Swap (hex code 82) geändert werdenJetzt noch mal mit
p
nachsehen ob alles zur Zufriedenheit eingerichtet ist. So schaut es auf meiner 80GB Platte aus:Disk /dev/sda: 81.9 GB, 81964302336 bytes 236 heads, 63 sectors/track, 10767 cylinders Units = cylinders of 14868 * 512 = 7612416 bytes Device Boot Start End Blocks Id System /dev/sda1 1 395 2936398+ 83 Linux /dev/sda2 396 497 758268 82 Linux swap /dev/sda3 498 10767 76347180 83 Linux
Mit
w
die neue Partitionstabelle schreiben lassen und dann wieder rebooten.Nach dem reboot wieder einloggen und die Partitionen formatieren:
mkfs.ext3 /dev/sda1
mkswap /dev/sda2
mkfs.ext3 /dev/sda3
Und nochmal rebooten, das war es mit OpenSlug.
Debonaras installieren
- Die root Partition als /mnt mounten:
mount /dev/sda1 /mnt
Das rootfs (33MB) runterladen und entpacken:
cd /mnt wget http://ftp.debonaras.org/sarge/rootfs/nslu2-sarge-0.2.tar.gz tar xzvf nslu2-sarge-0.2.tar.gz mv nslu2-sarge-0.2/* . rmdir nslu2-sarge-0.2
Jetzt müssen die OpenSLug Kernel-Module in den Debian-Verzeichnisbaum:
cp -Ra /lib/modules/* lib/modules cp /etc/modprobe.conf etc
Jetzt müssen die Dateien /mnt/etc/fstab, /mnt/etc/network/interfaces und /etc/mailname angepasst werden. Bei /etc/mailname ist mir der Grund nicht recht klar, ich hab die Datei trotzdem angepasst… Meine Dateien sehen also so aus:
/mnt/etc/fstab
/dev/sda1 / ext3 defaults 1 1
/dev/sda2 swap swap defaults 0 0
/dev/sda3 /mnt/data ext3 defaults 1 1
proc /proc proc defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
/mnt/etc/network/interfaces
# /etc/network/interfaces
# configuration file for ifup(8), ifdown(8)
#
# The loopback interface
auto lo
iface lo inet loopback
#
# The NSLU2 built-in ethernet
auto eth0
# Automatically generated from /etc/default/sysconf
# The pre-up option must always be supplied, regardless
# of configuration, to set the hardware correctly.
# Severe network problems may result if this option is
# removed.
iface eth0 inet dhcp
pre-up modprobe -f ixp425_eth
pre-up modprobe -f ixp400
pre-up ifconfig eth0 hw ether 00:11:22:33:44:55
address 192.168.1.77
/etc/mailname
nslu2.home.xx
Noch mehr Debian-Konfiguration
Die existierenden /etc/resolv.conf, /etc/hosts, /etc/hostname und /etc/defaultdomain von Openslug zu Debian kopieren:
cp /etc/resolv.conf etc/resolv.conf cp /etc/hosts etc/hosts cp /etc/hostname etc/hostname cp /etc/defaultdomain etc/defaultdomain
Um das Netzwerk nutzen zu können muss jetzt proc gemountet werden:
mount -t proc proc /mnt/proc
- Auf die externe Platte chrooten:
cd / ; chroot /mnt
/etc/apt/sources.list anpassen:
# Alte Sources: # #deb http://debian.nslu2-linux.org/debian/ sarge main #deb-src http://ftp.debian.org/debian/ sarge main # Stable: # deb http://ftp.debonaras.org/sarge/debian sarge main deb http://ftp.debonaras.org/sarge/debonaras sarge main # Unstable: # #deb http://armeb.debian.net/debian-armeb sid main contrib override
Paketliste updaten und die Dist hochziehen, debconf konfigurieren und anacron, den popularity-contest und ssh installieren:
apt-get update apt-get dist-upgrade apt-get install anacron popularity-contest apt-get install ssh
Wichtig. Ein neues (yeah, wieder) root-Passwort setzen damit man nach einem reboot wieder in die NSLU2 einloggen kann:
passwd
- Zurück zum flashfs:
exit
- Kram unmounten (eventuell vorher den anacron killen wenn das nicht sofort klappt): umount
/mnt/proc ; umount /mnt
- Die externe Platte beim nächsten Boot zum rootfs machen:
turnup disk /dev/sda1 -t ext3
reboot
- In das frische Debian-System sshen
- Zeitzone konfigurieren:
tzconfig
- exim4 rekonfigurieren:
dpkg-reconfigure exim4-config
- Allen sagen das es eine neue Debonaras-Box gibt:
/etc/cron.weekly/popularity-contest
- Stolz auf die Liste der OpenDebianSlugUsers eintragen
- Enjoy your new Debian-Box with all the
apt-get
Goodness.
Quellen für dieses kleine HowTo: