NSLU2 SlugOS5.3 einrichten

Allgemeine Infos

Die NSLU2 ist ein sehr preiswertes embedded Linux System, für das eine große Entwicklergemeinde http://www.nslu2-linux.org Software erstellt. Der Hersteller Linksys weist darauf hin, dass die Herstellergewährleistung erlischt, wenn die NSLU2 in ihrer Firmware modifiziert wird. Darüber sollte man sich im Klaren sein, wenn man SlugOS5.3 installiert. Bei einer Hardware-Investition von gut 70 Euro ein sicher für die meisten zu akzeptables Risiko, aber man sollte es zumindest wissen. Solange die NSLU2 mit modifizierter SlugOS Firmware läuft, kann man diese in der Regel auch wieder in den Originalzustand zurückversetzen. Weitere Info darüber findet sich hier: http://www.nslu2-linux.org/wiki/HowTo/RevertToLinksysFirmware . Währen man für die SlugOS Version 4.8 sehr viel gut abgestimmte Software bekam, ist die neuere Version 5.3 noch nicht ganz rund, und man muss an manchen Ecken noch manuell nachbessern. Dafür hoffe ich, dass die SlugOS Version länger gepflegt wird, und mir die NSLU2 box länger erhalten bleibt.

Wenn man wissen will, welche dynamischen Libraries eingebunden werden:

root$ ldconfig -v

Damit auch die dynamischen Libraries aus /opt/lib eingebunden werden:

new File /etc/ld.so.conf: /opt/lib
wird benutzt in /etc/rcS.d/S55bootmisc.sh zum aufrufen von /sbin/ldconfig und erzeugt /var/run/ls.so.cache

Die Logfiles werden, damit der USB Flash-Speicher nicht beansprucht wird, in einer RAM-Disk gespeichert, und rolliert. Ausgelesen wird der Logfile mit:

logread
der Prozess heisst: "logger" und wird parametriert in /etc/syslog.conf

Meldung Using fallback suid method von /etc/busybox.
Wenn Script /home/rudi/heizung/webcam3.sh vom Terminal (PUTTY) aufgerufen wird, erscheint beim Ablauf auf der Kommando Zeile im 30 Sekunden Takt zehn mal die Meldung "Using fallback suid method". Wenn webcam3.sh per Kaltstart Script /etc/init.d/heizung.sh aufgerufen wird, fällt das nicht auf. Um diese Meldung wegzubekommen, wird empfohlen http://old.nabble.com/Using-fallback-suid-method-td23891976.html eine leere Datei /etc/busybox.conf zu erstellen. Zusätzlich muss aber noch das Setuid-Bit 04xxx bei /bin/busybox gesetzt werden, wie die Praxis zeigt. Nur ein Ändern der Gruppe auf dialout aller beteiligten Programme hat nicht geholfen.
Es gibt aber auch eine Hilfe dazu: http://www.softforge.de/bb/suid.html

root$ touch /etc/busybox.conf
root$ chown root:root /etc/busybox.conf
root$ chmod 0600 /etc/busybox.conf
root$ chmod 4755 /bin/busybox

Datum und Uhrzeit einstellen

Das macht man als root oder sudo in der Konsole (PUTTY) mit:

root$ date MMDDhhmmYYYY  # M=Monat, D=Tag, h=Stunde, m=Minute, Y=Jahr

Also wenn es der 10.2.2010 19:13 sein soll, dann muss der Befehl so aussehen:

date 021019132010

Langfristig ist es besser die Uhrzeit über das Internet zu stellen, mit ntpclient #ntpclient.

LED's

LED's Disk 1 and Disk2 funktionieren nicht mehr unter SlugOS. Zur Benutzung der LED's siehe http://www.annuit-coeptis.net/artikel/nslu2/debian . Damit die Status-LEDs am Gehäuse wieder sinnvoll funktionieren, ist wie folgt vorzugehen:

mknod /dev/leds c 126 0
chmod 660 /dev/leds

Jetzt kann schon einmal mit dem Tool versucht werden, die LEDs anzusteuern:

leds <colour> <diskled>

<colour> (Farbe der Status-LED)
g ... green
r ... red
gr .. amber

<diskled> (Disk-LEDs, nur "an" oder "aus")
1 ... disk 1
2 ... disk 2
A ... all (ready/status, disk1, disk2)

wobei bei einem Aufruf die LEDs und Farben getrennt durch ein Leerzeichen mit führendem + (an) oder - (aus) angegeben werden.

Beispiele:

# Initialisierung: ready/status auf grün, alle Anderen aus:
leds
# disk 1 an:
leds +1
# alle LEDs ausschalten:
leds -gr -1 -2
# ready/status rot:
leds +r
# die Status-LED von rot auf grün wechseln lassen:
leds -r +g

Hinweis: nur die Ready/Status-LED scheint 3-farbig zu sein, Orange erhält man durch Angabe von grün und rot (-gr). Im Hinweistext von leds (erscheint bei Eingabe einer ungültigen Option) wird der Schalter 0 erwähnt, was aber offensichtlich ein Fehler zu sein scheint … Die Power-LED scheint sich nicht beeinflussen zu lassen …

Damit das ganze Farbenspiel beim Bootvorgang funktioniert, sind die init-Skripte aus /initrd/etc/init.d/ zu kopieren:

cp /initrd/etc/init.d/zleds /initrd/etc/init.d/leds_startup /etc/init.d/

Mit den beiden folgenden Kommandos werden die Links für die einzelnen Runlevel erstellt:

update-rc.d zleds defaults 99 05
update-rc.d leds_startup defaults 01 

Massen-Speicher

Als Massenspeicher dient ein 1 GB oder größerer USB-Stick.

USB Stick partionieren:
USB Stick aufstecken (1 GB)
mit "df" auf "mounts" kontrollieren.
alle gemounteten Partitionen (z.B. /media/sda1) mit "umount" aushängen.
fdisk /dev/sda
evtl. vorhandenen Partitionen löschen.
3 primäre Partitionen neu anlegen.
Partition 1: root file system 512 MB, ext3
Partition 2: swap 128 MB
Partition 3: /home, ext3
$ mkfs.ext3 /dev/sda1          # format the flash stick
$ mkfs.ext3 /dev/sda3          # format the flash stick

So soll es aussehen zum Schluss:

root@LKG649492:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                  489992    186326    278366  41% /
/dev/root                 6400      5676       724  89% /initrd
/dev/sda1               489992    186326    278366  41% /
/dev/sda1               489992    186326    278366  41% /dev/.static/dev
udev                      2048        48      2000   3% /dev
/dev/sda3               334449      8256    308924   3% /media/sda3
tmpfs                    15120        48     15072   1% /var/volatile
tmpfs                    15120         0     15120   0% /dev/shm

RAM-Speicher

Mit 32 MB ist der RAM Speicher der NSLU2 box für ein Linux System nicht gerade reichlich bestückt. Also muss man sparsam damit umgehen.

SWAP Partition/File

!SlugOS braucht SWAP Platz - selbst wenn es ihn nie benutzt. Das klingt merkwürdig, und man findet auch gegensätzliche Meinungen. Aber es ist Fakt, dass aktuelle Linux Kernel Änderungen den "kernel's Out-Of-Memory killer" aggressiver gemacht haben, was bedeutet, dass beim starten eines neuen Prozesses, z.B. opkg, ein anderer Prozess dafür gekillt werden kann (moin web server). Dazu gibt es auch keine Fehlermeldung. Das kann man vermeiden, wenn man SWAP Platz einrichtet. Siehe auch: http://www.nslu2-linux.org/wiki/SlugOS/InstallandTurnupABasicSlugOSSystem (Adding a Swapfile).

Der einfachste und effektivste Weg dazu ist eine SWAP Partition (128 MB), siehe #Massenspeicher. Ein SWAP-File ist auch möglich, aber komplizierter zum einrichten. Anzeige der Partitionen:

root@LKG649492:~# fdisk -l /dev/sda
Disk /dev/sda: 1014 MB, 1014497280 bytes
255 heads, 63 sectors/track, 123 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks  Id System
/dev/sda1               1          63      506016  83 Linux
/dev/sda2              64          80      136552+ 82 Linux swap
/dev/sda3              81         123      345397+ 83 Linux

Formatieren der SWAP Partition, starten und prüfen:

root@LKG649492:~# mkswap /dev/sda2
Setting up swapspace version 1, size = 139825664 bytes
root@LKG649492:~# swapon /dev/sda2
root@LKG649492:~# free
              total         used         free       shared      buffers
  Mem:        30240        20120        10120            0         1132
 Swap:       136544            0       136544
Total:       166784        20120       146664

Auch nach einem Reboot steht die SWAP Partition zur Verfügung. Dafür sorgt der Script /etc/init.d/fixfstab.

Turnup, kopieren und umschalten auf USB-Stick, nach SlugOS5.3 Installation

Zuerst fängt man an mit: http://www.nslu2-linux.org/wiki/SlugOS/InstallandTurnupABasicSlugOSSystem .
Nachdem das neue Minimum-Betriebssystem SlugOS5.3 im internen Flash-ROM installiert ist, soll es auf einen USB-Stick kopiert und eingerichtet werden.

Es gibt zwei wichtige Varianten zu unterscheiden: "turnup disk" und "turnup memstick". Die erste Option ist für die Verwendung mit Festplatten vorgesehen. Es nähert sich am ehesten an eine Standard-Desktop-Linux-Umgebung. Die zweite Variante ist bestimmt für Flash-Memory-Sticks, und opfert ein paar selten verwendete Linux-Funktionen, um die Anzahl der Schreibzugriffe auf den externen USB-Memory-Stick zu minimieren.

Die "-i"-Option zum turnup Befehl wird verwendet, um turnup zu sagen, alles zu kopieren was das Zielgerät gebraucht wird - wir brauchen das, weil der Memory Stick noch leer ist.

Es gibt einige andere Optionen, die aber selten gebraucht werden. Die einzige, die Ihnen nützlich wäre die "-s"-Option, die SlugOS, wie lange auf der Festplatte oder Speicher-Wait-Stick zu werden beim Booten bereit erklärt - einige sehr langsamen Festplatten können mehr als die Standard erfordern 10 Sekunden finden können Das gibt ihnen SlugOS.

In unserem Fall sind, machen wir einen Standard turnup Betrieb mit einem externen USB-Memory-Stick:

There are two major variants we need to consider: "turnup disk" and "turnup memstick". The first option is intended for use with hard disk drives. It most closely approximates a standard desktop Linux environment. The second variant is intended for flash-memory sticks, and sacrifices a few seldom-used Linux features in order to minimize the number of write operations performed to the external USB memory stick.

The "-i" option to the turnup command is used to tell turnup to copy everything it needs in order to make the target device suitable for use -- we need that because there's nothing on the memory stick yet.

There are some other options, but we're not likely to need them. The only one that you may find useful would be the "-s" option, which tells SlugOS how long to wait for the disk or memory stick to become ready at boot time -- some very slow disks may require more than the default 10 seconds that SlugOS gives them.

In our case, we're doing a standard turnup operation to an external USB memory stick:

Uhrzeit per Internet stellen - ntpclient

Je länger nun die NSLU2 box läuft, desto weiter wird auf dem Gerät die lokale Zeit von der Normal-Zeit abweichen. Das kann man automatisch korrigieren. Hierzu wird ein NTP Client eingerichtet, der von einem Zeitserver im Internet die aktuelle und genaue Zeit mit der NSLU2 box synchronisiert. Es gibt in der Optware auch noch einen NTP Server (ntpd, Daemon), der wird hier nicht gebraucht. Installiere zuerst die Software, wobei zum Glück das automatische Starten der Software beim Kaltstart bereits integriert ist, im Script /usr/lib/opkg/info/ntpclient.postinst.

root@LKG649492:~# opkg install ntpclient
Installing ntpclient (2007_365-r2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/unstable/ntpclient_2007_365-r2_armv5teb.ipk
Configuring ntpclient
 Adding system startup for /etc/init.d/ntpclient.
Starting NTP Client.
update-alternatives: Linking //sbin/adjtimex to adjtimex.ntpclient

root@LKG649492:~# opkg install ntp-utils
Installing ntp-utils (4.2.4p7-r1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/unstable/ntp-utils_4.2.4p7-r1_armv5teb.ipk
ntp-utils: unsatisfied recommendation for iana-etc
Configuring ntp-utils

root@LKG649492:~# opkg install ntp-tickadj
Installing ntp-tickadj (4.2.4p7-r1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/unstable/ntp-tickadj_4.2.4p7-r1_armv5teb.ipk
ntp-tickadj: unsatisfied recommendation for iana-etc
Configuring ntp-tickadj

Um zu sehen, was an Aktionen installiert wurde, siehe:

root$ ps
29775 root      1800 S    /sbin/ntpclient -l -i 600 -h pool.ntp.org
root@LKG649492:~# ls -ls /etc/init.d/ntp*
2 -rwxr-xr-x  1 root root 1208 Nov 29 21:31 /etc/init.d/ntpclient
root@LKG649492:~# ls -ls /etc/rc2.d/*ntp*
0 lrwxrwxrwx  1 root root 19 Feb 10 19:46 /etc/rc2.d/S65ntpclient -> ../init.d/ntpclient

WebCam Fehlersuche

Die Software Anpassung für eine USB-WebCam wird an anderer Stelle beschrieben, das wird sonst zu lange hier. Aber es gibt noch kleine Probleme, die man beheben muss. Wenn beim Aufruf von uvccapture ein Fehler gemeldet wird, prüft man die Rechte:

root$ logread
Feb 11 10:23:01 (none) user.notice rudi: ERROR opening V4L interface
Feb 11 10:23:01 (none) user.notice rudi: : Permission denied
root@LKG649492:~# ls -ls /usr/bin/uvccapture
26 -rwxr-xr-x  1 root root 24922 Mar  9  2009 /usr/bin/uvccapture

Das Programm uvccapture muss aber in die Gruppe video um zu funktionieren, ebenso der user rudi. Also:

root@LKG649492:~# chown root:video /usr/bin/uvccapture

Mit dem Editor add rudi to /etc/group -> "video:*:44:rudi" und Neustart!

Änderungen an dem File /etc/group werden leider erst nach einem Neustart wirksam.

-- RudolfReuter 2010-02-10 19:23:22

Liste der Seiten in dieser Category:


Go Back to CategoryNslu2 or StartSeite ; KontaktEmail (ContactEmail)

NSLU2SlugOS5 (last edited 2011-03-23 09:00:00 by dslb-084-058-142-238)