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:
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 Archiv/Alix/CF-Bootmedium erstellen bereits größtenteils behandelt wurde, wird dieser Artikel auf die automatisierte Variante eingehen.
Grundsätzlicher Ablauf¶
Herstellung einer startbaren 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 Netzwerk-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
Für die "schnelle Abkürzung" wird des weiteren benötigt:
Ein Linux-Rechner mit einem externen Kartenleser. Grundsätzlich kann es auch ein Windows-Rechner oder ein Mac sein, allerdings ist die Vorgehensweise entsprechend anzupassen und ist hier nicht dokumentiert.
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:
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)
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.
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].
syslinux
Befehl zum Installieren der Pakete:
sudo apt-get install syslinux
Oder mit apturl 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:
Benutzer: root
Passwort: password
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:
Boot-Parition mit Bootloader, Rettungssystem und Kernels
Hauptdateisystem des Betriebssystems
Hauptdateisystem für das alternative Betriebssystem
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:
eth0 ist konfiguriert seine IP Adresse dynamisch über DHCP zu erhalten
eth1 ist konfiguriert auf die feste IP Adresse 192.168.2.1 und stellt einen DHCP-Server zur Verfügung der auf dieser Schnittstelle passende Adressen verteilt.
eth2 ist konfiguriert seine IP Adresse dynamisch über DHCP zu erhalten
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:
Benutzer: root
Passwort: password
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 Archiv/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.
Links¶
Archiv/Alix Übersichtsartikel
ALIX - Wikipedia
The Alix Software Project 🇬🇧 - Information about installation techniques, cookbooks and installation templates
Alix Rescue and PE System 🇬🇧 - Ubuntu based live rescue and preinstallation system for PXE or bundled deployment