ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Optimierte Bottom-Up Installation

Artikel in Arbeit

Dieser Artikel wird momentan von leo.moll erstellt. Als Fertigstellungsdatum wurde der 31.05.2012 angegeben.


Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen, oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

In diesem Artikel geht es um die Erstellung eines angepassten Minimalbetriebssystem auf dem ALIX-Board entweder mittels PXE oder einer zuvor präparierten CF-Karte, welches es erlaubt, anschließend das maßgeschneiderte Betriebssystem zu von der Pike aus zu installieren (Bottom-Up).

Vorteile einer Bottom-Up Installation

Entgegen der im Artikel "Alix" vorgestellten Standardinstallation, hat eine optimierte Bottom-Up Installation den Vorteil, dass man genau weiss 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

  • Herstellung einer starbaren CF-Karte mit einem Live-Rettungssystem entweder auf einem anderen Rechner oder auf dem Alix-System selbst, was mit dem Live-Rettungssystem über PXE gestartet wurde

  • Start des Live-Rettungssystems auf dem Board

  • Aufspielen des gewünschten Systems

  • Eintragen des Systems im Bootmanager

Voraussetzungen

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

  • Ein funktionierendes Netzwerk, welches Zugriff auf das Internet erlaubt.

  • Ein funktionsfähiges Alix-Board. Mit Hilfe des Verfahrens, welches in dieser Anleitung beschrieben wird, wurden Systeme für verschiedene Alix-Boards der Serie 2Dxx aufgesetzt. Prinzipiell sollte diese Anleitung für alle Alix-Boards mit nur einer serieller Schnittstelle geeignet sein.

  • Eine möglichst schnelle Compact Flash Karte, die mindestens 2GB groß sein sollte. Die Gesamtkapazität ist allerdings vom späteren Verwendungszweck abhängig.

  • Ein beliebiger Rechner mit serieller Schnittstelle der als Terminal für das Board genutzt wird.

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

  • Ein DHCP Server im Netz in dem man die entsprechenden Network-Boot-Optionen setzen kann

  • Ein Rechner, Router oder NAS auf dem das Minimalsystem per TFTP und NFS zur Verfügung gestellt werden kann

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

  • Ein Linux-Rechner, auf dem das Paket SYSLINUX vorhanden ist.

  • ein externer Kartenleser

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:

Warum keine neuere Ubuntu Version?

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. Diese Methode am Ende exakt das gleiche Resultat liefern wird es also keinen qualitativen Vorteil bringt, die PXE Methode zu verwenden.

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

Vorbereitung der Kartenleser basierten Installation

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

  • syslinux

Befehl zum Installieren der Pakete:

sudo apt-get install syslinux 

Oder mit apturl installieren, Link: apt://syslinux

Hiervon wird unter Anderem das Programm extlinux benötigt, welches leider in neueren Ubuntu Versionen herausgetrennt wurde. Es kann zwar theoretisch problemlos nachinstalliert werden, aber leider geht das dafür geschaffene Installationspaket über das Ziel hinaus, da es nicht nur das Programm nachinstalliert, sondern versucht den gesamten Bootmanager des Rechners mit EXTLINUX zu ersetzen, was sicherlich nicht in der Intention des Benutzers liegt. Wenn auch es sicher lobenswert ist, EXTLINUX als vollständigen Bootmanager neben GRUB zu unterstützen, so wird dieser meistens eher dafür gebraucht um externe Laufwerke Bootfähig zu machen. Es wäre also sinnvoll gewesen ihn weiterhin im syslinux Paket zu belassen und lediglich die Unterstützung als Bootmanager für Ubuntu in einem separaten Paket auszuliefern.

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 händisch aus dem Paket 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. Dies würde, falls erwünscht, so gehen:

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 und dem Einlegen der CF Karte, wird diese bei Desktop-Systemen in der Regel 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 mann 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 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:

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

Diese Revision wurde am 19. Mai 2012 15:48 von leo.moll erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Ubuntu, Hardware, Installation, Netzwerk, Server, System