Debian auf ALIX2 boards

Es handelt sich hierbei um x86 Systeme mit AMD Geode LX CPU des Schweizer Herstellers PC engines. Meine Erfahrungen beziehen sich auf ein Alix2C3 Board. Informationen mit direktem Bezug zur Installation, beziehen sich auf die Debian releases Etch und Lenny. Eine entsprechende Uebertragung auf Squeeze sollte aber ohne Probleme moeglich sein. Fuer Debian/Squeeze sind entsprechende Informationen zum Upgrade auf grub2 eingepflegt. Gravierende Probleme sind mir weder bekannt noch zu erwarten.

Mein Alix2.C3 waehrend des Setups

Installation - Etch/Lenny

Grundsaetzlich funktioniert der debian-installer wie gewohnt. grub wird wegen aktivierter Farbdarstellung und der fehlenden Einstellungen fuer die Serielle Schnittstelle erst einmal nicht sichtbar sein. Daher ist fuer einen ersten Start ein wenig Geduld noetig. Es empfiehlt sich folgende Aenderungen ueber die Shell in /target/boot/grub/menu.lst vorzunehmen:

# Pretty colours won't work
#color cyan/blue white/blue

(deaktivieren der Farbdarstellung)

Weiter sollte console=ttyS0,38400n8 fb=false als Kernelparameter mit uebergeben werden. Bsp.:

kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 ro console=ttyS0,38400n8 fb=false

Um diese Informationen fuer die Kernel-Optionen persistent zu machen ist es noch noetig die defaultoptions entsprechend zu editieren. Da dies ein Macro fuer update-grub ist, ist die fuehrende # bei zu behalten und das ganze muss an der Stelle editiert werden wo es von update-grub angelegt wurde. Doppelte werden ueberschrieben und wenn spaeter ein leerer Eintrag kommt wird nichts eingetragen usw.

# defoptions=console=ttyS0,38400n8 fb=false

Um diese Einstellungen auch fuer die automatisch generierten Single User Eintraege zu uebernehmen ist noch folgendes entsprechend zu editieren:

# altoptions=(single-user mode) single console=ttyS0,38400n8 fb=false

Im Anschluss update-grub ausfuehren.

Die Einstellungen fuer die Verwendung der Konsole selber sollte der debian-installer automatisch einfuegen. Zur Kontrolle:

serial --unit=0 --speed=38400
terminal serial

Die /target/etc/inittab sollte folgendes enthalten:

T0:23:respawn:/sbin/getty -L ttyS0 38400

Upgrade auf Squeeze

Mir sind bisher keine Besonderheiten bezueglich Upgrades auf Alix Systemen bekannt. Generell ist es notwendig die aktuelle Version der release notes zu studieren. Im Falle eines gesetzten local-divert auf /bin/sh zur Nutzung von dash als /bin/sh sei insbesondere auf #538822 verwiesen.

Im Hinblick auf den Wechsel zu grub2 sind einzig die Anpassungen fuer die Verwendung der seriellen Schnittstelle zu uebernehmen. Diese sind in der Datei /etc/default/grub vorzunehmen.

GRUB_CMDLINE_LINUX="console=ttyS0,38400n8 fb=false"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=38400"

Abschliessend ist update-grub2 aufzurufen so das die entsprechende Konfiguration generiert wird.
Weitere Informationen zur Konfiguration von grub2 und der seriellen Schnittstelle finden sich zum Beispiel in diesem Wiki Eintrag.

Auslagerung von /var auf USB mass storage

Urspruenglicher Plan war es auch /var auf den USB Platten im Raidverbund zu platzieren. Dies stellte sich als ziemlich ungeschickt herraus da sowohl die USB wie auch md Module einige Zeit zur Initialisierung benoetigen. Die Verfuegbarkeit von /var wird so um einige Zeit verzoegert und die Systemstarts sind nur selten erfolgreich.

Zwei Workarounds erscheinen moeglich (NICHT SELBER GETESTET):

Experimente in diese Richtung stehen noch aus.

Uhr ohne Puffer

Da die Alix Systeme keine Batterie gepufferte Uhr haben verlieren sie mit dem Verlust der Netzspannung auch die Uhrzeit. Es empfiehlt sich daher die Zeitsyncronisation so frueh wie moeglich vorzunehmen um weiteren Probleme mit verschiedenen Diensten zu vermeiden.
Bei mir ist der fruehest moegliche Zeitpunkt die aktuelle Zeit aus einer verlaesslichen Quelle zu bekomme nach dem Start der Internetverbindung. Dem entsprechend habe ich folgende Zeilen mit in die /etc/ppp/if-up hinzugefuegt:

/usr/sbin/ntpdate -u -s pool.ndh.net ntp.netcologne.de time1.rrz.Uni-Koeln.DE && /sbin/hwclock --systohc > /dev/null

Die zu verwendenden Zeitserver solten je nach Standort und Provider angepast werden. ntpdate gilt darueber hinaus als deprecated und sollte bei Gelegenheit durch ein Konstrukt mit ntpd -q ersetzt werden.

lm_sensors

Damit alle Sensoren korrekt angesprochen werden koennen sind folgende Module ueber die /etc/modules zu laden:
i2c_core
lm90
scx200_acb

Alles weitere laest sich normalerweise mit dem Script sensors-detect automatisch einstellen. Eine Abfrage ueber das Tool sensors sieht dann ungefaehr so aus:

sven@arthur:~$ sensors
lm86-i2c-0-4c
Adapter: CS5536 ACB0
M/B Temp: + (low = +, high = +)
CPU Temp: +50. (low = +0., high = +70.)
M/B Crit: + (hyst = +)
CPU Crit: + (hyst = +)7585758500570044

MRTG scripte

Zur Visualisierung von load, CPU Auslastung, der Temperatur und dem Netzwerkdurchsatz verwende ich MRTG mit dem mrtg-rrd.cgi Script aus den Debian Paketen mrtg und mrtg-rrd.

MRTG-rrd on my Alix
Meine mrtg.cfg und scripte im GIT repo.

rrdtool Bug in Debian/Lenny

Ungluecklicherweise existiert ein Bug in der mit Lenny ausgelieferten Version von rrdtool. Dieser Bug fuehrt dazu das unter bestimmten Umstaenden keine Groesseninformationen von RRDs::graph zurueck gegeben werden. Dies wiederum fuehrt in mrtg-rrd dazu das im HTML output 0 als Groesseninformation angegeben wird und die Grafiken nicht sichtbar sind.

Bug im rrdtool Trac: http://oss.oetiker.ch/rrdtool-trac/ticket/163
Bug im Debian BTS: http://bugs.debian.org/484211
Mein workaround: mrtg-rrd-rrdtool-workaround.diff

LED Treiber

Treiber fuer die LEDs sind im Paket leds-alix-source verfuegbar. Dies sollte sich mittels m-a installieren lassen. Mangels Verwendungszweck habe ich dies nicht probiert. Ab Linux 2.6.30 sind diese Treiber upstream in den Linux Kernel aufgenommen worden, d.h. ab Debian/Squeeze (Linux 2.6.32) ist dieses separate Modulpaket obsolet. Identisches gilt fuer Kernel des backports repository. Mittels der ledtrig-* Module lassen sich auch verschiedene Indikatoren nachruesten. Siehe dazu z.B. http://ichbinroot.de/2008/05/alix-leds/.

Geode LX AES Security Block

Fuer die AES crypto Einheit gibt es seit Linux 2.6.19 einen Treiber mit dem Namen geode_aes allerdings keine in OpenSSL integrierte engine um diesen zu nutzen. Unter FreeBSD gibt es eine Moeglichkeit der Nutzung ueber CryptoDev (/dev/crypto) allerdings wurde dieser Ansatz auf der LKML abgelehnt. Der Treiber ist auf der Webseite von Michal Ludvig http://www.logix.cz/michal/devel/cryptodev/ verfuegbar. Habe diesen Ansatz nicht getestet und habe auch keine Erfolgsmeldungen zu Alix und CryptoDev mit aktuellem Kernel gefunden.

Es sieht so aus als gaebe es einen neuen Ansatz cryptodev fuer Linux am leben zu erhalten. Habe dieses Modul selber noch nicht probiert.

Update 2011-07-08:
Mit Linux 2.6.38 (auf backports.debian.org auch fuer Squeeze verfuegbar) scheint es eine neue Schnittstelle zu geben. Siehe OpenSSL - AF_ALG.
(Danke Markus fuer den Hinweis.)

Leistungsaufnahme

Mit einem guenstigen, von einem Kollegen geliehenen Messgeraet (danke dafuer), habe ich folgende Leistungsaufnahme ermittelt:

Mein Asus RT-N16 WLAN Router mit DD-WRT schlaegt dagegen mit 6 - 7.1W zu buche. Allerdings duerfte dort das WLAN mit fuer die hohe Leistungsaufnahme verantwortlich sein.