Debian auf ALIX2 boards

Diese Seite ist eine kleine Zusammenstellung an Informationation rund um den Betrieb von Debian auf Alix2 Boards. Bei den Alix Boards handelt es sich um x86 embedded Systeme mit AMD Geode LX CPU von dem Schweizer Hersteller PC engines. Mein Alix2.C3 waehrend des Setups

Ich habe ein Alix2C3 mit zwei externen USB Platten angeschaft um einen alten PII als lokalen Server und Router abzuloesen. Die Leistungsfaehigkeit reicht bei weitem aus. Einzig die Performance bei verschluesselten Verbindungen (ftps/sftp) laest etwas zu wuenschen uebrig. Fuer mich ist das allerdings zu verkraften da unverschluesseltes NFS im LAN schnell genug ist.

Handbuch: http://www.pcengines.ch/pdf/alix2.pdf

Installation

Grundsaetzliches

Debian-Installer und die Fallstrike

Eigentlich laueft alles out of the box. Es empfiehlt sich trotzdem im experten Modus zu installieren um entsprechend eingreifen zu koennen falls noetig. Standard maessig wird man grub wegen aktivierter Farbdarstellung und dem Fehlen der Einstellungen fuer die Serielle Schnittstelle nicht zu Gesicht bekommen. Auch den boot selber wird man nicht verfolgen koennen. Daher empfehlen sich folgende Aenderungen empfehlen ueber die Shell in /target/boot/grub/menu.lst vor zu nehmen:

# 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 Options persistent zu machen ist es noch noetig die defaultoptions entsprechend zu editieren. Da dies ein Macro fuer update-grub 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 und ueberpruefen ob alles entsprechend eingetragen wurde.

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

Eine wenig clevere Idee

Mein urspruenglicher Plan war es auch /var auf dem softraid1 ueber die beiden externen USB Platten zu platzieren. Dies stellte sich aber schnell als ziemlich bloede Idee herraus da sowohl die USB wie auch md Module einige Zeit zur Initialisierung benoetigen. Da so die Verfuegbarkeit von /var um einige Zeit verzoegert wird sind die Systemstarts nur selten erfolgreich. Fuer einen garantierten Betrieb und ein blind bootbares System kann ich davon nur abraten.

Als Zwischenloesung habe ich nur den I/O intensiven squid cache auf das raid1 umgelegt. So kann das System sicher booten und es finden trotzdem nur relativ wenige Schreiboperationen auf der CF Karte die als Festplatte fungiert statt.

Fuer den laufenden Betrieb

Nachfolgend noch einige Hinweise fuer den laufenden Betrieb die sich als hilfreich erwiesen haben.

Wer hat an der Uhr gedreht

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.)

lm_sensors

Damit alle Sensoren korrekt angesprochen werden koennen sind folgende Module ueber die /etc/modules mit 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-rdd.

MRTG-rrd on my Alix
Meine mrtg.cfg und die dazu gehoerigen scripte gibt es hier zum Download.

Treiber fuer die LEDs an der Frontseite

In testing und unstable ist das source Paket leds-alix-source verfuegbar. Dies sollte sich mittels m-a auch unter etch bauen lassen. Da mir allerdings noch keine sinnvolle Verwendung fuer die LEDs eingefallen ist habe ich dies bisher nicht probiert.

Der 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.