Artikel als PDF Gesamtansicht

2 Vorbereitung des USB-Sticks

Die offizielle Installationsanleitung beschreibt die Formatierung eines USB-Sticks mit Ext3, das Aufspielen das Betriebssystem-Images und die Installation des neuen, von Arch Linux ARM bereitgestellten Bootloaders U-Boot am DockStar unter Pogoplug Linux. Von dieser Vorgehensweise weiche ich in einigen Punkten ab:

Wer auf seinem PC ein anderes Betriebssystem einsetzt, nutzt für die in diesem Abschnitt durchgeführten Schritte einfach eine aktuelle Linux-Live-CD

2.1 Formatierung

Die Formatierung eines Datenträgers birgt stets die Gefahr eines Datenverlustes durch irrtümliche Angabe eines falschen Devices. Es ist deshalb wichtig das Device des USB-Sticks zweifelsfrei zu identifizieren, etwa anhand der Ausgabe von dmesg. Im folgenden wird stellvertretend /dev/sdx verwendet. Mit fdisk lege ich auf dem Stick drei primäre Partitionen an. Man beachte, dass es Vorteile haben kann, stattdessen gdisk zu verwenden, dazu mehr im Forum und im Abschnitt 8.2.

[root@linux ~]# fdisk /dev/sdx

Neben Bootpartition (32 MB) und Rootpartition (1200 MB) nimmt eine dritte (Home-)Partition den Rest des 16 GB-Sticks ein. Sie wird das sekundäre VDR-Aufnahmeverzeichnis beherbergen. Eine Swap-Partition sollte man auf Flash-Speichermedien nicht anlegen, 128 MB RAM sind für den beschriebenen Verwendungszweck ohnehin mehr als ausreichend. Hier das Ergebnis der Partitionierung:

Disk /dev/sdx: 16.0 GB, 16001269760 bytes
64 Köpfe, 32 Sektoren/Spur, 15260 Zylinder, zusammen 31252480 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdx1            2048       67583       32768   83  Linux
/dev/sdx2           67584     2525183     1228800   83  Linux
/dev/sdx3         2525184    31252479    14363648   83  Linux

Beim Anlegen der Dateisysteme erhält jede Partition zur einfacheren Identifizierung zugleich ein Label. Um keinen Speicherplatz zu verschwenden, wird auf der home-Partition der für root reservierte Anteil an Blöcken (5% per Voreinstellung) auf 1% reduziert.

[root@linux ~]# mkfs.ext2 -L boot /dev/sdx1 
[root@linux ~]# mkfs.ext4 -L root /dev/sdx2 
[root@linux ~]# mkfs.ext4 -L home -m 1 /dev/sdx3

Um Schreibzugriffe zu minimieren, kann man das Journal der ext4-Partitionen mit der Option -O ^has_journal deaktivieren, riskiert damit bei Stromunterbrechung aber ein inkonsistentes Dateisystem.

2.2 Installation

Der Stick wird nun gemountet und das Legacy Image von Arch Linux ARM darauf entpackt. Man achte sorgsam darauf, dieses im richtigen Verzeichnis zu tun, um keine Dateien des laufenden Systems zu überschreiben. Das Image enthält Kernel 3.1.10 und ist dadurch auch mit älteren Versionen des Bootloaders U-Boot kompatibel. Der im alternativ angebotenen Kirkwood Image integrierte, aktuelle Kernel kann bei Bedarf nachträglich installiert werden.

[root@linux ~]# mount /dev/sdx2 /mnt/
[root@linux ~]# cd /mnt/
[root@linux mnt]# mkdir boot
[root@linux mnt]# mount /dev/sdx1 boot/
[root@linux mnt]# tar -xf /path/to/ArchLinuxARM-armv5te-latest.tar.gz

Da der Bootloader U-Boot das Kernel-Image auf der ersten Partition im Verzeichnis /boot erwartet (so wie es ohne separate Bootpartition wäre), legen wir einfach einen gleichnamigen Link auf das aktuelle Verzeichnis an. Das ist etwas einfacher als die Umgebungsvariablen des Bootloaders anzupassen (Abschnitt 3.2).

[root@linux mnt]# cd boot
[root@linux boot]# ln -s . boot

2.3 Vorkonfiguration

Es werden noch einige Konfigurationsdateien auf dem Stick - also unterhalb von /mnt - editiert. Zumindest /etc/fstab sollte angepasst werden. Dort sind die Partitionen des USB-Sticks einzutragen, andernfalls wird nur die Rootpartition gemountet. Da sich die Zuordnung der Gerätedateien nach einen Reboot ändern kann, empfiehlt sich die Verwendung der oben vergebenen Label. Alternativ können UUIDs (laut blkid) genutzt werden, für die Rootpartition auch /dev/root. Die Option noatime unterbindet das Aktualisieren der Zeitstempel beim Lesezugriff auf Dateien und Verzeichnisse.

#/etc/fstab
LABEL=root  /       ext4  noatime  0 0
LABEL=boot  /boot   ext2  noatime  0 0
LABEL=home  /home   ext4  noatime  0 0

Die Netzwerkkonfiguration erfolgt unter Arch Linux ARM derzeit mit netctl. Per Voreinstellung werden IP und weitere Parameter von einem DHCP-Server (üblichweise dem Hardware-Router) abgerufen. Das zugehörige Profil ist in /etc/netctl/eth0 hinterlegt3.

Hinweis: Seit August 2014 ist in den ALARM-Tarballs systemd-networkd vorinstalliert. Es ersetzt die Funktionalität von netctl und wird über /etc/systemd/network/eth0.network konfiguriert.

In kleinen Netzwerken ziehe ich eine statische Konfiguration vor. Die letzte Zeile sorgt für die einmalige Zeiteinstellung per NTP (der DockStar besitzt keine Hardwareuhr) und sollte nicht entfernt werden. Die Option ExcludeAuto=no ist seit Version 1.10 von netctl erforderlich.

#/etc/netctl/eth0 
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.1.5/24')
Gateway='192.168.1.1'
DNS=('192.168.1.1')
DNSDomain="localdomain"
ExcludeAuto=no

ExecUpPost='/usr/bin/ntpd -gq || true'

Sind alle Vorbereitungen abgeschlossen, kann der USB Stick ausgehängt werden.

[root@linux mnt]# cd / && umount /mnt/boot/ /mnt
Anpassung des Bootloaders Vorbereitung des USB-Sticks

  1. Wird Ext3 für die Rootpartition eingesetzt, ist keine separate Bootpartition erforderlich. Das neue U-Boot Environment (Schritt 7 und 8 in der offiziellen Installationsanleitung) unterstützt auch das Booten von einer mit Ext4 formatierten Partition.

  2. Das Profil wird über den ifplug Daemon aufgerufen, falls ein Patchkabel angeschlossen ist. Es ist nicht notwendig den netctl Daemon zu aktivieren.