Diese Anleitung basiert auf dem Artikel im offiziellen Alpine Linux Wiki1. Sie beschreibt die Einrichtung eines “diskless” Setup und wurde mit einem Raspberry Pi 2 Model B Rev 1.1 getestet.
Alpine Linux für Raspberry Pi herunterladen
Auf einem bereits mit Linux laufenden Raspberry Pi kann man mittels grep -i model /proc/cpuinfo | uniq
feststellen, welches Modell man besitzt.
Dementsprechend wählt man im Alpine Linux Downloadbereich das zur Architektur passende Archiv.
SD-Karte vorbereiten
Für den Betrieb ist lediglich eine bootbare VFAT Partition notwendig. In diesem Beispiel wird diese relativ klein gehalten um den restlichen Platz für eine weitere Partition vom Typ F2FS zu nutzen.
SD-Karte partitionieren
Achtung: Ab hier werden die bisherigen Inhalte des angegebenen Geräts zerstört.
# Diese beiden Konstanten anpassen
SD_CARD=/dev/mmcblk0
PARTITION1_MB=500
start=2048
sector_size=512
part1_sectors=$(($PARTITION1_MB *1024*1024/ $sector_size))
echo "label: dos
sector-size: $sector_size
start=$start, size=$part1_sectors, type=c, bootable
start=$(($start + $part1_sectors)), type=83
" | sfdisk $SD_CARD
Partitionen formatieren
# Diese Konstante anpassen
BLOCK_PREFIX=/dev/mmcblk0p
mkfs.vfat ${BLOCK_PREFIX}1
mkfs.f2fs ${BLOCK_PREFIX}2
Alpine Linux aufspielen
# Diese beiden Konstanten anpassen
BLOCK_PREFIX=/dev/mmcblk0p
ALPINE_ARCHIVE=alpine-rpi-3.17.2-armv7.tar.gz
MNT=$(mktemp --directory)
mount ${BLOCK_PREFIX}1 $MNT
tar xzvf $ALPINE_ARCHIVE -C $MNT
# Optional: Audio via Klinkenstecker aktivieren
#echo dtparam=audio=on >> $MNT/usercfg.txt
# Optional: Overscan deaktivieren
# siehe https://askubuntu.com/a/1229856
#echo disable_overscan=1 >> $MNT/usercfg.txt
umount ${BLOCK_PREFIX}1 && rmdir $MNT
Alpine Linux System konfigurieren
Mit eingesetzter SD-Karte kann der Raspberry Pi nun gestartet werden.
Die Konfiguration des Systems erfolgt entsprechend den Anforderungen des Benutzers. Um eine reibungslose Grundeinrichtung zu gewährleisten, sollten allerdings folgende Antworten wie hier gezeigt übernommen werden:
setup-alpine
No disks available. Try boot media /media/mmcblk0p1? (y/n) => n
Enter where to store configs => mmcblk0p1
Enter apk cache directory => /media/mmcblk0p1/cache
Optimierungen ergänzen
# Ältere Paketversionen erhalten
sed -i 's|# BACKUP_LIMIT=3|BACKUP_LIMIT=3|g' /etc/lbu/lbu.conf
# Zusätzliche Paketquellen aktivieren
sed -i 's|#http://\(.*\)/community|http://\1/community|g' /etc/apk/repositories
#sed -i 's|#http://\(.*\)/testing|http://\1/testing|g' /etc/apk/repositories
# Zweite Partition bei Systemstart einhängen
PART2='mmcblk0p2'
mkdir /media/${PART2}
echo "/dev/${PART2} /media/${PART2} f2fs noatime,ro 0 0" >> /etc/fstab
# Public Key SSH-Rootzugang vorbereiten
mkdir /root/.ssh && touch /root/.ssh/authorized_keys && chmod -R go-rwx /root/.ssh
lbu include /root/.ssh/authorized_keys
Vorhandene Pakete aktualisieren und optional zusätzliche installieren
apk update && apk upgrade
#apk add rsync
Änderungen dauerhaft übernehmen
lbu commit -d
lbu commit
muss immer ausgeführt werden, wenn Änderungen dauerhaft übernommen werden sollen. Es schreibt Konfigurationsanpassungen in /media/mmcblk0p1/$HOST.apkovl.tar.gz.
Von dieser Datei werden sie dann beim nächsten Systemstart wiederhergestellt. Das Grundsystem bleibt unverändert.
System neu starten
Abschließend sollte die Funktionstüchtigkeit des Systems nach einem Neustart verifiziert werden:
reboot
Hinweis: Headless-Installation
Sollte kein Bildschirm oder keine Tastatur verfügbar sein, kann – entsprechendes Verständins vorausgesetzt – eine passende Overlay-Datei genutzt werden um bereits beim ersten Start Zugang über das Netzwerk (SSH) zu ermöglichen.
1 https://wiki.alpinelinux.org/wiki/Raspberry_Pi