Slug als Webserver

Aus MySlug
Zur Navigation springen Zur Suche springen

Achtung neu: Ich habe ein Forum für Eure Fragen zur NSLU2 / SLUG eingerichtet. Die Mailingliste ist zugunsten des Forums aufgelöst. Ihr findet das Forum unter http://www.gargi.org oder über die Sidebar unter community/kontact (Browsercache leeren, falls der Menüpunkt nicht zu sehen ist).
Hinweis: Bitte verwendet einen aktuellen Browser. Mit Browsern in einer älteren Version werden oftmals Teile der Textformatierung nicht korrekt angezeigt.

Was ist eine NSLU2?

... zumindest dachte ich mir das, als ich zum ersten Mal davon hörte. NSL steht als Abkürzung für Network Storage Link. Das U selbst kann Unit oder auch USB bedeuten. Dieses spezielle Gerät, das hier auf dieser Seite etwas näher besprochen wird, wird von der Firma Linksys http://www.linksys.com vertrieben.

NSLU2

Die NSLU2 im Größenvergleich

Derartige Geräte werden vom Grund her als Server für Datenspeicher innerhalb eines Netzwerkes verwendet. D.h. an einer NSL-Box wird ein Datenträger angeschlossen, z.B. eine externe USB-Festplatte oder ein Flashspeicher, der für alle Geräte innerhalb eines Netzwerkes zur Verfügung steht, je nachdem der Zugriff auf den Datenspeicher geregelt ist. Vielerorts werden für solche einfachen Aufgaben ganze Rechner in einem Netzwerk abgestellt. Der Vorteil solcher Lösungen liegt klar auf der Hand: Sie sind einfach zu konfigurieren, nehmen weniger Platz als ein kompletter Rechner ein, verbrauchen weniger Strom als ein "echter" Server und sind natürlich kostengünstig. Derzeit kostet ein neues NSLU2 um die 80,- Euro. Wer eine ausrangierte Festplatte zur Verfügung hat, der muss nur noch ca. 40,- Euro für ein USB-Gehäuse berappen. Somit kommt eine derartige Lösung auf rund 120,- Euro.

Sie lässt sich somit recht einfach verbauen und stört auch nicht durch irgendwelche Laufgeräusche, da das Gerät selbst keine Lüfter verwendet. Hörbar ist nur eventuell die externe Platte selbst. Aber der Geräuschpegel hängt ebenso stark von der Qualität der verbauten Platte ab.

Betrieben wird das Gerät dann an einem Switch oder auch Router, über den sämtliche Zugriffe innerhalb des Netzwerkes geregelt werden. Bei Anschaffung eines Routers, der vermutlich Anfragen auf ein DSL-Modem weiterleiten soll, sind für den erweiterten Betrieb einer NSLU2 (Web- Und/oder FTP-Server) folgende Eigenschaften von Vorteil:

  • Firewall/Virtual Server Routing: Hier wird die Anfrage von außerhalb gesteuert. Möchte man z.B. auf eine Website zugreifen, dann leitet der Router diese Anfrage auf eine festgelegte interne IP-Nummer weiter. Diese ist dann eben die für den NSLU2 festgelegte IP.
  • Dynamic DNS: Da man bei der Wiederanwahl in das Internet in der Regel eine neue IP bekommt, wird der Zugriff auf einen eigenen Server unnötig erschwert. Hierzu legt man sich dann z.B. über Dynamic Network Services DynDNS http://www.dyndns.org Namen fest, der dann bei der Wiedereinwahl die eigene IP-Nummer automatisch übermittelt bekommt. Somit ist man immer über den festgelegten Domain-Namen erreichbar und muss somit nicht mehr mit komplizierten IP-Nummern hantieren.
  • Auto Reconnect: Der Router sollte sich selbständig wieder an das Internet verbinden, sobald die Verbindung seitens des Providers getrennt wird. Hier bitte zwei Dinge beachten: Zum einen ist dies natürlich nur interessant, wenn ein zeit- und volumenunabhängiger Tarif abgeschlossen wurde, also eine klassische Flatrate. Alles andere wird TEUER!!! Zum anderen bitte darauf achten, ob hierbei nicht vertragliche Regelungen seitens Eures Providers derartige Nutzung untersagen. Bitte informiert Euch über beide WICHTIGEN Dinge. Denn beides kann Geld kosten!

NSLU2

Wieso nun gerade dieses Gerät? Nach kurzer Zeit hat sich herausgestellt, dass im Inneren der NSLU2 ein normales Linux schlummert, das nun viel mehr kann, als nur Daten über das Netz zu schaufeln. Muss auch so sein, denn das Gerät wird über ein Web-Interface administriert, was zumindest schonmal einen Webserver im Inneren vermuten lässt. Und noch viel mehr! Der Datenspeicher ist zudem ein Samba-Server, der nun betriebssystemunabhängig verschiedene Betriebssysteme versorgen kann. Nachdem findige Leute die Maschine sich zur Brust genommen haben, war es sehr schnell möglich, weitere Programme hierauf zum Laufen zu bringen. Somit kann das Gerät auch als normaler Webserver, als FTP-Server, Mail-Server und auch für den Anschluss einer Webcam genutzt werden. Dabei verliert es nicht die Funktionalität, die es von Haus aus mitbringt: Ein Datenserver im Netz zu sein.

Ich werde nun hier diverse Bearbeitungsschritte protokollieren, die ich selbst an diesem Gerät anhand diverser Anleitungen im Netz (div. FAQs und Newsgroup-Beiträge) durchprobiert habe, um zu demonstrieren, wieviel Power in diesem erstmal recht unscheinbar wirkenden Gerät steckt. Genug, um hierbei auch ein kleines Büro mit Daten zu versorgen und über das Internet für einen Datenaustausch erreichbar zu machen. All gates are open now!





Wie flashe ich das Gerät?

NSLU2

Dies könnt Ihr im Adminpanel mittels dieses Tools durchführen. Zuerst bitte die Festplatten abstöpseln. Beim Update darf die Festplatte NICHT angeschlossen sein. Jetzt als Admin (Administration anklicken) anmelden und auf Advanced. Hier dann Upgrade anklicken. Die Firmware als *.bin- File kann dann dort angegeben werden.

Danach auf "Start Upgrade" klicken und abwarten. Das Tool startet die NSLU2 dann selbständig. Bitte den Updatevorgang NICHT unterbrechen. Es dauert in der Tat einwenig, bis Ihr eine Erfolgsmeldung bekommt und das Gerät neu gestartet wird. Nach dem Reboot solltet Ihr dann einen Hinweis auf der Startseite über Euere neue Firmware finden.

Die aktuelle Firmware bekommt Ihr unter folgender URL: http://www.slug-firmware.net/u-dls.php. Die Originalfirmware gibt es unter dieser Adresse [1].

Sollte das Gerät dabei "zerflasht" werden ist Ruhe zu bewahren! Man glaubt es fast kaum, aber ich persönlich habe den Eindruck, dass man mit einem großen Hammer auf die Kiste hauen muss, damit es tatsächlich kaputt ist. In den meisten Fällen läßt sich ein fehlgeschlagener Flash auch wieder retten, ohne dass das Gerät eingeschickt werden muss. Dazu bitte mein Kapitel "Notoperation!" lesen. Wer sich es zutraut, kann auch auf diese Art und Weise gleich die Firmware auf den internen Speicher schreiben.





Notoperation!

Sollte irgendwann mal nichts mehr gehen, dann muss eine kleine Notoperation durchgeführt werden. Symptom: Das Gerät läßt sich nichtmehr ansteuern, kein Ping funktioniert und auch das mitgelieferte Setup-Programm von CD erkennt das Teil nicht mehr. Um das zu reparieren muss das Gerät neu geflasht werden.

Ihr benötigt dazu ein Biosfile (bitte Version 2.3R25 [2] ) und einen Flasher, den Ihr HIER [3] herunterladen könnt. Den Flasher installiert dann gleich mal bevor Ihr weiter macht.

Variante 1 (Windows)

1.) Zuerst muss das Netzwerk auf 192.168.0.x umgestellt werden. Dabei darf die Nummer 192.168.0.1 von keinem weiteren Gerät belegt sein, denn diese benötigt unsere kleine Box.

2.) Steckt nun das Gerät an, schaltet es aber noch nicht ein! Jetzt eine Telnetsession mit telnet 192.168.0.1 9000 aufmachen, aber NOCH NICHT mit Enter abschicken, sondern erstmal nur in die Dos-Shell eingeben!

3.) Jetzt muss es ganz schnell gehen! Schickt den Telnetbefehl ab und drückt dabei gleichzeitig die Einschalttaste am Gerät. Wenn die Anzeige "Verbinden...." in eine erste Biosmeldung umschaltet müsst Ihr sofort die Taste STRG+C drücken. Wenn Ihr nun ein "RedBoot>" am Prompt erscheinen seht, dann seid Ihr "drin". Falls nicht muss die Prozedur wiederholt werden, bis Ihr den richtigen Moment trefft.

4.) Nun gebt "upgrade" ein und drückt Enter. Jetzt müßte ein Status-LED am Gerät grün/orange (bei neueren Geräten dunkelorange/orange) blinken.

5.) Startet nun das installierte Upgrade-Utility. Wählt hier Eure Netzwerkkarte aus und auf "Browse"->"Browse Targets" klicken. Nun müsstet Ihre eine MAC-Adresse sehen, die Ihr anklickt. Dann auf Files und Euer Bios (*.bin Datei) auswählen. Auf Öffnen klicken und mit OK bestätigen. Jetzt startet den Upgradevorgang indem Ihr auf den Button Upgrade drückt.

6.) Das alles dauert nun ne kleine Weile. Zuerst wird das Eeprom gelöscht, danach neu aufgespielt und dann überprüft. Es versteht sich von selbst, dass hier nicht unterbrochen werden darf! Wenn alles gut gelaufen ist, dann sollte die Meldung "Upgrade succsessfully" erscheinen, die Ihr mit "OK" wegklickt.

7.) Das Gerät startet von selbst neu. (Also wartet bis zum nächsten Piepsignal)

8.) Falls Ihr nun unter der alten IP nicht mehr auf Euer Gerät kommt, dann wurde es auf 192.168.1.77 zurückgestellt. Das deutet allerdings auf einen Fehler hin, der sich mit einer Fehlermeldung im Adminpanel zeigt: "Can't get Samba Information". Wenn das der Fall ist, dann muss noch der Configbereich im Eeprom gelöscht werden. Macht nochmal einen RedBoot wie oben beschrieben. Gebt dann am Prompt folgendes ein: fis erase -f 0x50040000 -l 0x20000 (Hinweis: das -l ist ein kleines L !!!) Bitte genau dies eingeben! Bei einen Tippfehler kann das Eeprom beschädigt werden! Danach ein reset eingeben. Dann funktioniert auch die Eingabe der Serverinfos im Administartionspanel wieder.

HINWEIS: Es kann leider sein, dass neuer Netzwerkkarte vom UGUTIL nicht erkannt werden. Hierzu ist dann eine ältere Standard-Karte zu diesem Zwecke einzusetzen. Bei mir wurde der onboardchip eines Nforce4 Chipsatzes nicht erkannt. Dafür der Netgear WG111v2 USB Wlan-Stick. Ob ein Update über Funk ratsam ist sollte jeder für sich entscheiden.

HINWEIS 2: Bevor unter Windows ein Update vorgenommen wird, sollte die Softwarefirewall kurzfristig dafür abgeschalten werden. Dies kann nur nervige Sperrungen hervorrufen, die das Updaten verzögern.

HINWEIS 3: UGUTIL läuft leider nicht unter Vista 64bit


Variante 2 (Linux)

Der meine ich etwas einfachere Weg geht über Linux. Zunächst benötigt man das Programm upslug2. Dieses kompilieren wir selbst nachdem wir uns das Quellpaket besorgt haben:


svn co http://svn.nslu2-linux.org/svnroot/upslug2/trunk upslug2


Das erzeugt ein neues Unterverzeichnis upslug2. In dies wechseln wir dann:


cd upslug2

Danach starten wir den Kompile mit folgenden Befehlen:


autoreconf -i
./configure
make


Jetzt liegt das Programm upslug2 im Buildverzeichnis. Kopiert nun die aktuelle Firmware in das gleiche Verzeichnis.

Nun stellt Euer Netzwerk auf folgende IP um:

192.168.0.xxx

D.h. : Die NSLU2 wird wieder die IP 192.168.0.1 verwenden, somit muss der Linuxrechner eine andere Endnummer bekommen.

Jetzt versetzen wir die NSLU2 mit einem einfachen Trick in den Redboot- Modus: Schalte die Slug aus und nehmt eine Büroklammer zur Hand. Drückt damit auf der Rückseite des Gerätes den Reset-Button. Diesen haltet dann fest und drückt vorne auf den Einschaltknopf. Den Einschaltkopf lasst los und haltet hinten noch den Reset-Knopf gedrückt. Dann beobachtet die obere LED. Diese wird zuerst orange und nach ca. 10 Sekunden rot. Jetzt den Reset-Knopf loslassen! Wenn nun die LED Rot-Grün blinkt, dann ist diese bereit für den Flashvorgang.

Setzt Euch nun an Euren Linuxrechner und holt Euch an der Konsole root-Rechte:


su
[PASSWORT EINGEBEN]


Nun startet das upslug2 Program aus Eurem Buildverzeichnis heraus mit folgendem Befehl:


./upslug2 --image="Unslung-6.8-beta.bin"


(das Beispiel gilt für die im Moment aktuelle 6.8 Firmware) Wenn Ihr mehrere NSLU2 im Netz hängen habt, muss die MAC Adresse angegeben werden:


./upslug2 --target="xx:xx:xx:xx:xx:xx" --image="Unslung-6.8-beta.bin"


(xx:xx:xx:xx:xx:xx = MAC Adresse der zu flashenden NSLU2)

Ein Output, der auf das erfolgreiche Flashen hindeutet sieht in etwa so aus:


linux:/home/test/Work/upslug2 # ./upslug2 --image="Unslung-6.8-beta.bin"
LK........... xx:xx:xx:xx:xx:xx Product ID: 1 Protocol ID:0 Firmware Version: R23V63 [0x2363]
Upgrading LK............. xx:xx:xx:xx:xx:xx
    . 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 occurred         + sequence error detected

  7fffff+000000 ...VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
Rebooting... done


Nachdem die Kiste automatisch neu startet ist die neue Firm wieder drauf.



Unslingen und User einrichten

Zuerst wird über das Administrationspanel die neue Firmware eingespielt. Das funktioniert menügesteuert. Danach müssen wir das Gerät "entsichern", damit eine Telnet-Session zugelassen wird und wir in das geheiligte Innere der Maschine gelangen können.

1. Startet die Kiste ohne angeschlossener Festplatte. Ruft jetzt im Browser unter Angabe der IP nebst des eventuell von Euch neu eingestellten voreingestellten Ports folgende URL auf: http://192.168.1.77:8080/Management/telnet.cgi Hier werdet Ihr nach dem Adminpasswort gefragt. Sollte das nicht verstellt sein, dann lautet es werkseitig admin:admin . Jetzt könnt Ihr bequem auf einen Button klicken, um die Telnetsession zu "enablen" (aktivieren). Vergesst bitte nicht, wenn Ihr mit Euren Arbeiten an der Slug fertig seid, hier wieder auf "disable" zu klicken, damit die Maschine vor Zugriffen gesichert ist.

Hinweis: Ab de unslug Version 6.8 kann man dies auch komfortabel auf der Startseite des Administrationspanel erledigen!!!

Schaltet nun von Eurer Shell aus auf eine Telnetsession

telnet [IP der Slug]

Hinweis: Ein sehr schönes Tool hierzu ist der Putty. Die Projektseite dazu findet Ihr hier: PuTTY: http://www.putty.nl/ Richtet ein Profil für die NSLU2 im Putty ein (in der Konfiguration telnet anklicken, die IP der Slug eintragen und als neues Profil mit einem Namen -z.B. nslu2 - abspeichern) und legt eine Verknüpfung an. Diese erweitert Ihr mit dem Parameter -load [profilname] , also unter Windows mit unserem nslu2 Profil z.B. putty.exe -load nslu2 . Dann genügt ein Doppelklick auf die Verknüpfung und Ihr habt schon eine Telnetverbindung zum gewünschten Client vor Euch auf dem Bildschirm.

Hinweis: Damit später auch die NSLU2 von der Konsole aus auf die Repositories zugreifen kann, muss im Webadmin noch ein Gateway eingetragen werden! Dies ist in der Regel die IP Eures Routers! Ohne diesen erhaltet Ihr beim Installieren von zusätzlichen Paketen eine Fehlermeldung.

2. Telnet auf die Box und hier nun mit root:uNSLUng anmelden. Wenn Ihr als Root angemeldet seid, erhaltet Ihr in etwa diese Meldung:


login: root
Password:
No directory, logging in with HOME=/

Welcome to Unslung V2.3R63-uNSLUng-6.8-beta

   -------- NOTE: RUNNING FROM INTERNAL FLASH  --------

This system is currently running from the internal flash memory,
it has NOT booted up into "unslung" mode from an external drive.

In this mode, very few services are running, and available disk
space is extremely limited.  This mode is normally only used
for initial installation, and system maintenance and recovery.


BusyBox v0.60.4 (2005.03.22-06:52+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.


Danach die Festplatte wieder anschließen. Wartet nun ab, bis die Box die Festplatte als angeschlossen anzeigt (grünes LED an der Box, oder über das Web-Adminpanel). Jetzt seid Ihr in der Box schonmal drin. Damit nun das Betriebsystem auf die Festplatte ausgelagert wird (unslingen) gebt nun folgenden Befehl an der Konsole ein:

/sbin/unsling disk2

Ab der Firmwareversion 6.8 wird die Festplatte hierzu an den USB-Port 2 angeschlossen. Danach kann hier sogar ein root-Passwort eingegeben werden, was dann für das System generell gilt. Wenn das Unslingen fertig ist das Gerät neu starten. Die Platte bleibt am USB-Port2!!!

Es dauert eine Weile, bis die Sache erledigt ist. Jetzt kann aufgrund des wesentlich größeren Speicherplatzes später entsprechend neue Software installiert werden.

3. Ruft in Euerem Browser das Administrationspanel auf und legt einen neuen User an (z.B. testi). Dieser soll auch ruhig ein Heimatverzeichnis bekommen, also hier das im Konfigmenü auswählen. Speichern und beenden. Das neue Heimatverzeichnis liegt dann im Wurzelverzeichnis und trägt den Namendes Users, also in unserem Beispiel "/testi"


4. In der Telnetkonsole dann vi /etc/passwd eingeben. Mit "i" in den Editmodus wechseln.


5. Sucht nun die Zeile mit


Testi:xyzverschlüsseltes.passwort:2002:501:::/dev/null


Damit nun später die bash verwendet werden kann und auf das Verzeichnis auch via ftp ein Zugriff erfolgen kann, werden wir die Zeile hinten abändern. Dazu legen wir nochmal das Heimatverzeichnis des Users fest:


testi:xyzverschlüsseltes.passwort:2002:501::/testi:/bin/sh


6. Mit "ESC" den Editmodus verlassen. mit ":w" speichern und ":q" beenden.


7. Zum Schluß updaten wir die Slug gleich und sehen dabei, ob unser neuer User wirklich Rootrechte hat. Hierzu folgendes ausführen:

ipkg update
ipkg upgrade

Danach werden automatisch die neuesten Pakete gezogen und installiert.

Zudem sollten noch folgende Einstellungen im Webadmin gemacht werden:

Ruft dazu Eure Konfiguration auf und geht auf Administration - > System. Dann entfernt die Haken vor

-> Enable Guest Logins
-> Enable FTP-Server
-> Enable UPnP Support

Wichtig ist, dass Ihr noch den Port des Webadmins von 80 auf einen anderen ändert (8282 oder ähnliches). Den Port 80 benötigt Ihr dann für Euren Apache.

Die Konfig sollte dann in etwa wie folgt aussehen:

Hinweis: Ihr müsst nicht jedes mal den Webadmin bemühen, um die Slug neu zu starten. Ebenso ist es nicht notwendig, jedes Mal aufzustehen, und das Knöpfchen direkt am Gerät zu drücken. Wenn Ihr eh schon in der Konsole eingeloggt seid, dann geht das über zwei lockere Befehle am Prompt: sync
reboot




bash installieren

Ziel ist es, die bash soweit zu installieren, dass jeder User entsprechend die gleiche bash verwendet. Ich beziehe mich dabei auf die Anleitung von unslung.de, passe diese allerdings hie und da einwenig an, um vielleicht das eine oder andere einwenig chronologischer in der Beschreibung darzustellen.


1) Alles passiert natürlich unter telnet. Loggt Euch mit Euerem root-Account ein, und installiert zuerst die bash:

ipkg install bash


2) Falls noch nicht geschehen legen wir unter etc eine Datei profile an und editieren diese gleich:

vi /etc/profile

Hinweis: Der vi Editor - Editmodus: Taste "i" drücken. Editmodus verlassen: "ESC" drücken. Speichern: Tasten ":w" und beenden mit Tasten ":q"


3) Nun fügen wir folgende zwei Zeilen in die Datei ein:

export PS1="\[\033[1;33m\]\u@\h\[\033[0;37m\]:/> "

und GANZ ZUM SCHLUSS

test -f /opt/bin/bash && exec /opt/bin/bash

Wer's etwas freundlicher beim Begrüßen mag, der kann oben in der etc/profile noch folgende Zeilen ergänzen:


echo ---------------------------------------------------------------------
echo "Hallo $USER, willkommen auf der Slug! ;-)"
echo ---------------------------------------------------------------------
echo


4) Als nächstes legen wir im root-Verzeichnis die .bashrc an:

vi /.bashrc

In diese Datei können wir einige hilfreiche aliase und Umgebungsvariablen setzen. Ich empfehle folgende Zeilen einzugeben:


alias "d=ls -la"
alias "dir=ls -la"
export PATH=$PATH:~/bin:.


5) Die .bashrc muss nun in jedes Userverzeichnis kopiert werden, das sich im Rootverzeichnis befindet.


Midnight Commander installieren

1) Zuerst muss das Programm installiert werden:

ipkg install mc

(falls vorher noch nicht geschehen, dann zuerst ipkg update eingeben!)


2) Falls noch nicht geschehen, die Datei /etc/profile anlegen und editieren:

vi /etc/profile


3) Dort zwei Zeilen ergänzen:


export TERMINFO=/opt/lib/terminfo
export TERM=xterm-pcolor


4) System neu starten.


5) Midnight Commander mit

/opt/bin/mc

starten. Falls Ihr die bash installiert habt, könnt Ihr auch in der .bashrc folgendes ergänzen:

alias "mc=/opt/bin/mc"

Das macht die Sache recht praktisch, denn so wird das Programm ganz einfach mit einem mc in der shell gestartet.



FTP-Server einrichten (vsftpd)

1) Zuerst legt man ein leeres Verzeichnis an:
mkdir -p /usr/share/empty

2) Vsftp-Daemon installieren:
ipkg install vsftpd

3) rc.xinetd Datei anlegen und mit Inhalt füllen:
vi /unslung/rc.xinetd

Dann im vi-Editor den Editmodus mit Drücken der Taste "i" aktivieren und folgendes abtippen:


#!/bin/sh
 
 if ( [ ! -f /etc/inetd.conf ] || !(grep vsftpd /etc/inetd.conf -q) ) then
 echo "ftp stream tcp nowait root /opt/sbin/vsftpd /opt/etc/vsftpd.conf" >>/etc/inetd.conf
 fi
 
 return 1


Bitte HAARKLEIN GENAU abschreiben! Bitte zweimal kontrollieren! Dann Edit-Modus mit "ESC" beenden und mit
:w
abspeichern und mit
:q
beenden

4) vsftpd.conf editieren, damit jeder angemeldete User nur seinen eigenen Bereich sehen kann, und nicht in Toplevel wechseln kann:

vi /opt/etc/vsftpd.conf

Hier dann im Edit-Modus (Taste "i" !) folgende Zeile am Schluss ergänzen:

chroot_local_user=YES

Abspeichern und beenden!

5) Logdatei für den ftp-Daemon erstellen:
mkdir -p /opt/var
mkdir -p /opt/var/log
touch /opt/var/log/vsftpd.log

6) Ersten User anlegen: Im normalen Adminpanel einen neuen User anlegen. Nennen wir ihn hier als Beispiel "upload". Dieser bekommt auch beim Erstellen ein Homedirectory auf der Platte zugesprochen. Jetzt müssen wir noch die passwd anpassen:

vi /etc/passwd

Den User "upload" suchen. Die Zeile sieht dann in etwa so aus:


upload:xyz.verschlüsseltespasswort:2003:501:::/dev/null


Das ändern wir dann in folgender Weise ab:


upload:xyz.verschlüsseltespasswort:2003:501::/upload:/bin/sh


Da auf der Slug nun alles auf dem USB-Port2 liegt, wäre das korrekte Verzeichnis /share/flash ... Wir umgehen das damit, indem wir den die Verlinkung unter /root verwenden. Somit wird dem User ein festes Heimatverzeichnis zugewiesen, das sich eben auf der Platte befindet. Das alles wie oben schon beschrieben dann speichern und beenden.

7 ) Die NSLU dann neu starten und mit einem ftp-Clienten oder via Webbrowser

ftp://username:deinpasswort@ipnummerdernslu  ausprobieren.

Noch ein Tipp: Wenn man ein laufendes Protokoll sich anzeigen lassen möchte, dann macht eine Telnet-Session auf und gebt folgendes ein:

tail -f /opt/var/log/vsftpd.log

Dann habt Ihr immer im Blick, was gerade auf dem Server passiert.

Hinweis 1: Solltet Ihr einen Tippfehler bei der Erstellung der /share/hdd/conf/unslung/rc.xinetd gebaut haben und startet das Dingens via Neustart der Kiste oder mit dem Befehl /etc/rc.d/rc.xinetd, dann kann es sein, dass Ihr eben keinen Zugriff via ftp bekommt. Ihr entdeckt dann zwar den Fehler im /share/hdd/conf/unslung/rc.xinetd aber auch nach Korrektur startet der FTP-Server nicht. Das liegt nun daran, dass beim ersten Start die Zeile echo"ftp... " in das /etc/rc.d/rc.xinetd Script MIT ÜBERNOMMEN wurde. Also hier dann den Fehler, sollte er in der echo-Zeile entstanden sein, auch ausbessern! Dann klappt es! Die Festplatte zu löschen und neu zu unslingen bringt auch nichts, da das etc/rc.d/rc.xinetd auf dem Flashspeicher liegt. Hier müsste man die Firm dann komplett neu aufspielen. Aber da lässt sich sicher besagte Datei einfacher und schneller editieren.




Der Apache Webserver

Der Apache Webserver ist auf der Slug schnell installiert. Hierzu wird sich erstmal als root per telnet eingeloggt. Danach führen wir den Befehl

ipkg install apache

aus. Das System wird automatisch konfiguriert und der Webserver gestartet. Dieser liegt allerdings auf dem Port 8000. Ruft den Server nun mit

[eure ip adresse]:8000

auf. Es ergibt dann folgendes Bild:

Um den Apache nun anzupassen rufen wir die Konfigurationsdatei des Apache auf:

vi /opt/etc/apache2/httpd.conf

Wichtige Zeile/ Einträge:

Listen 8000

gibt den Standardport an. Ändert dies auf 80, um den normalen Port eines Webservers zu verwenden.

DocumentRoot "/opt/share/www" legt fest, wo Eure Webfiles liegen. Idealerweise legt hier einen User an, den Ihr per ftp erreichen könnt. Auf dieses Userverzeichnis schreibt diese Zeile um. Z.b. nennt sich der User webserver . Also lautet die Zeile dann:

DocumentRoot "/webserver"

<Directory "/opt/share/www"> muss ebenso angepasst werden (z.B. <Directory "/webserver"> )

DirectoryIndex index.html index.html.var Diese Zeile ergänzt dann noch durch ein "index.htm und index.php" , damit auch Pages mit der htm und php Extention geladen werden können.

Das sollten die wichtigsten Punkte sein. Im Internet finden sich noch eine Vielzahl an weiteren Konfigurationsmöglichkeiten für den Apache. Speichert Euere Änderungen ab.

Kopiert nun eine Testpage auf Euer Webverzeichnis und startet die Slug neu. Nun müsste nach einer kurzen Wartezeit der Webserver mit Eurer normalen IP abrufbar sein.

Hinweis: Bei Eurem Webserver bitte die Files immer via ftp und nicht dem Samba-Share hochladen. Denn nur über einem ftp-Upload ist sichergestellt, dass Ihr keinen Access-Error wegen mangelnder Zugriffsrechte bekommt.


PHP Erweiterung für Apache

Zuerst loggen wir uns wieder als root via einer Telnetsession ein. Danach installieren wir zwei Pakete:

ipkg install php-apache eaccelerator

Jetzt starten wir den Apache neu, indem wir folgenden Befehl absetzen:

/opt/etc/init.d/S80apache

Jetzt legen wir folgenden Code auf unsere Homepage:


<?php
    phpinfo()
?>

Das File speichern wir als "phpinfo.php" ab. Dieses rufen wir dann über unseren Browser auf:

[deine ip nummer]/phpinfo.php

Wenn alles funktioniert sollte dies in der Art zu sehen sein:

Dieses Script gibt nun Auskunft, welche Version des Apache und des PHP installiert ist.

Hinweis! Sollte der php-Aufruf nur einen Plain-Text bringen, dann kann es sein das in einer möglichen neuern Apache Version der php-Aufruf in der /opt/etc/apache2/httpd.conf fehlt. Ergänzt hierfür am Ende der Datei folgende Zeilen:


LoadModule php5_module libexec/libphp5.so
AddType application/x-httpd-php .php .phtml




Mysql Datenbank installieren

Mysql selbst installieren wir über ein Konsolenfenster als root. Hierzu gebt folgenden Installationsbefehl ein:

ipkg install php-mysql

Nachdem die Pakete installiert sind setzen wir sofort ein root- Passwort für die Datenbank:

/opt/bin/mysqladmin -u root password dein_passwort

Jetzt legen wir eine neue Datenbank mit den Namen Beispiel an:

/opt/bin/mysqladmin -p create beispiel Hier muss nun Euer Passwort eingegeben werden Das wären die ersten wirklichen Fingerübungen am Prompt, was die Datenbank betrifft. Damit der Webserver die Datenbank auch sauber integriert startet die Slug einfach neu:

sync
reboot

Ruft nun nochmal Euer phpinfo-Script auf, wie ich es im PHP-Abschnitt beschrieben habe. Im Bereich "addidional .ini files parsed" muss jetzt die mysql.ini stehen:

NSLU2

Wer jetzt natürlich nicht unbedingt sich die Finger beim Eingeben von cryptischen Befehlszeilen am Prompt brechen möchte, wenn er seine Datenbank administriert, der braucht auch nicht auf seiner kleinen Slug auf die Vorzüge der grafischen Administration via phpmyadmin zu verzichten. Das Programmpaket kann man sich unter http://www.phpmyadmin.net herunterladen. Das entpackt man dann auf seinen Webserver und legt wie gehabt seine config.inc.php an. Bitte konsultiert die beiliegende Doku, um den genauen Installationsvorgang in Erfahrung zu bringen. Weiteres würde über den mir gesteckten Rahmen dieser Dokumentation hinaus gehen. Wenn Ihr die Dateien oben habt und die Zugriffe in der config geregelt habt, dann solltet Ihr das phpmyadmin wie gewohnt benutzen können:

Hinweis: Hier ist es ratsam, über ein htaccess File das Verzeichnis zu schützen, auf dem das phpmyadmin abgelegt ist. Sonst kann ja jeder in der Datenbank herumpfuschen.

Exkurs: htacces anlegen

Das ist einwenig kniffeliger, aber ich denke, dass man das, wenn man sich Schritt für Schritt an meine Anleitung hält machbar. Zuerst müssen wir dem Apache erklären, dass er nicht nur Friedenspfeifen rauchen soll, sondern auch gesicherte Verzeichnisse zu verwalten hat. Dazu müssen wir seine Konfigurationsdatei "nachbehandeln". In einer telnet-Session rufen rufen wir diese als root im vi-Editor auf:

vi /opt/etc/apache2/httpd.conf

Die Zeile

AllowOverride None

muss auf

AllowOverride All
( i oder Einfg. zum Editieren drücken, ESC zum Verlassen des Editmodus)

gesetzt werden. Dann mit :w speichern und mit :q verlassen.

Jetzt startet den Apache wieder neu, damit die neue config eingelesen wird:

/opt/etc/init.d/S80apache

Somit sind wir entsprechend vorbereitet, die gewünschten Verzeichnisse zu sichern. Wir wollen nun das Verzeichnis des Webservers /phpmyadmin absichern. Dieses liegt auf der Slug Beispielsweise unter /webserver/phpmyadmin . Legt nun eine Datei .htaccess mittels vi an

vi /webserver/phpmyadmin/.htaccess

und füllt diese mit folgenden Zeilen:


AuthType Basic
AuthName Phpmyadmin
AuthUserFile /webserver/phpmyadmin/.htpasswd
require valid-user

Hinter "AuthName" könnt Ihr eine beliebige Bezeichnung setzen. Diese wird dann nur eben später am Eingabefenster des Browsers angezeigt, wenn nach dem Passwort gefragt wird. Man kann natürlich noch einige Erweiterungen in die htaccess mit aufnehmen. Hierzu bietet sich ein sehr schönes Onlinekonfigurationsprogramm an, das Ihr unter folgender URL [4] abrufen könnt. Allerdings sollte unsere Konfig für das Erste genügen.

Dann legen wir die Passwortdatei .htpasswd an. Dazu liefert uns der Apache ein Tool, das uns auch die Passwörter entsprechend verschlüsselt.


htpasswd -C .htpasswd username


Gebt nun das Passwort ein. Einen weiteren User legt Ihr mit


htpasswd .htpasswd neueruser


an. Macht auch diese Datei lesbar:


chmod 644 .htpasswd


Sollte der Aufruf htpasswd nicht funktionieren, so habt Ihr in der etc/profile den entsprechenden Suchpfad nicht eingetragen. Ihr könnt Euch auch kurzfristig damit behelfen:


 export PATH=$PATH:/opt/sbin:.


Ansonsten solltet Ihr eh folgende Zeilen in die /etc/profiles aufnehmen:


export PATH=$PATH:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:.
export LD_LIBRARY_PATH=/opt/lib


Es funktionieren dann auch komplexere Anwendungen, wie z.B. das bekannte phpbb-Forum ( Download hier: http://www.phpbb.com/ ) Hinweise zur Installation entnehmt bitte der beiliegenden Dokumentation.
Testinstallation:



Zeitgesteuerte Events - Die Crontab

Ihr könnt natürlich wie unter jedem Linux-System zweitgesteuerte Events, wie z.B. Sicherungen über die Crontab steuern. Im Internet findet Ihr eine Vielzahl an Seiten, die den genauen Aufbau der Crontab beschreiben. Da wir einen Webserver haben und mit einer Datenbank arbeiten, macht es Sinn, die Datenbank regelmäßig auf ein extra Verzeichnis zu speichern. Wir gehen in unserem Beispiel davon aus, dass wir die Datenbank "beispiel" alle 30 Minuten speichern wollen.

Zuerst legen wir ein Script an, das unsere Datenabank wegsichert. Idealerweise habt Ihr einen weiteren user (z.B. test) angelegt, auf den Ihr ftp-Zugriff habt. In dessen Verzeichnis werden wir die Datenbank "dumpen".

Die Datei legen wir wieder mit dem guten alten vi an:

vi /usr/sbin/sqldump.sh

Der Code sieht im Groben wie folgt aus:


#!/bin/sh
/opt/bin/mysqldump --password=(passwort) datenbankname > /zielverzeichnis/datenbankname.sql 
--default-character-set=utf8

(bitte die /opt/bin ... in eine Zeile schreiben)

In unserem Beispiel also:


#!/bin/sh
/opt/bin/mysqldump --password=(passwort) beispiel > /test/beispiel.sql --default-character-set=utf8


Als Passwort (dann ohne die Klammern!!!) gebt Ihr Euer admin-Passwort ein, das Ihr bei der mysql-Installation festgelegt habt.

Speichert die Datei ab. Jetzt müssen wir die Datei noch ausführbar machen. Das funktioniert über ein lockeres

chmod +x /usr/sbin/sqldump.sh

Testet das Script einfach, indem Ihr das Datenbank-Dumping per Hand startet:

/usr/sbin/sqldump.sh

Nun editieren wir die Crontab. Das machen wir alte Linux-Hasen wieder über den vi:

vi /etc/crontab

fügt ans Ende der Datei folgende Zeile ein:

*/30 * * * * root /usr/sbin/sqldump.sh &>/dev/null

Die Crontab sollte nun ungefähr so aussehen:


SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
0 0-23/8 * * * root /usr/sbin/CheckDiskFull &>/dev/null
0 0 * * * root /usr/sbin/WatchDog &>/dev/null
1 * * * * root /usr/sbin/hwclock -s &>/dev/null
*/30 * * * * root /usr/sbin/sqldump.sh &>/dev/null


Speichert Euere Änderungen ab. Danach startet die Slug neu, damit die Crontab auch wieder neu eingelesen wird:

sync
reboot

Prüft dann bei Gelegenheit nach, ob Ihr tatsächlich immer neue Sicherungen in Euer Sicherungsverzeichnis "gedumpt" bekommt.


Prozessverwaltung mit htop

Unter Linux kennen wir alle das fast schon überlebensnotwendige top , das uns aktuelle Prozesse anzeigt und uns ermöglicht, auch einen unerwünschten Prozess zu "killen", wie es in der Linuxwelt so lautmalerisch tatsächlich heißt.

Für die Slug gibt es ein ähnliches Programm, das sogar einwenig komfortabler gestaltet ist: htop.

Installiert htop einfach mit einem


ipkg install htop


Legt dann noch eine Verknüpfung zu diesem Tool an:


ln -s /opt/bin/htop /bin/htop


Danach könnt Ihr das Programm ganz bequem mit


htop


starten. Ihr solltet dann folgendes Bild zu sehen bekommen:


Interessant hierbei ist noch die Darstellung der CPU Auslastung und der Speicherbelegung. Man sieht damit alles sehr schön auf einen Blick.


Die Secure-Shell

Wer nicht ständig über das doch ungeschützte telnet auf seine Box zugreifen möchte, kann dies auch über die Secure-Shell (ssh) erledigen. Dazu installiert diese einfach mit einem


ipkg install openssh


Der Vorteil hierbei ist, dass nicht jedes Mal der Telnet aktiviert werden muss und die Angelegenheit entsprechend verschlüsselt über den Äther geht.


Mehrere Konsolen mit Screen

Das kleine Programm Gnu Screen [5] ermöglicht den User auf einer Konsole mehrere Screens, also Konsolen zu aktivieren, zwischen denen man bequem umschalten kann. So kann beispielsweise eine Log-Datei mit tail oder der htop mitlaufen, während man am nächsten Screen weitere Arbeiten tätigt.

Installiert wird Screen einfach durch ein


ipkg install screen


Das Programm wird dann an der Konsole mit einem


/opt/bin/screen


gestartet. Soltet Ihr /opt bin bereits als Suchpfad integriert haben, dann genügt ein


screen


Damit auch im "Screen" die bash verwendet wird, legt in Eurem Home-Verzeichnis des Users, der eben screen starten darf eine Konfigurationsdatei an:


vi .screenrc


Dort ergänzt Ihr die folgende Zeile:

shell bash

Speichert diese und startet screen neu.

Wenn Ihr den Willkommensscreen abstellen wollt, dann schreibt folgende Zeile in die .screenrc:

startup_message off

Folgende Befehle solltet Ihr Euch merken:

Strg+a c Startet eine neue Konsole
Strg+a leer schaltet zwischen den Konsolen um
exit beendet die Konsole (wenn eine Konsole übrig wird screen beendet)
Strg+a d beendet screen, screen läuft aber im Hintergrund weiter
screen -R startet wieder die im Hintergrund noch laufende Screen-Session

Der wesentliche Vorteil von screen ist, dass alle Programme, die Ihr innerhalb der Screen-Session startet, auch dann weiter laufen, wenn Ihr Euch aus der Slug ausloggt. Somit könnt Ihr beispielsweise einen großen Download mittels curl starten, müsst aber nicht den nohup Befehl verwenden, sondern könnt jeder Zeit wieder Euch einloggen und mittels screen -R die Session aufnehmen und beispielsweise den statistischen Output von curl Euch ansehen.


Datum und Uhrzeit einstellen

Dies könnt Ihr als root an der Konsole erledigen. Gebt dazu folgendes ein:


date MONAT|TAG|STUNDE|MINUTE|JAHR


Also wenn es der 4.12.2007 23:24 sein soll, dann muss der Befehl so aussehen:


date 120423242007


Über den Webadmin könnt Ihr dann zusätzlich noch die Uhrzeit für das Webpanel einstellen.