NSLU2 mit Debian

Dieser Blogeintrag ist eher als Erinnerungsstütze für
mich gedacht. Ich werde noch einige Zeit daran arbeiten. Bitte keine
Sekunde zögern, wenn du mit Tipps oder Hinweisen auftrumpfen kannst

Status:

Samba: Freigabe mit Authentifizierung funktioniert nichft.

Inhaltsverzeichnis

Vorgeschichte

Installation

Konfiguration

Vorgeschichte

Seit heute morgen steht nun so ein schickes Teil auf meinem
Schreibtisch.

Das NSLU oder SLUG genannt ist eine NAS Schnittstelle der Firma
Linksys. Das Kistchen macht
nichts anderes, als die maximal 2 angeschlossenen USB
Laufwerke im Netzwerk freizugeben. Hier noch der Link
zur Wikipedia.

Interessant wird die Geschichte, wenn man eine neue Firmware
auf das Gerät spielt. Dadurch bekommt man einen Mini-server mit
ungeahnten Möglichkeiten und geringem Stromverbrauch. Bei mir wird
das Teil fürs Erste als Print- und Fileserver dienen. Eine Liste mit
mehr oder weniger sinnvollen Nutzungsmöglichkeiten findet man hier.

Es gibt eine große Community rund um die “Slug”. Sehr
ausführlich und englischsprachig ist nslu2-linux.org.
Wenn man sich dort eingelesen hat, steht man vor der Qual der Wahl,
was man denn auf die Sluug spielen möchte:

Debian,SlugOS Firmware, OpenSlug Firmware, SlugOS/LE Firmware, OpenWrt Firmware, Angstrom Firmware, UcSlugC Firmware, GentooSlug Firmware

Eine detaillierte Übersicht findet man hier:

http://jrbnet.de/joomla/content/view/38/58/

Ich entschied mich nach grobem Überlesen für Debian,

Bei dieser Version handelt es sich um eine modifizierte ARM
Distribution von Debian Lenny. Die orginal Distribution hat den
proprietären Netzwerktreiber nicht an Bord.

Installation

Da die Slug nur über 8MB Speicher verfügt, wird der größte
Teil des Betriebssystems auf ein externes Medium installiert. (In
meinem Fall ein USB Stick).Vor dem Aufsetzen einer neuen Firmware
sollte man sich kurz mit dem Setup der SLUG beschäftigen. Das Gerät
hat von Werk aus die IP 192.168.1.77. Also IP und Gateway per
Webinterface anpassen.

Hardware

An meiner Slug hängen 2 Drucker
(HP Laser, Canon i865) sowie eine 1TB Maxtor Fesplatte, ein 8GB USB
Stick sowie eine Logitech Webcam. Als Hub dient mir
dieses
seltsame Teil.

Notwendige Tools und Software

Hier gibts die “inoffizelle” Debianversion mit dem Ethernettreiber.

Nun hat man eine Bin-Datei auf seinem Rechner. Um diese auf die
SLUG zu bekommen benötigt man die Pakete arpwatch und upslug2.

Beide Programme sind in den Ubunturepositories vorhanden. Der
gewiefte Arch Linux Nutzer
lädt sich upslug2 hier
und entfriemelt das Packet mit rpmextract.sh.

Nun gilt es die Mac-Adresse der Slug herauszubekommen.

Dazu lauschen wir mit arpwatch ein wenig in unserem Netzwerk mit

arpwatch -dN -i eth0

bis die SLUG gefunden wurde.

Upgrade Modus aktivieren

Bevors mit dem Installieren losgehen kann, müssen wir die SLUG in
den Upgrade Modus versetzen. Dazu wie folgt vorgehen:

  • Alle USB-Geräte abziehen

  • Netzwerkkabel bleibt angeschlossen

  • Slug ausschalten

  • Resetknopf mit spitzem Gegenstand
    drücken und halten

  • Slug einschalten

  • Wenn die Ready/Status LED ein wenig dunkler wird, Reset
    loslassen

wenn nun die Ready/Status LED abwechselnd Orange / Grün blinkt
habt ihr alles richtig gemacht

Firmware übertragen

Nun kann die Firmware mit

upslug -i di-nslu2.bin

übertragen werden. Nach der Übertragung fängt die Firmware an
zu arbeiten. Wenn die Slug 3 mal gepiepst hat (dauert recht lange),
kann man sie ausschalten. (Mußte ich durch entfernen des
Stromsteckers realisieren )

Nun muß noch eine kleine Schweinerei von Debian überwunden
werden und schon gehts los. Mit der neuen Firmware regelt sich die
SLUG eine neue, dynamische IP Adresse. Die bekommt man mit

nmap -sP 192.168.0.1-255

heraus. Nun kann man sich per ssh mit der Kiste verbinden und die
eigentliche Installation auf ein USB Medium beginnen.

ssh installer@192.168.0.11

Das Passwort ist install. Ich habe mich für die
Installation auf einen 8GB USB Stick entschieden.

Nun konfiguriert man das Baby mit einem textbasierten
Debianinstaller.

Da hier nichts ungewöhnliches passiert kann ma sich recht zügig
durch-geENTERn (Durchklicken funktioniert schlecht).

Der tatsächliche Installationsvorgang dauert ewig (nach 2 Stunden
ging ich zu Bette)

Alternativ kann man den USB Stick auch auf einem PC partitionieren
und die Dateien kopieren.

Eine sehr gute Anleitung dazu findet sich hier:

http://debian.asconix.com/debian-lenny-nslu2-howto

Konfiguration

Passwort ändern / Benutzer hinzufügen

Das mit den Benutzern habe ich persönlich gelassen, werde eh nur
zu Konfigurationszwecken auf der Maschine unterwegs sein. Also reich
mir ein:

passwd

Update des Systems

Datenbank updaten

        aptitude update

System upgrade

        aptitude safe-upgrade   

kann eine Weile dauern

Neue SSH Schlüsselpaare generieren

Nun sollten noch die SSH Schlüsselpaare neu generiert werden, da
die Schlüssel aus dem Image bestimmt schon irgendwo Verwendung
gefunden haben.

rm /etc/ssh/ssh_host_*

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N „“

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N „“

Wenn man sich nun neu an der Kiste anmeldet, fängt der lokale ssh
an zu meckern, da sich die Schlüssel auf dem Server verändert
haben. Also den Schlüssel in der ~/.ssh/known_hosts (nur
den Schlüssel des Slugservers)

Vim installieren

Ein ordentlicher Editor muß her

aptitude install vim

Statische IP verwenden

Servern gebe ich gerne eine statische IP. Dies geschieht in der
/etc/network/interfaces

# This file describes the network
interfaces available on your system

# and how to activate them. For more
information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

allow-hotplug eth0

#iface eth0 inet dhcp

auto eth0

iface eth0 inet static

address 192.168.0.77

netmask 255.255.255.0

gateway 192.168.0.1

In der /etc/resolv.conf noch
den Router als Nameserver eintragen

        nameserver 192.168.0.1

Host- und Domainnamen

echo slug >
/etc/hostname

In der /etc/hosts Domain und Hostnamen eintragen

127.0.1.1 slug.nutella.co.cc slug

Dienst durchstarten:

/etc/init.d/hostname.sh start

Den Hostnamen ermittelten man mit dem sinnigen Befehl

hostname

NTFS Treiber

Die externe Platte mit NTFS Partition wird nur im read only Modus
eingehangen.

Mit

        apt-get install ntfs-3g

schafft man Abhilfe. Temporär einhängen kann man das Teil mit

mount -t ntfs
-o umask=007,gid=046,uid=0,nls=utf8 /dev/sdb1 /mnt/

Allerdings soll die Platte permanent an der SLUG hängen (dafür
hab ich sie ja)

Deshalb wird ein wenig in der fstab gewerkelt.

Achtung: Da die NSLU2 nicht gerade flott ist, lohnt es
sich nicht wirklich NTFS -Partitionen freizugeben. Ich bin nie über
1,5MB/s gekommen.

Mit UUID’s arbeiten

Da jegliche Geräte per USB angeschlossen sind, kann es sein, dass
sich die Device Namen ändern. Dies muß zwangsläufig zu einem
Streik der Slug führen. Also die Geräte besser per UUID
identifizieren. Dazu gibts einen schönen Eintrag im Ubuntu
Wiki.

Problem: Wechselndatenträger, device Namen können wechseln ->
Lösung Identifikation per UUID

Mit dem Befehl blkid oder ls -lD
/dev/disk/by-uuid/
kommt man an die UUID’s

ls -lD /dev/disk/by-uuid/

/dev/sda1: UUID="477774bc-be7b-4c68-92ae-debde7e4f498" TYPE="ext2"

/dev/sda2: UUID="299f2070-13df-4276-b822-7a9f1a2ef06f" TYPE="ext3"

/dev/sda5: TYPE="swap"  /dev/sda6: UUID="644f7194-7bf9-449b-abcf-e5ed5a69b6ba" TYPE="ext3"

/dev/sdb1: UUID="EC745BB4745B7FEE" TYPE="ntfs"

Aus ungeklärten Gründen hatte meine Swap Partition keine UUID –
warum auch immer.

Wenn die Swap Partition keine UUID hat, Swap ausschalten

swapoff -a

neu erzeugen

mkswap /dev/sda5

Swap wieder aktivieren

        swapon

und mit blkid prüfen, ob die UUID nun vorhanden ist

/dev/sda1: UUID="477774bc-be7b-4c68-92ae-debde7e4f498" TYPE="ext2"
/dev/sda2: UUID="299f2070-13df-4276-b822-7a9f1a2ef06f" TYPE="ext3"
/dev/sda5: TYPE="swap" UUID="d09c6a2c-1732-41e1-9d81-1e8099025469"
/dev/sda6: UUID="644f7194-7bf9-449b-abcf-e5ed5a69b6ba" TYPE="ext3"
/dev/sdb1: UUID="EC745BB4745B7FEE" TYPE="ntfs"

fstab neu :

# /etc/fstab: static file system information.
## <file system>        <mount point> <type>     <options>       <dump>         <pass>proc
/proc   proc defaults 0  0UUID="299f2070-13df-4276-b822-7a9f1a2ef06f" /         ext3    errors=remount-ro 0     1
UUID="477774bc-be7b-4c68-92ae-debde7e4f498" /boot ext2 defaults 0 2
UUID="d09c6a2c-1732-41e1-9d81-1e8099025469" none swap sw 0      0
UUID="644f7194-7bf9-449b-abcf-e5ed5a69b6ba" /home ext3 defaults 0 2
UUID="EC745BB4745B7FEE" /home/maxtor1tb ntfs-3g         force,rwr,iocharset=iso8859-15,gid=1000,uid=1000 0 1

Immer schön vorsichtig sein beim Editieren der
fstab. Statt Leerschritten Tab zwischen den einzelnen Parametern.

Wenn die fstab fertig ist, neu einlesen mit

mount -a

Wenn hier fehler passieren, den USB-Stick oder die Platte auf
einem normalen IBM kompatiblen (heißen die heute noch so?) PC
monuten

und die fstab korrigieren

Nun muß noch initramfs bescheid wissen, wo der
Mountpunkt / zu finden ist:

Bei Michael Prokop gibt’s dafür eine sehr nette Anleitung:

http://michael-prokop.at/blog/2007/07/27/use-rootuuid-on-nslu2/

Samba

Nichts auf der Welt hasse ich mehr als die smb.conf.

Wer sich ein wenig über Samba schlau machen will kann das hier
tun.

Es gibt (im Moment) nur 2 Freigaben auf der HD. Einmal die
Datensicherungen des alten Herrn – genannt dasis –

und ext_zeugs ein Verzeichnis in dem der Pöbel tanzen kann.
Vor
jedweder Arbeit an der smb.conf lege ich normalerweise eine Kopie der
Datei an, weils meist schief geht.

In diesem Fall hab ich’s vergessen und dadurch herausgefunden,
dass die smb.conf aus dem samba Ordner einer Ubuntu 9.04 Installation
tadellos auf der Slug arbeitet
Zuerst wird Samba ein neuer
Benutzer hinzugefügt
smbpasswd -a schmitt
und
aktiviert
smbpasswd -e schmitt
Nun die Einträge in der
smb.conf angelegt

[dasis]

comment = Datensicherungen

path=/home/maxtor1tb/dasis

guest ok = no

writable = yes

browseable = yes

available = yes

user = schmitt

für alle lesen / schreiben

[ext_zeugs]

comment = Müll

path=/home/maxtor1tb/ext_kram

guest ok =yes

writable = yes

Samba neu starten

/etc/init.d/samba restart

und beten, dass es läuft. Wenn’s nicht klappt liefert

testparm

manchmal den Fehler. Glück auf.

Die Freigabe mit Anmeldung klappt prima mit Ubuntu, jedoch
versagt XP hier. Warum weiß ich nicht. Da ich aber auch keine Infos
im Log bekomme,

kann es sein, daß dies ein Windows Problem ist.

Drucker einrichten

…ist eine sehr angenehme Geschichte auf der Slug, wenn man Samba
meidet.
Per Webinterface läßt sich alles bequem
konfigurieren
Zuerst die /etc/cups/cupsd.conf
abändenr
damit man Zugriff auf das Interface bekommt

<Location />
AuthType Basic
Require user
@SYSTEM
# Allow shared printing and remote administration…
Order
allow,deny
Allow @LOCAL
</Location>

<Location /admin>
AuthType Basic
Require user
@SYSTEM
# Allow remote administration…
Order allow,deny
Allow
@LOCAL
</Location>

<Location /admin/conf>
AuthType Basic
Require
user @SYSTEM
# Allow remote access to the configuration
files…
Order allow,deny
Allow @LOCAL
</Location>

Die Oberfläche findet man nun
unter:https://192.168.0.77:631/printers/
Einloggen
kann ich mich mit meinem Root-Account.
Die SSL Zertifikate stimmen
zwar nicht, was mich in meinem lokalen Netzwerk jedoch rech wenig
interessiert. Nun den/die Drucker hinzufügen. Gedruckt wird nicht
über Windowsdrucker (da müßte man noch am Samba schrauben) sondern
über
das
Internet Printing Protocoll
. Tolle Sache, läuft im
TCP/IP Stack im Application Layer und klappt out-of-the Box mit fast
jedem ordentlichen Betriebssystem (auch WinXP, Vista und dem
komischen KDE
Klon
).
Unter XP richtet sich die Chose folgendermaßen
ein:
Erst einmal in der Weboberfläche einen Rechtsklick auf die
Drucker machen und kopieren
wählen
https://192.168.0.77:631/printers/Canon_i865_USB_1
https://192.168.0.77:631/printers/HP_LaserJet_1022_USB_FL02G3W_HPLIP

Start->Drucker und Faxgeräte->Datei->neuer
Drucker->Netzwer*
nun in die Textbox mit dem Titel “irgendwas
mit Netzwerk” die Links reinhauen. Durchklicken und alles wird
gut.
Problem:
Momentan muß ich mich per root
Account an CUPS authorisieren, sprich das Passwort ist persistent auf
irgendwelchen Rechnern im Netz. Hier müßte ich wirklich noch einen
Benutzer anlegen

Power-Button

Der Power-Button der NSLU2 sendet ein Strg+Alt+Entf-Signal an das
System. In der Standard-Debian-Installation bedeutet dies einen
Reboot.
Wen man möchte, dass die NSLU2 beim Drücken des
Power-Buttons herunterfährt und sich ausschaltet, muss in der Datei

/etc/inittab

die Zeile

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

durch

ca:12345:ctrlaltdel:/sbin/halt

ersetzt werden.

Webcam

Laut lsusb habe ich diese Webcam: Bus 001 Device 004: ID
046d:08ad Logitech, Inc. QuickCam Communicate STX

Zuerst wird das System mit apt-get update und
apt-get upgrade aktualisiert.Dann module-assistant
installieren

Nun m-a und m-a prepare laufen
lassen. Nun mit wird das gspa Modul installiert

m-a auto-install gspca

Kamera anschließen und prüfen, ob in /dev/ irgendwas mit Video
steht. (Bei mir /dev/video0).

Um auf die Kamer zugreifen zu können, bedurfte es bei mir noch
einem

chmod 644 /dev/video0

Mit lsmod | grep gspca prüfen, ob das Modul
geladen wurde – falls nicht in der /etc/modules/
hinzufügen.

Nun kann man die Kamera mit vidcat testen (im Paket w3cam
enthalten)

slug:~# vidcat -d /dev/video0 > /home/maxtor1tb/dasis/test.jpg

Leider habe ich keine Lösung für performantes Streaming auf der
Slug gefunden.

Deshalb schießt dieses Skript so oft es geht ein Bild und
kopiert es in einen Pfad auf den

lighttpd Webserver (Das
Verzeichnis /tmp benutze ich auf der Slug ungern, da es auf einem
Flashspeicher liegt. )

slug:~# cat cam_script

#! /bin/sh

while true

do

vidcat -d /dev/video0 >/mnt/ext_hd/webcam/tmp.jpg

cp /mnt/ext_hd/webcam/tmp.jpg /mnt/ext_hd/webcam/img.jpg

echo vidcat

done

exit 0

Nun fehlt noch ein nerviges Script,
welches das Bild im Browser immer wieder neu lädt.

Den Ursprung der Zeilen kann ich leider nicht mehr bestimmen:

slug:/var/www# cat cam.html
<html>
<head></head>
<body onload=“window.resizeTo(320, 240)“>
<script language=JavaScript>

newImg = new Image();
var imgsrc = „“;

function StreamLoad()
{
uniq = new Date();
uniq = uniq.getTime();
document.images.angelpage.src=newImg.src;
newImg.src=imgsrc+“?“+uniq;
}

function StreamInit()
{
imgsrc = document.images.angelpage.src;
uniq = new Date();
uniq = uniq.getTime();
newImg.onload=StreamLoad;
newImg.onerror=StreamLoad;
newImg.src=imgsrc+“?“+uniq;
document.images.angelpage.onload=““;
}

document.write(‚<img src=“/webcam/img.jpg“
name=angelpage onload=“StreamInit()“ width=320
height=240>‘);

</SCRIPT>
</body>
</html>

Im Schnitt wird alle 4 oder 5 Sekunden ein neues Bild generiert.
Ist zwar nicht optimal, aber dafür kann die Slug auch noch andere
Werke für mich verrichten.

Umlaute mit NTFS

Als ich versuchte einen Ordner mit Umlauten auf die Platte zu
kopieren gabs Ärger. Wollte nicht klappen.

Zuerst habe ich in die /etc/samba/smb.conf folgende
Zeile kopiert:

###### Umlaute Problem

unix charset = ISO8859-1

Danach konnte ich mit „Umlaut
Dateien“ auf dem ext3 formatierten USB-Stick kopieren.

Das Problem hatt wohl mit NTFS zu tun.

Das Kernelmodul „nls_iso8859_15“
ist geladen.

In der /etc/fstab habe ich dann der
Platte diese Optionen mitgegeben:

defaults,iocharset=iso8859-15,gid=1000,uid=1000

und mit mount –a die fstab neu geladen –
Problem erkannt Gefahr gebannt.

Quellen:

http://www.henningdippel.de/nslu2-als-linux-server/

http://debian.asconix.com/debian-lenny-nslu2-howto

http://www.ende-der-vernunft.org

http://www.skraatz.de/?p=65

http://www.nslu2-linux.org/

http://michael-prokop.at/blog/2007/07/27/use-rootuuid-on-nslu2/

Advertisements

2 Antworten zu NSLU2 mit Debian

  1. Pingback: Linksys NSLU2 mit Debian Lenny | Unerklärliches am Rande

  2. Pingback: Ein wenig Heimkino | Unerklärliches am Rande

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s