ubuntuusers.deWikiAlix

Alix

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte diesen Artikel testen und das getestet-Tag entsprechend anpassen.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Die ALIX-Boards {en} sind x86 Embedded Systeme, die sich sehr gut für den lüfterlosen und stromsparenden (ca. 4-8 Watt) Betrieb als Router, NAS oder kleiner Server eignen. Aufgrund der unterschiedlichen Varianten {en} dieser Boards ist es möglich, Server selbst für spezielle Aufgaben aufzubauen (Beispiele {en}).

Als Prozessor verwenden alle Boards den AMD Geode LX, als internes Speichermedium wird eine Compact-Flash (CF) Speicherkarte genutzt. Externe Festplatten können via USB angeschlossen werden (Achtung: nicht alle Varianten besitzen USB-Ports!). Allerdings sollte beachtet werden, dass Strom sparen und hohe Leistung sich prinzipiell ausschließen.

ALIX-Boards sind die direkten Nachfolger der WRAP-Boards {de} . Auch fertige Mini-PCs wie der (inzwischen obsolete) fit-PC1 {en} oder der Linutop 2 {en} verwenden diese Boards.

Alternativen für Nichtbastler – und manche Anwendungszwecke – sind fertige Komplettlösungen wie beispielsweise die Linksys NSLU2, die diversen Linkstations der Fa. Buffalo oder die Asus EeeBox, die aber jeweils andere Prozessoren und Chipsätze verwenden.

Hinweis:

Ab Ubuntu 10.10 Maverick Meerkat werden nur noch i686-Prozessoren unterstützt. Dadurch kommen ältere i586-Prozessoren wie Intel Pentium (MMX), AMD K5 und ältere Geode-CPUs für Ubuntu nicht mehr in Frage.

./alix.png
Quelle {de}

Installation

Voraussetzung für die Installation des Betriebssystems auf der CF-Karte ist ein passendes Lesegerät. Dieser Artikel beschreibt die Durchführung der Installation auf der Zielplattform. Die Installation des Zielsystems auf die CF Karte von einem anderen System aus, wird im Unter-Artikel Alix/CF-Bootmedium erstellen beschrieben.

Es bietet sich an, die Server Installation oder die Minimalinstallation zu wählen, da die meisten ALIX-Systeme weder Grafikkarte noch Tastaturkontroller besitzen. Eine Netzwerkinstallation ist via PXE möglich.

Der leichteste Weg, Ubuntu auf der CF-Karte zu installieren, ist das CD-Image auf dem PC zu booten und die Installation mit der CF-Karte als Ziel-Partition durchzuführen [4][5]. Dieser Weg ist bei Varianten mit integrierter Grafikkarte geeigneter.

Als Dateisystem empfiehlt sich generell ext2.

Hinweis:

Viele Probleme bei der Installation entstehen durch die Verwendung eines falschen Kernels: während auf modernen Mehrprozessor-Systemen der ...-generic-Kernel gut geeignet ist, sollte auf ALIX-Boards ein ...-i386-Kernel zum Einsatz kommen.

Serielle Schnittstelle

Um die serielle Konsole zu nutzen, wird ein Nullmodem-Kabel benötigt. Weiterhin muss der verwendete PC eine serielle Schnittstelle haben, um die Daten des ALIX entgegen zu nehmen.

GRUB

Hinweis:

Diese Version von GRUB ist auf Systemen bis Ubuntu 9.04 Jaunty Jackalope üblich. Bei nachfolgenden Versionen wird GRUB 2 eingesetzt. Siehe nächsten Abschnitt.

Der Bootloader GRUB muss für die Ausgabe über die serielle Schnittstelle angepasst werden. Dazu muss die Datei /boot/grub/menu.lst bearbeitet werden [3]. Im allgemeinen Abschnitt trägt man Folgendes ein[6]:

serial --unit=0 --speed=38400
#terminal serial console
terminal serial
# defoptions=verbose console=ttyS0,38400n8 reboot=bios
# kopt=root=UUID=<UUID>

GRUB 2

Ab Ubuntu 9.10 Karmic Koala kommt der Bootloader GRUB 2 zum Einsatz. Der Bootloader muss für die Ausgabe über die serielle Schnittstelle angepasst werden. Dazu muss die Datei /etc/default/grub bearbeitet werden [3]. Die Datei muss folgenden Inhalt aufweisen:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
# Timeout verkürzt
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
# Serielle Schnittstelle hinzugefügt
GRUB_CMDLINE_LINUX_DEFAULT="verbose console=ttyS0,38400n8 reboot=bios"
GRUB_CMDLINE_LINUX=""
# Konfiguration der seriellen Schnittstelle der Alix-Boards:
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=38400"
GRUB_TERMINAL=serial

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

Die eingegebenen Änderungen bewirken, dass GRUB2 seine Ein- und Ausgaben über die serielle Schnittstelle entgegen nimmt und ansonsten alle Pausen recht kurz ausfallen. Die Änderungen werden durch Eingabe des Befehls sudo update-grub wirksam.

Konsole bis Ubuntu 9.04

Damit die serielle Schnittstelle auch noch nach dem Bootloader benutzt wird, muss folgende Zeile in die /etc/inittab eingefügt werden [3]:

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

Nun schreibt man die /boot/grub/menu.lst und die initrd neu:

sudo update-grub
update-initramfs -u 

Konsole ab Ubuntu 9.10

Damit die serielle Schnittstelle auch noch nach dem Bootloader benutzt wird, muss die Datei /etc/init/ttyS0.conf ins Event-Handler-Verzeichnis von Upstart mit folgendem Inhalt erzeugt werden:

# ttyS0 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 -L ttyS0

Serielle Konsole

putty.png

Um mit dem ALIX über die serielle Konsole zu kommunizieren, kann eines der folgenden Programme verwendet werden.

PuTTY

PuTTY verfügt über eine grafische Oberfläche und kann über das Menü gestartet werden. Alternativ kann man PuTTY auch direkt mit den richtigen Einstellungen starten:

putty -serial /dev/ttyS0 -sercfg 38400,8,n,1,X 

screen

Wenn man lieber mit der Konsole arbeitet oder gerade kein X-Server läuft, kann man das Programm screen verwenden. Eine Beschreibung dieses Programms würde den Rahmen des Artikels sprengen, daher wird hier auf den Artikel Screen verwiesen.

Der Befehl für das Verbinden mit einer seriellen Konsole lautet:

screen /dev/ttyS0 38400 

In Notfällen helfen diese beiden Tastenkombinationen weiter:

  • Hilfe: Strg + A, ?

  • Beenden: Strg + A, K (Großbuchstabe!)

Minicom

Minicom ist ein weiteres Terminalprogramm für die Konsole, das allerdings nicht immer wie gewünscht funktioniert. Um das Programm zu verwenden, muss das Paket

  • minicom

Wiki/Vorlagen/Installbutton/button.png

installiert werden [1]. Minicom wird nun mittels

sudo minicom -s 

auf dem PC eingerichtet [2]. Hier stellt man Folgendes ein:

Einstellungen zum seriellen Anschluss
 --> A - Serieller Anschluss      : /dev/ttyS0
 --> E - Bps/Par/Bits             : 38400 8N1

Jetzt werden die Einstellungen als Standardvorgabe (Default) gespeichert:

Speichern als »dfl

Netzwerk

Bei den ALIX-Boards mit mehreren Netzwerkschnittstellen gibt es das Problem, dass diese nach jedem Neustart eine andere Bezeichnung erhalten. So kann es passieren, dass die Schnittstelle, die vorher den Namen eth0 hatte, nun die Bezeichnung eth1 erhält. Dies ist besonders wichtig, wenn die CF-Karte an einem PC installiert wurde. Um das Problem zu lösen, legt man eine neue udev-Regel an [7]. Hierfür erstellt man die Datei /etc/udev/rules.d/z24_own-net-rules.rules mit Root-Rechten.

In dieser Datei wird festgelegt, welche Bezeichnung für eine Netzwerkkarte verwendet wird. Dabei wird anhand der MAC-Adresse unterschieden. Die MAC-Adresse (Hardware Adresse) bekommt man wie folgt heraus:

ifconfig -a 

Folgenden Inhalt sollte die Datei dann beispielsweise haben:

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0d:b9:14:11:20", NAME="eth0"
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0d:b9:14:11:21", NAME="eth1"
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0d:b9:14:11:22", NAME="eth2"

LEDs ansteuern

ALIX 2 und 3 Boards verfügen in der Regel über eine oder mehrere LEDs zur Signalisierung von internen Zuständen. Diese können über das /sys Dateisystem direkt aus allen Applikationen angesprochen werden unter der Voraussetzung, dass die dafür passenden Module geladen wurden. Da diese sich nicht im Standardumfang des Kernels befinden, müssen diese noch hergestellt werden. Ab Ubuntu 8.10 befinden sich die Quellcodes in den offiziellen Paketquellen, eine Installation ist daher unproblematisch durch Eingabe der folgenden Befehlssequenz zu erreichen[8]:

cd /usr/src
apt-get -y install build-essential
apt-get -y install leds-alix-source
apt-get -y install linux-headers-$(uname -r)
tar -xvjf leds-alix.tar.bz2
cd modules/leds-alix/
make
make install
cd /usr/src
rm -rf /usr/src/modules
apt-get --yes --purge remove linux-headers-$(uname -r)
apt-get --yes --purge remove leds-alix-source
apt-get --yes --purge remove build-essential
apt-get --yes --purge autoremove
apt-get clean 

Da das Paket sich für ältere Ubuntu-Versionen nicht in den offiziellen Paketquellen befindet, dieses aber relativ unabhängig von der Kernelversion entwickelt ist, kann man z.B. auf Ubuntu 8.04 den Quellcode über http://packages.ubuntu.com/leds-alix-source {en} beziehen und die Module folgendermaßen kompilieren[8]:

sudo su
pushd /usr/src
wget -c http://de.archive.ubuntu.com/ubuntu/pool/universe/l/leds-alix/leds-alix-source_0.0.1-1_all.deb
apt-get -y install build-essential
apt-get -y install debhelper module-assistant
apt-get -y install linux-headers-$(uname -r)
dpkg -i leds-alix-source_0.0.1-1_all.deb
tar -xvjf leds-alix.tar.bz2
cd modules/leds-alix/
make
make install
cd /usr/src
rm -rf /usr/src/modules
dpkg --purge leds-alix-source
apt-get --yes --purge remove debhelper module-assistant
apt-get --yes --purge remove linux-headers-$(uname -r)
apt-get --yes --purge remove build-essential
apt-get --yes --purge autoremove
popd
exit 

Diese Befehlssequenz installiert einen große Menge Software, die in erster Linie dafür nötig ist, Module aus den Quelltexten zu kompilieren. Diese wird aber auch nach Erstellung der Module wieder vollständig vom System deinstalliert, so dass kein Speicherplatz auf dem Zielsystem verschwendet wird.

Damit alle möglichen Schalt- und Blink-Sequenzen mit den LEDs möglich sind, sollten zusätzlich zum Treiber-Kernel-Modul noch die Module für allgemeine LED-Aufgaben geladen werden:

sudo modprobe leds-alix
sudo modprobe ledtrig-default-on
sudo modprobe ledtrig-heartbeat
sudo modprobe ledtrig-gpio
sudo modprobe ledtrig-timer 

Die Kernelmodule können zusätzlich in die Datei /etc/modules eingetragen werden, damit sie bei jedem Systemstart automatisch mit geladen werden. Nachdem die Module geladen wurden, gibt es im Verzeichnis /sys/class/leds/ drei neue Unterverzeichnisse. LEDs können nun manuell durch folgende Befehle beeinflusst werden:

LED1 einschalten:

sudo echo 1 > /sys/class/leds/alix\:1/brightness 

LED1 ausschalten:

sudo echo 0 > /sys/class/leds/alix\:1/brightness 

LED1 als Systemauslastungsanzeige - je mehr Systemauslastung, je schneller schlägt das Herz:

sudo echo heartbeat > /sys/class/leds/alix\:1/trigger 

LED1 als Platten-Aktivitätsanzeige:

sudo echo ide-disk > /sys/class/leds/alix\:1/trigger 

LED1 mit zeitgesteuertes Blinken - 1 Sekunde an, 5 Sekunden aus:

sudo echo timer > /sys/class/leds/alix\:3/trigger
sudo echo 1000  > /sys/class/leds/alix\:3/delay_on
sudo echo 5000  > /sys/class/leds/alix\:3/delay_off 

Um die anderen beide LEDs zu schalten, wird die 1 in alix\:1 durch 2 bzw. 3 ersetzt. Quelle: ALIX LEDs {de}

Probleme und Lösungen

Speziell bei den Varianten mit Award BIOS (ALIX3C3, ALIX3D3) sollte kontrolliert werden, ob ein BIOS Update verfügbar ist.

Falls beim Einbinden des Dateisystem die Fehlermeldung auftritt, dass der letzte Mount-Zeitpunkt in der Zukunft liegt, kann es daran liegen, dass keine RTC-Batterie vorhanden ist (z.B. ALIX2D2). Für dieses Problem existieren (mindestens) zwei mögliche Lösungen:

Zum einen lassen sich mittels tune2fs alle zeitbasierten Checks ausschalten:

sudo tune2fs -i 0 <device> 

Zum anderen kann e2fsck mit einem Konfigurationsfile unter /etc/e2fsck so konfiguriert werden, dass zeitbasierte Checks ignoriert werden. Hierzu ist es jedoch notwendig, dass initramfs diese Datei in die initram integriert. Ansonsten wird die Datei beim Booten nicht gefunden, da das Dateisystem ja noch nicht gemounted ist. Die Konfigurationsdatei muss unter der Sektion [options] die Option broken_system_clock enthalten

[options]
    broken_system_clock = 1

Um die Konfigurationsdatei in das initramfs-Image aufzunehmen benötigt man folgendes ausführbares Skript in /etc/initramfs-tools/hooks/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh
#
# Initramfs-tools hook script
#
# Copyright 2006 Tim Dijstra <tim@famdijkstra.org>
# Released under GPLv2

PREREQ=""

prereqs()
{
   echo "$PREREQ"
}

case $1 in
prereqs)
   prereqs
   exit 0
   ;;
esac

. /usr/share/initramfs-tools/hook-functions
[ -f /etc/e2fsck.conf ] && mkdir -p ${DESTDIR}/etc && cp /etc/e2fsck.conf ${DESTDIR}/etc/e2fsck.conf

Mittels des update-initramfs-Befehls wird das bestehenden initramfs-Image aktualisiert:

sudo update-initramfs -u 

Diese Revision wurde am 21. Juni 2011 um 07:45 Uhr von leo.moll erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Hardware, Netzwerk, Server, Router, ungetestet

Passwort vergessen?