Archiv/Alix/Optimierte Bottom-Up Installation

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.


Anmerkung: Das benötigte Alix Rescue and PE System 🇬🇧 ist nur noch für Debian verfügbar.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Was ist ein Alix-Board

  2. Installation von Programmen

  3. Root-Rechte erlangen

  4. Grundlagen der Partitionierung

  5. Ein Terminal öffnen

  6. Einen Editor öffnen

Inhaltsverzeichnis
  1. Vorteile einer Bottom-Up Installation
  2. Grundsätzlicher Ablauf
  3. Voraussetzungen
  4. Vorbereitung der CF-Karte
    1. Vorbereitung der Kartenleser basierten I...
    2. Vorbereitung der PXE Installation
    3. Partitionieren der CF-Karte
    4. Anlegen der Dateisysteme
    5. Anlegen der Boot Umgebung
  5. Zwischenstand
    1. Abkürzung
  6. Aufspielen des Basis Betriebssystems
  7. Start des Basis Betriebssystems
  8. Weiterführende Informationen
    1. Aktuelle UIC Templates für Alix Boards
  9. Links

In diesem Artikel geht es um die Erstellung eines angepassten Minimalbetriebssystem für Archiv/Alix-Boards entweder mittels PXE oder einer zuvor präparierten CF-Karte, welches es erlaubt, anschließend das maßgeschneiderte Betriebssystem von Grund auf zu installieren (Bottom-Up).

Hinweis:

Dieser Artikel soll sowohl grundsätzliches Wissen vermitteln als auch praktische Hilfe anbieten. Aus diesem Grunde befinden sich in ihm verschiedene Download Links mit deren Hilfe verschiedene Zwischenergebnisse heruntergeladen werden können, um die beschriebene Prozedur zu beschleunigen.

Vorteile einer Bottom-Up Installation

Entgegen der im Artikel Archiv/Alix vorgestellten Standardinstallation hat eine optimierte Bottom-Up Installation den Vorteil, dass man genau weiß und insbesondere genau steuern kann, was Bestandteil der Installation wird, was beim Design einer Hardware-Appliance von großen Vorteil ist, da die Ressourcen der benutzten Hardware in der Regel recht beschränkt sind. Dabei muss eine solche gar nicht besonders aufwändig sein oder sehr fortgeschrittene Kenntnisse erfordern, da sie sehr wohl mit Hilfe entsprechender Werkzeuge automatisierbar ist. Da die vollständig manuelle Herangehensweise im Artikel ALIX CF-Bootmedium erstellen bereits größtenteils behandelt wurde, wird dieser Artikel auf die automatisierte Variante eingehen.

Grundsätzlicher Ablauf

Voraussetzungen

Um mit der Installation zu beginnen, muss folgendes vorhanden sein:

Für die "PXE Start"-Variante wird des weiteren benötigt:

Für die "Start mit vorbereiteter CF Karte"-Variante wird des weiteren benötigt:

Für die "schnelle Abkürzung" wird des weiteren benötigt:

Sind alle diese Voraussetzungen erfüllt, kann mit der Installation begonnen werden.

Vorbereitung der CF-Karte

Benötigt wird hierfür das Alix Rescue and PE System 🇬🇧, ein Live-System welches für Alix-Boards optimiert wurde, sehr einfach einzusetzen ist, und alle Features bietet, die für diese Anleitung erforderlich sind. alix-rescue ist in seiner aktuellsten Version in 3 Varianten verfügbar: Ubuntu 8.04, Ubuntu 10.04 und Debian squeeze. Hier sollte jene Version geladen werden, die auch für die Installation geplant ist. Das dieses Minimalsystem nur aus 3 Dateien besteht, bietet es sich an, es auch als Notfall-System auf dem Alix-System zu belassen, da es ein Mindestmaß an Funktionalität für den Notfall zur Verfügung stellt.

Hinweis:

Ab Ubuntu 10.10 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. Daher ist es empfehlenswert, eine LTS-Version wie z.B. Ubuntu 10.04 zu installieren, da dieses noch bis 2015 (Serverversion) unterstützt wird.

Wenn auch die PXE-Installation das Herz des Puristen höher schlagen lässt, da jedes Byte welches auf der CF-Karte Installiert wird, vom Alix-System selber darauf geschrieben wird, so sei dem Benutzer doch empfohlen auf die Variante mit vorbereiteter CF-Karte zurückzugreifen da:

  1. Das Aufsetzen einer PXE Boot-Umgebung wenn nicht bereits vorhanden, recht Aufwendig ist und in einem Home-Umfeld mit erheblichen Problemen verbunden ist (z.B.: doppelte DHCP Server wenn der Router selber nicht die Zusatzoptionen im DHCP Server für Network Boot beherrscht)

  2. Das Alix-System mit der vorbereiteten CF-Karte direkt über ssh erreichbar ist, und man sich so den ganzen Aufwand mit der seriellen Schnittstelle und dem seriellen Terminal sparen kann.

  3. Da diese Methode am Ende exakt das gleiche Resultat liefert, wird es also keinen qualitativen Vorteil bringt, die PXE Methode zu verwenden.

Der Vollständigkeit halber, soll diese aber nicht undokumentiert bleiben.

Hinweis:

Für den ganz eiligen Benutzer

Wer diesen Schritt überspringen will, kann direkt zum Abkürzung springen - dort wird ihm eine andere Möglichkeit angeboten, die CF-Karte aus einem der Anleitung entsprechenden fertigen Abbild herzustellen.

Vorbereitung der Kartenleser basierten Installation

Zum weiteren Vorgehen wird auf dem mit CF-Kartenleser ausgestatteten Rechner das Paket syslinux benötigt[2].

Paketliste zum Kopieren:

sudo apt-get install syslinux 

Oder mit apturl die Pakete installieren. Link: apt://syslinux

Hiervon wird insbesondere das Programm extlinux benötigt, welches leider in neueren Ubuntu Versionen herausgetrennt wurde. Es kann zwar theoretisch problemlos nachinstalliert werden, aber leider schießt das dafür geschaffene Installationspaket über das Ziel hinaus, da es nicht nur das fehlende Programm nachinstalliert, sondern versucht den vorhandenen Bootmanager des Rechners mit extlinux zu ersetzen, was sicherlich nicht im Sinne des Benutzers liegt. Sei es noch so wünschenswert, extlinux als vollständigen Bootmanager neben GRUB zu unterstützen, so wird dieser doch meistens eher dafür gebraucht, externe Laufwerke bootfähig zu machen. Es wäre wesentlich sinnvoller gewesen, ihn weiterhin im syslinux-Paket zu belassen und lediglich die Unterstützung als Bootmanager für Ubuntu in einem separaten Paket unter zu bringen.

Sollte sich also der Befehl extlinux nicht aufrufen lassen, so ist die Lösung für das Problem, das Paket lediglich herunter zu laden und die benötigten Komponenten manuell zu extrahieren und an Ihrem Bestimmungsort zu bringen. Hierfür sollte ein temporäres Verzeichnis angelegt werden, in dem dann folgende Befehle ausgeführt werden:

apt-get download extlinux
dpkg-deb -X extlinux_* . 

Hiermit wird der Inhalt des Installationspaketes in dem Verzeichnis ausgepackt, ohne ihn zu installieren. Man hat nun die Möglichkeit entweder die Dateien aus dem temporären Verzeichnis zu nutzen oder diejenigen die tatsächlich Bestandteil von syslinux sind, an ihrem Bestimmungsort zu kopieren wobei bedacht werden muss, dass diese im Zweifel nicht aktualisiert werden was man aber in Kauf nehmen kann, da es nicht um eine sicherheitsrelevante Komponente geht und sie nur ad-hoc genutzt wird:

cp ./usr/bin/extlinux /usr/bin/extlinux
cp ./usr/share/man/man1/extlinux.1.gz /usr/share/man/man1/extlinux.1.gz 

Nach dem Anschließen des Kartenlesers samt CF Karte, wird diese bei Desktop-Systemen in der Regel automatisch eingehängt und auf dem Desktop dargestellt. Um fortzufahren, dürfen keine Partitionen der CF-Karte ins Filesystem eingebunden sein, diese ist also auszuwerfen. Bevor es nun weiter geht, ist es wichtig den Gerätenamen der CF-Karte zu kennen. Mit folgendem Befehl kann man sich einen Überblick über die vorhandenen angeschlossenen Laufwerke machen:

grep . /sys/block/sd*/size | sed -e "s/\/sys\/block/\/dev/g" | sed -e "s/\/size//g" 

Der Befehl listet alle vorhandenen Gerätenamen der Laufwerke und deren Größe in Blöcken (512 byte) auf. Folgende Ausgabe zum Beispiel

/dev/sda:31293360
/dev/sdb:15701759

listet ein 16GB und ein 8GB Laufwerk auf. Damit dürfte es ohne Probleme möglich sein die CF-Karte zu identifizieren. Nachfolgend wird für die CF-Karte der Gerätename /dev/sdX benutzt. Weiter geht es nun mit dem Partitionieren der CF Karte

Vorbereitung der PXE Installation

Da das ALIX-Board über PXE gestartet wird, sind weiterhin die Installation eines DHCP-Servers (falls im Netzwerk nicht vorhanden) und eines TFTP-Servers notwendig. Näheres findet sich im Artikel PXE-Installation. Das Benötigte alix-rescue kann hier heruntergeladen werden.

Da der Inhalt des Live-Rettungssystem Archivs in einem beliebigen Verzeichnis in der PXE Umgebung entpackt werden kann (welches per NFS erreichbar sein muss!), müssen, die Pfade und die IP Adresse des NFS Servers in der mitgelieferten Datei pxelinux.cfg/default entsprechend angepasst werden.

SERIAL		0 38400 0
CONSOLE		0

# YOU HAVE TO ADAPT ALL PATHS AND
# IP ADDRESSES TO YOUR ENVIRONENT

DEFAULT	alix-rescue-1004/axrescue.vmlinuz
APPEND	initrd=alix-rescue-1004/axrescue.initrdn rootdelay=2 root=/dev/nfs nfsroot=169.254.19.65:/mnt/data/tftproot ip=dhcp loop=/yeaboot/alix-rescue-1004/axrescue.squashfs branch=/dev/ram console=ttyS0,38400n8

Damit das ALIX-Board allerdings auch über das Netzwerk bootet, muss diese Fähigkeit im BIOS erst mal aktiviert werden.

Also das Nullmodem-Kabel anschließen und ein Terminal mit den passenden Parametern starten (38400 baud, 8 Datenbits, 1 Stopbit, keine Parität und XON/XOFF flow control). Dies kann z.B. so erfolgen:

sudo cu -e -o -s 38400 -l /dev/ttyUSB0 

wobei der Gerätename /dev/ttyUSB0 gegebenenfalls durch den entsprechenden Gerätenamen der seriellen Schnittstelle zu ersetzen ist (bei eingebauten Schnittstellen kann dieser z.B. /dev/ttyS0 sein). Nun kann man das Gerät unter Strom setzen, und wenn alles richtig angeschlossen ist, wird man auf dem Terminal sehen, wie der Speichertest ausgeführt wird. Um ins Setup zu gelangen, ist noch während des Speichertests ein Druck auf die Taste S erforderlich. Ist dies rechtzeitig gelungen, gelangt man ins Hauptmenü des tinybios:

PC Engines ALIX.2 v0.99h
640 KB Base Memory
261120 KB Extended Memory

01F0 Master 848A TOSHIBA THNCF256MQG                     
Phys C/H/S 978/16/32 Log C/H/S 978/16/32

BIOS setup:

(9) 9600 baud (2) 19200 baud *3* 38400 baud (5) 57600 baud (1) 115200 baud
*C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable
(M) MFGPT workaround
(P) late PCI init
*R* Serial console enable 
(E) PXE boot enable 
(X) Xmodem upload 
(Q) Quit

Mit Druck auf die Taste E aktiviert man den PXE Boot, was beim erneuten Erscheinen des Hauptmenüs dadurch angezeigt wird, dass der Buchstabe E im Hauptmenü nun nicht mehr durch Klammern, sondern durch Sterne gerahmt ist. Sollte die CF-Karte dies unterstützen (was eine moderne Karte sicherlich tun wird), ist die Aktivierung von UDMA sinnvoll, da dadurch die Zugriffe auf der Karte effektiver durchgeführt werden. Durch Druck auf die Taste Q verlässt man das Hauptmenü. Vorher sollte noch das Netzwerkkabel angeschlossen werden, da der Bootvorgang unmittelbar beginnen wird. Die erste Netzwerkschnittstelle (von der der Bootvorgang stattfindet) ist bei Boards mit mehreren Schnittstellen übrigens jene, die direkt neben dem USB Anschluss liegt.

Wenn nun alles korrekt konfiguriert ist, wird das Alix-System das alix-rescue Live-System starten. Da dieses einen ssh Server zur Verfügung stellt, ist eine Anmeldung über SSH empfehlenswert, um die Installation fortzusetzen, da die Eingabemöglichkeiten im seriellen Terminal nicht so komfortabel sind. Die Standard-Anmeldedaten lauten:

Die IP-Adresse kann durch Eingabe des Befehls

ip addr show eth0 

ermittelt werden. Zum weiteren Vorgehen wird nun noch das Paket syslinux benötigt, welches nicht Teil des Live-Systems ist. Dieses kann jedoch komfortabel durch Eingabe folgender Befehle nachinstalliert werden[2]:

apt-get update
apt-get install syslinux 

Die Eingabe von apt-get update ist fundamental, da das Live-System aus Platzgründen keinen Paketindex enthält. Bevor es nun weiter geht, ist es wichtig den Gerätenamen der CF-Karte zu kennen. Dies wird in der Regel /dev/sda sein, sollten aber am USB-Port noch andere Geräte angeschlossen sein, so muss das nicht unbedingt der Fall sein. Können aus welchem Grund auch immer, die USB Geräte nicht entfernt werden, so kann man sich mit folgendem Befehl einen Überblick über die vorhandenen angeschlossenen Laufwerke machen:

grep . /sys/block/sd*/size | sed -e "s/\/sys\/block/\/dev/g" | sed -e "s/\/size//g" 

Der Befehl listet alle vorhandenen Gerätenamen der Laufwerke und deren Größe in Blöcken (512 byte) auf. Folgende Ausgabe zum Beispiel

/dev/sda:31293360
/dev/sdb:15701759

listet ein 16GB und ein 8GB Laufwerk auf. Damit dürfte es ohne Probleme möglich sein die CF-Karte zu identifizieren. Nachfolgend wird für die CF-Karte der Gerätename /dev/sdX benutzt. Weiter geht es nun mit dem Partitionieren der CF Karte

Partitionieren der CF-Karte

Hinweis:

Nahezu alle hier nachfolgend aufgeführten Befehle erfordern Root-Rechte[3]. Um im Falle der Ausführung auf einem Fremdsystem nicht jedem dieser Befehle sudo voranstellen zu müssen, empfiehlt es sich, die Installation in einer Root-Shell auszuführen. Diese kann durch Eingabe des Befehls sudo su erreicht werden.

An diesem Punkt kann das Partitionierungsprogramm aufgerufen werden[4]:

fdisk /dev/sdX 

Im Partitionierungsprogramm werden dann eventuell vorhandene Partitionen gelöscht und eine neue primäre Partition vom Typ 83 (Linux), die mindestens 256MB groß ist, für die Boot Umgebung und eine weitere Partition vom Typ 83 (Linux), die mindestens 1,5 GB groß ist, für das Dateisystem der Haupt-Installation abgelegt. Die Trennung des Bootsystems vom Dateisystem für das laufende Betriebssystem ist dahingehend sinnvoll, weil diese Maßnahme einen Extra-Schutz darstellt. So muss die Boot-Partition z.B. im laufenden Betriebssystem gar nicht oder als nur lesbar eingehangen werden, so dass sie im laufenden Betrieb nicht kompromittiert werden kann. So kann ein dermaßen aufgebautes System sogar das Rettungssystem starten, wenn das Hauptdateisystem vollständig zerstört ist. Die erste Partition muss als bootbar gekennzeichnet werden (Befehl a) was in der Übersicht durch ein Sternchen dargestellt wird. Eine typische Partitionierung einer größeren CF-Karte würde z.B. folgendermaßen aussehen:

Disk /dev/sdX: 16.0 GB, 16022200320 bytes
255 heads, 63 sectors/track, 1947 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdX1   *           1          66      530113+  83  Linux
/dev/sdX2              67         459     3156772+  83  Linux
/dev/sdX3             460         852     3156772+  83  Linux
/dev/sdX4             853        1947     8795587+  83  Linux

Die vier angelegten Partitionen erfüllen in dieser Konfiguration folgende Funktion:

  1. Boot-Parition mit Bootloader, Rettungssystem und Kernels

  2. Hauptdateisystem des Betriebssystems

  3. Hauptdateisystem für das alternative Betriebssystem

  4. Dateisystem für Datenspeicher des Systems

Dieses Schema wird nun weiter in dieser Anleitung verwendet. Sollte der Leser aber die dritte und vierte Partition nicht benötigen, so sind diese einfach wegzulassen und in allen Befehlen in denen sie referenziert wird, zu überspringen.

Anlegen der Dateisysteme

Nun kann die Partitionierung beendet werden, um mit der Erstellung des Dateisystems fortzufahren:

mke2fs -L bootbank /dev/sdX1
mke2fs -L bank1 /dev/sdX2
mke2fs -L bank2 /dev/sdX3
mke2fs -L data /dev/sdX4 

Wie man hier sehen kann, wurden den Volumen Namen gegeben (was das Einhängen nach Namen erlaubt), und als Dateisystem wurde ext2 gewählt, was aufgrund der geringeren Anzahl Schreibzugriffe wegen der fehlenden Implementation des "Journaling", das Flash-RAM der CF-Karte schont. Da heutzutage moderne Flash-Controller über die Fähigkeit verfügen, die Schreibzugriffe gleichmäßig auf die Speicherzellen zu verteilen, wird die Wirksamkeit dieser Maßnahme zur Zeit kontrovers diskutiert. Die Benutzung des Dateisystems ext3 oder gar eines anderen Dateisystems ist durchaus auch möglich.

Möchte man andere Namen für die Betriebssystem-Partitionen verwenden, so ist die Datei syslinux/extlinux.conf in der Bootpartition entsprechend anzupassen (siehe nächsten Abschnitt).

Anlegen der Boot Umgebung

Damit von der CF-Karte gebootet werden kann, muss erst mal der Master-Boot-Sektor angelegt werden:

cat /usr/lib/syslinux/mbr.bin > /dev/sdX 

Nun kann die Boot Partition eingehängt werden, um das Boot System darauf zu kopieren:

mkdir -p /mnt/cfcard
mount /dev/sdX1 /mnt/cfcard 

Nun wird der Boot loader in die Partition installiert:

mkdir -p /mnt/cfcard/bank1
mkdir -p /mnt/cfcard/bank2
mkdir -p /mnt/cfcard/syslinux
extlinux --install /mnt/cfcard/syslinux 

Nun müssen im Verzeichnis /mnt/cfcard/syslinux folgende Konfigurationsdateien angelegt werden:

extlinux.conf: Dies ist die Konfigurationsdatei des Bootmanagers

SERIAL		0 38400 0
CONSOLE		0
DISPLAY		message.txt
ONERROR		rescue
PROMPT		1
TIMEOUT		50
TOTALTIMEOUT	100
INCLUDE		extlinux.default

LABEL	rescue
KERNEL	/axrescue.vmlinuz
APPEND	initrd=/axrescue.initrd root=LABEL=bootbank loop=/axrescue.squashfs branch=/dev/ram reboot=bios console=ttyS0,38400n8 ro

LABEL	bank1
KERNEL	/bank1/vmlinuz
APPEND	initrd=/bank1/initrd.img root=LABEL=bank1 reboot=bios console=ttyS0,38400n8

LABEL	bank1.old
KERNEL	/bank1/vmlinuz.old
APPEND	initrd=/bank1/initrd.img.old root=LABEL=bank1 reboot=bios console=ttyS0,38400n8

LABEL	bank2
KERNEL	/bank2/vmlinuz
APPEND	initrd=/bank2/initrd.img root=LABEL=bank2 reboot=bios console=ttyS0,38400n8

LABEL	bank2.old
KERNEL	/bank2/vmlinuz.old
APPEND	initrd=/bank2/initrd.img.old root=LABEL=bank2 reboot=bios console=ttyS0,38400n8

extlinux.default: Dies ist die Include-Datei in der Festgelegt wird, welches Betriebsystem gestartet wird

DEFAULT bank1

message.txt: Diese Datei wird beim Start sofort angezeigt um den Operator über die Boot-Optionen zu informieren. Da ihr Inhalt reinen Informations-Character hat, kann man hier natürlich beliebige nützliche Text-Inhalte unterbringen.

======================================================================
ALIX Ubuntu 10.04.04 LTS OS

Bundle Version: 0.5
(c) 2012 by YeaSoft Int'l


Boot options:

   bank1:      Starts the default system on bootbank 1 (default)
   bank2:      Starts the default system on bootbank 2
   bank1.old:  Starts the previous system on bootbank 1
   bank2.old:  Starts the previous system on bootbank 2
   rescue:     Starts a minimal non persistent system for rescue
               operations (fallback)

======================================================================

Diese Dateien können auch von hier heruntergeladen werden und folgendermaßen auf die Karte kopiert werden:

wget http://www.yeasoft.com/downloads/alix/alix-bootbank/alix-extlinux-conf.tar.gz
tar xzf alix-extlinux-conf.tar.gz -C /mnt/cfcard/syslinux
rm alix-extlinux-conf.tar.gz 

Zu allerletzt müssen noch die Dateien axrescue.vmlinuz, axrescue.initrd und axrescue.squashfs des Live-Rettungssystems auf die Karte kopiert werden. Führt man diese Prozedur auf einem über PXE im LIve-Rettungssystem gestarteten Alix-Board selber aus, so ist unbedingt zu berücksichtigen dass alle Schreibzugriffe im Hauptdateisystem im Hauptspeicher stattfinden - welcher sehr begrenzt ist. Aus diesem Grunde sollte ein möglicher Download des Rettungspaketes gezielt auf die CF-Karte stattfinden, falls das Kopieren nicht direkt über SSH von einem externen System erfolgt. Dies würde man dann folgendermaßen durchführen:

pushd /mnt/cfcard
wget http://www.yeasoft.com/downloads/alix/alix-rescue/alix-rescue-ubuntu-10.04.4-10.tar.gz
tar xzf alix-rescue-*.tar.gz axrescue.vmlinuz
tar xzf alix-rescue-*.tar.gz axrescue.initrd
tar xzf alix-rescue-*.tar.gz axrescue.squashfs
rm alix-rescue-*.tar.gz
popd 

Der Download Link im obigen Beispiel ist natürlich nur ein Beispiel und je nach gewünschtem System von der offiziellen Downloadseite zu ermitteln. Bevor es nun weiter geht, sollten eventuell noch ein paar Anpassungen an das Live-Rettungssystem getätigt werden. alix-rescue stellt standardmäßig folgende Ausgangskonfiguration zur Verfügung:

Ist dies nicht gewünscht, so kann es über die übergebenen Parameter in der Boot-Konfiguration geändert werden. Soll z.B. eth0 eine festgelegte IP-Adresse erhalten, so kann das durch Hinzufügen von dhcpdif-ip=<ip adresse> in der Parameterliste in der Datei extlinux.conf erreicht werden. Eine vollständige Dokumentation aller Features und Konfigurationsmöglichkeiten kann in der Datei readme.txt des Download-Archivs bzw. unter der Dokumentationsseite 🇬🇧 eingesehen werden.

Nun kann die CF-Karte ausgehängt werden...

umount /mnt/cfcard
rmdir /mnt/cfcard 

...und, falls über einen Kartenleser beschrieben, nun entnommen und ins Alix-System eingesetzt werden. Sollte das System hingegen über PXE gebootet worden sein, so muss beim jetzt fälligen Neustart im Tiny-Bios das Booten per PXE ausgeschaltet werden (siehe Anleitung weiter oben), da das System sonst wieder vom Netz startet.

Zwischenstand

Die CF-Karte die nun produziert worden ist, stellt einen nützlichen Startpunkt für jegliches serielles Alix-System dar. In dieser Hinsicht, kann es nützlich sein, diese zu sichern bzw. zu vervielfältigen.

Abkürzung

Wer sich den Aufwand für die Herstellung sparen will, kann fertige Abbilder hier herunterladen.

Diese können dann auf einem Computer mit CF-Kartenleser auf eine CF-Karte mit mindestens 2 GiB Größe folgendermaßen aufgespielt werden:

wget http://www.yeasoft.com/downloads/alix/alix-bootbank/alix-bootbank-ubuntu-10.04.4-10.img.bz2
bunzip2 alix-bootbank-ubuntu-10.04.4-10.img.bz2
dd if=alix-bootbank-ubuntu-10.04.4-10.img of=/dev/sdX
partprobe -s 

Der Download Link im obigen Beispiel ist natürlich nur ein Beispiel und je nach gewünschtem System von der offiziellen Downloadseite zu ermitteln. Der Gerätename /dev/sdX ist mit dem Gerätenamen der CF-Karte zu ersetzen. Die fertigen Abbilder enthalten nur die Partition für das Bootsystem samt Live-Rettungssystem. Aus diesem Grunde muss mindestens noch eine Partition hinzugefügt werden, um dort das primäre Betriebsystem zu installieren. Optional kann noch eine weitere Partition für ein alternatives Betriebssystem und eine Partition für Daten angelegt werden. Danach müssen auf den entsprechenden Partitionen die Dateisysteme angelegt werden:

mke2fs -L bank1 /dev/sdX2
mke2fs -L bank2 /dev/sdX3
mke2fs -L data /dev/sdX4 

Wie man hier sehen kann, wurden den Volumen Namen gegeben (was das Einhängen nach Namen erlaubt), und als Dateisystem wurde ext2 gewählt, was aufgrund der geringeren Anzahl Schreibzugriffe wegen der fehlenden Implementation des "Journaling", das Flash-RAM der CF-Karte schont. Da heutzutage moderne Flash-Controller über die Fähigkeit verfügen, die Schreibzugriffe gleichmäßig auf die Speicherzellen zu verteilen, wird die Wirksamkeit dieser Maßnahme zur Zeit kontrovers diskutiert. Die Benutzung des Dateisystems ext3 oder gar eines anderen Dateisystems ist durchaus auch möglich.

Möchte man andere Namen für die Betriebsystem-Partitionen verwenden, so ist die Datei syslinux/extlinux.conf in der Bootpartition entsprechend anzupassen.

Aufspielen des Basis Betriebssystems

Da sich auf der CF-Karte nur das Live-Rettungssystem befindet, wird dieses, unabhängig vom Inhalt der Datei syslinux/extlinux.default, starten.

Die Standard-Anmeldedaten lauten:

Da dieses schwache Passwort eine Sicherheitslücke darstellt, ist es möglich, das Passwort des Live-Rettungssystems zu ändern. Dafür genügt lediglich der Parameter password=<neues Passwort> bzw. password=SHADOW:<password hash> dem Rettungssystem in der Datei syslinux/extlinux.conf in der Boot-Partition mit auf dem Weg zu geben.

Nach dem Anmelden, entweder auf der seriellen Konsole oder über SSH, kann nun mit der Installation begonnen werden. Die Nachfolgende Anleitung geht davon aus, dass auf der ersten Betriebssystem-Partition (/dev/sdX2) welche mit dem Namen bank1 gekennzeichnet wurde, installiert wird. Die Installation wird mittels eines Automatisierungstools namens UIC (Ubuntu Installation Creator) erfolgen, welches praktischerweise im Live-Rettungssystem bereits enthalten ist.

Dieses Installations-Automatisierungstool basiert auf debootstrap und ist in der Lage, basierend auf ihm vorgegebenen Templates (Schablonen) eine Installation genau so durchzuführen, als würde man es manuell machen. Zum Einsatz wird ein Template kommen, welches in seiner Vorgehensweise nahezu exakt jener entspricht, die im Artikel ALIX CF-Bootmedium erstellen beschrieben wird. Für Alix-Boards stehen drei Basis-Betriebsystem-Templates zur Verfügung, welche jeweils auf Ubuntu 10.04, Ubuntu 08.04 und Debian 6 basieren. In dieser Anleitung wird das Ubuntu 10.04 Template verwendet werden.

Als erstes wird das Template in seiner aktuellsten Version heruntergeladen und im aktuellen Verzeichnis ausgepackt:

uic prepare -v alix-base-1004 

Bevor es nun weiter geht, lohnt ein kurzer Blick in die Template-Konfigurationsdatei uictpl.conf da diese verrät, welche Pakete in das System installiert werden:

UIC_SRCNAME="alix-base-1004"
UIC_SRCVERSION="10.04.4-01"
UIC_SRCDESC="This installation template creates a minimal Ubuntu 10.04 installation suited for Alix 2Dxx and 6Dxx boards"
UIC_ARCH=i386
UIC_RELEASE=lucid
UIC_REPOSITORY=http://de.archive.ubuntu.com/ubuntu
UIC_KERNEL=linux-image-386
UIC_SOFTWARE="ssh"
UIC_RECONFIGURE="console-setup"
UIC_ROOTPASSWORD="password"

Wie man an der Liste in der Variablen UIC_SOFTWARE erkennen kann, wird lediglich das Paket ssh zusätzlich zum absoluten Minimalsystem installiert. Soll das System von der Grundausstattung eher einem klassischen Minimal-Server entsprechen, so ist statt alix-base-1004, das Template alix-server-1004 zu verwenden.

Als nächstes wird die Partition, in der das Betriebssystem installiert werden soll, an das lokale Template gebunden:

uic attach -v /dev/sdX2 alix-base-1004 

Nach dem erfolgreichen Verbinden kann die Installation nun mit folgendem Befehl erfolgen:

uic create -v alix-base-1004 

Die Installation sollte nun automatisch ausgeführt werden, was je nach maximaler Schreibgeschwindigkeit der CF-Karte zwischen 5 und 20 Minuten dauern wird. Unter Umständen kann es passieren, dass das System nachfragen wird, ob die eine oder andere angepasste Datei überschrieben werden soll. Diese Nachfragen können durch betätigen der Eingabetaste beantwortet werden.

Ist die Installation vollständig durchgelaufen, kann die Partition vom Template getrennt werden, und das System neu gestartet werden:

uic detach -v alix-base-1004
reboot 

Ist es wichtig, vorher noch einige Anpassungen an das System zu tätigen, so kann vor dem Trennen das Dateisystem der Installation unter alix-base-1004/chroot erreicht werden. Durch Eingabe des Befehls:

uic enter -v alix-base-1004 

wird eine chroot-shell mit geladenen Spezialdateisystemen (/sys, /dev und /proc) im vorbereiteten System gestartet, welche man durch Eingabe von Strg + D bzw. den Befehl exit wieder verlassen kann.

Start des Basis Betriebssystems

Da das System in bank1 installiert wurde und dieses in der Datei syslinux/extlinux.default in der Boot-Partition als Standard angegeben wurde, wird das Board nun mit dem neuen Betriebssystem starten. Bevor der Benutzer das System nun endgültig seiner Bestimmung gemäß anpassen kann, hier noch ein schneller Befehl, um dem System einen neuen Rechnernamen, Domäne und frische SSH Keys zu verpassen:

machine_sysprep -vs -n <neuer name> -d <neue domäne> -R 

Weiterführende Informationen

UIC ist, entgegen seinem Namen, nicht nur für Ubuntu 8.04 und 10.04, sondern auch für Debian 6.0 (Squeeze) zu gebrauchen. Weiterführende Informationen zu UIC sind auf der Projektseite 🇬🇧 zu finden. Da es sich um ein recht neues Projekt handelt, ist mit sehr häufigen Aktualisierungen zu rechnen.

Das System erlaubt nicht nur Templates von der Website zu gebrauchen, sondern diese auch für die eigenen Bedürfnisse anzupassen. Diese können dann sowohl als Datei weiterverbreitet bzw. genutzt werden, als auch in eigenen Repositories zur Verfügung gestellt werden.

Aktuelle UIC Templates für Alix Boards

Zur Zeit werden folgende UIC-Templates für Alix-Boards zur Verfügung gestellt:

Alix UIC-Templates (Stand: 21.05.2012)
Name Basis-Betriebssystem Beschreibung Größe Speicherverbauch
alix-base-1004 Ubuntu 10.04 (lucid) Minimalsystem für Alix Boards mit serieller Schnittstelle 402 MB 47 MB / 35 MB
alix-server-1004 Ubuntu 10.04 (lucid) Basis-Serversystem für Alix Boards mit serieller Schnittstelle 446 MB 47 MB / 35 MB
alix-base-deb6 Debian 6.0 (Squeeze) Minimalsystem für Alix Boards mit serieller Schnittstelle 336 MB 28 MB / 29 MB
alix-server-deb6 Debian 6.0 (Squeeze) Basis-Serversystem für Alix Boards mit serieller Schnittstelle - -

Die Größe des Systems auf der Hauptpartition wurde nach Ausführen von apt-get clean (Löschen des Paketcaches) ermittelt. Der Speicherverbrauch wurde mit

echo $(($(grep MemTotal /proc/meminfo | awk '{print $2}') - $(grep MemFree /proc/meminfo | awk '{print $2}') )) 

ermittelt. Die Varianz ergibt sich aus dem Speicherverbrauch direkt nach dem Anmelden und dem Speicherverbrauch mach 10 Minuten.