embedded Linux NSLU2

Ansatz war es, einen Server zu Hause zu haben. Um in 1. Linie den geringen Upload von 60Kb/s zu schlagen. Bedingungen: Anschaffung billig, Stromverbrauch gering, 1x Netzwerk 1x USB Anschluß, leise Also mal umsehen was es an Hardware gibt, Bei Linksys wurde ich dann fündig. Eine (N)etwork (S)torage (L)ink for (U)SB 2.0 Disk Drives Dieses nette Teil Verbraucht gerade mal 17 Watt mit meiner Netzteillosen 2,5 Zoll HD (SAMSUNG 40GB) Kein Lüfter und gerade mal so groß wie eine 2.5 Zoll Platte. Die CPU ist ein XScale-IXP42x Family rev 1 (v5l) auf arm5 Architektur also Linux Kompatibel. Leider stellt die Originale Firmware nur die Daten mit, meiner Meinung nach unzureichender Sicherheit im Netz. Auch Webserver Erweiterung sind nicht möglich Der Flash-Speicher (32MB max davon aber 8MB für's System) reicht da leider nicht aus. Nun gut, es gibt eine Möglichkeit die NSLU2 zu überreden nach dem Booten ein System von der externen Festplatte zu Booten und da sind vom Speicher alle Möglichkeiten offen. Durch langes durchforsten des Internets habe ich mich entschlossen Meine gesammelte Erfahrung niederzuschreiben.

Als erstes habe ich für Debbugzwecke und Erleichterung eine Serielle Schnittstelle eingelötet welche ich per USB2RS232 Kabel und mincom ansteuern kann

FIRMWARE AUSTAUSCHEN

Damit der Start nicht ganz so Schwierig wird (Firmware erstellen) habe ich die Originale Firmware mit DebianSlug 3.10 Beta (NSLU2) ersetzt. Die Zipdatei wird entpackt und die enthaltene debianslug-3.10-beta.bin mit Hilfe des Adminmeü's der Box geUPGRADed.

Hier /firmware; habe ich beschrieben wie ein Aktuelle's Debianslug selbst Compiliert werden kann und auf die Box gebracht wird.

Mit bereits eingesteckter externen Festplatte bootet die Box in ca 5 min neu. Auf dieser Platte sollten keine wichtiegen Daten sein, da diese gelöscht werden.

Auf NSLU2 per SSH oder Serielle einloggen

user:root pwd:opeNSLUg

PLATTE PARTITONIEREN

fdisk /dev/sda
 n  #(neue partition)
 p  #(primary)
 1  #(1. partition)
 1  #(start sector)
 +3G  #(end sector/partition größe 3GB wird als / gemountet)
 n p 2  #(2. partition) [enter]
 +512M  #(die swap partition (512MB reichen))
 t  #(type der partition festlegen)
 2  #(2. partition)
 82 #(type nach 82 also swap wechseln)
 w  #(schreibe tabelle)
 q  #(fdisk verlassen)

SDA1 (unsere /) nun mit extent3 formatieren mkfs.ext3 /dev/sda1

SWAP

mkswap /dev/sda2 sync; sync; sync swapon /dev/sda2

BOOTRAPPEN

mkdir /mnt/debinst
mount /dev/sda1 /mnt/debinst mkdir /mnt/debinst/work cd /mnt/debinst/work

{{{
fdisk /dev/sda
 n  #(neue partition)
 p  #(primary)
 1  #(1. partition)
 1  #(start sector)
 +3G  #(end sector/partition größe 3GB wird als / gemountet)
 n p 2  #(2. partition) [enter]
 +512M  #(die swap partition (512MB reichen))
 t  #(type der partition festlegen)
 2  #(2. partition)
 82 #(type nach 82 also swap wechseln)
 w  #(schreibe tabelle)
 q  #(fdisk verlassen)

SDA1 (unsere /) nun mit extent3 formatieren mkfs.ext3 /dev/sda1

SWAP

mkswap /dev/sda2 sync; sync; sync swapon /dev/sda2

BOOTRAPPEN

mkdir /mnt/debinst
mount /dev/sda1 /mnt/debinst mkdir /mnt/debinst/work cd /mnt/debinst/work

wget http://ftp.nl.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_0.3.3_arm.udeb

ar -x debootstrap-udeb_0.3.3_arm.udeb tar xzvf data.tar.gz

export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap ./usr/sbin/debootstrap --arch arm stable /mnt/debinst http://ftp.de.debian.org/debian

warten bis "Base system installed successfully" ( 20 min bis 50 min ) sonst mal in die /mnt/debinst/debootstrap/debootstrap.log reinsehen.

SYSTEM

cd .. cp /etc/resolv.conf etc/resolv.conf
cp /etc/hosts etc/hosts
cp /etc/hostname etc/hostname
cp /etc/network/interfaces etc/network/interfaces

cp -a /lib/modules/* lib/modules
UTILS wie BEEP & LEDS
cp /sbin/leds usr/bin/leds
cp /etc/default/functions etc/default/functions
cp /bin/beep bin/beep

mount -t proc proc /mnt/debinst/proc
cd /
!!! ACHTUNG !!! IN CHROOT UMGEBUNG WECHSELN
chroot /mnt/debinst
nano /etc/fstab
*proc      /proc proc defaults 0  0
/dev/sda1 /     ext3 defaults 1  1
/dev/sda2 swap  swap defaults 0  0

nano /etc/inittab
#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
S0:2345:respawn:/sbin/getty 115200 ttyS0 hinzu schreiben

/etc/apt/sources.list
deb http://ftp.de.debian.org/debian stable main non-free contrib

apt-get update apt-get -y dist-upgrade apt-get -y install \
anacron popularity-contest nslu2-utils module-init-tools \
linux-image-2.6.16-2-nslu2 2.6.16-18 kernel-module-ixp4xx-wdt \
udev ixp400-eth

dpkg-reconfigure passwd
apt-get -y install openssh-server
apt-get install locales dpkg-reconfigure locales
ACHTUNG WENN HDD >= 500GB dann noch /sbin/tune2fs -c 0 -i 0 /dev/sda1

!!! CHROOT ENDE ^D !!!
(control-D) oder exit

SAUBER BEENDEN & BOX STARTEN

umount /mnt/debinst/proc
killall syslogd anacron
umount /mnt/debinst

RedBoot bescheid geben das er von Platte starten soll
turnup disk /dev/sda1 -t ext3

reboot

NACH DEM BOOT VON PLATTE

Einloggen als root mit Eurem PWD. Pakete installieren und das System seinen Wünschen anpassen ;-) Zum Beispiel eine Weckfunktion in php über's Webfrontend Einbinden.

nslu2 (zuletzt geändert am 2007-12-23 22:45:48 durch localhost)