Alpine Linux discless-mode

Einführung

In dieser Anleitung möchte ich dir zeigen, wie du Alpine Linux so installieren kannst, dass es vollständig aus dem RAM (Arbeitsspeicher) läuft, aber dennoch Änderungen und Updates zulässt. Somit ist es das perfekte Setup für einen langsamen alten Computer oder ein Thin Client , so dass du keine Festplatte für das System verwenden musst, lediglich genügend Arbeitsspeicher sollte vorhanden sein, aber in der Minimalversion sollten 2-4GB RAM ausreichend sein (mehr ist natürlich besser). Die Anleitung sollte für 32bit- sowie 64bit-Systeme funktionieren. Außerdem sollen sowohl Lagacy-BIOS als auch UEFI-Systeme unterstützt werden. Allgemein finde ich Alpine Linux perfekt für alte Computer geeignet, da es sehr leichtgewichtig und schnell ist. Das Installieren von Anwendungen mit dem Paketmanager apk hat mich am meisten beeindruckt und nein, das hat nichts mit Android apk’s zu tun. Nicht umsonst ist Alpine Linux das Standart-Linux, welches für Docker-Container verwendet wird. Um mit Alpine Linux einen Desktop für deine Workstation bereit zu stellen musst du aber ganz schön frickeln, aber dafür bist du ja hier.

Übersicht der Idee

Grundsätzlich wollen wir das Alpine-Installationsprogramm auf eine kleine beschreibbare - in FAT32 formatierte - Festplatte, SD-Karte oder USB Stick bringen, dann werden wir den Befehl lbu commit verwenden, um Änderungen am System persistent zu machen und wir werden uns ansehen, was konfiguriert werden muss, um ein funktionierendes Desktopsystem zu erhalten.

Dies ist nur eine Übersicht von Schritten, die später detailiert beschrieben werden:

  • Booten von einem Alpine-Installer (z.B. von einem USB-Stick)

  • Formatieren eines USB-Speicherlaufwerks oder einer SD-Karte mit einer FAT32 Partition, so dass sie unter Lagacy-BIOS und UEFI-Systemen bootfähig ist

  • Mit dem Werkzeug setup-bootloader bringen wir den Bootloader vom Installer auf die frisch formatierte SD-Karte

  • Neustarten in das neue System

  • Mit dem Werkzeug setup-alpine das Basis-System einrichten.

  • Eine grafische Oberfläche auf dem neuen Alpine-System installieren

  • Mit lbu commit die Änderungen über einen Neustart hinweg persistent machen

Was wir brauchen

  • Das Alpine Linux ISO

  • Einen USB-Stick (2-32GB)

  • Eine SD-Karte, eben irgendwas worauf wir das Grundsystem installieren können, das nachher in den Arbeitsspeicher geladen wird.

      Weitere Ideen hierfür könnten sein: MP3 Player, einen weiteren USB-Stick, eine MiniDisc (oder eine kleine interne Festplatte) sei kreativ.
    
  • Einen IBM kompatiblen Computer mit BIOS oder UEFI der vom jeweiligen Grundsystem-Laufwerk (SD-Karte) booten kann. ACHTUNG! Nicht jeder Computer kann von SD-Karten booten, probier das vorher aus, alternativ kannst du einen USB-SD-Kartenleser verwenden.

  • Etwa 1h Zeit und Lust zu frickeln.

Setup

Alpine Linux “diskless” installation vorbereiten

Für diesen Schritt musst du ein Alpine Linux-Installations-ISO herunterladen. Nimm hierfür das, welches deiner Prozessorarchitektur entspricht und am besten die “Extended” - Variante.

Sobald die ISO-Datei heruntergeladen ist, erstelle das Installationsmedium. In meinem Beispiel ein USB-Stick.

Hierfür kannst jedes Image-tool verwenden. Unter Linux kannst du dd oder Gnome-Laufwerke benutzen. Unter Windows kannst du Win32 Disk Imager benutzen.

Das Ziellaufwerk, in meinem Beispiel eine SD-Karte, kannst du auch schon formatieren. Wichtig ist, diese wie folgt zu formatieren:

-MBR/DOS

-FAT32 (Die Speicherkarte sollte nicht größer als 32GB sein)

-Das Flag "bootfähig" muss gesetzt seien Typ W95 FAT32 (LBA)

Grundsystem installieren

Starte nun den Alpine-Linux Installer-USB-Stick

In diesem Schritt haben wir den Alpine-Installations-USB-Stick gestartet, um ein Grundsystem auf der SD-Karte zu erstellen. Die bootfähige, mit FAT32 formatierte, SD-Karte ist eingesteckt. Der Loginname ist root, ein Passwort gibt es nicht. Du kannst zu allererst das Tastaturlayout auf Deutsch einstellen mit setup-keymap und dann zweimal de. Danach kopieren wir das grundlegende Alpine Linux Grundsystem vom USB-Stick auf die SD-Karte. Das machen wir mit dem Befehl: setup-bootable /media/sdb /dev/sdc1; wichtig ist hierfür für >/dev/sdc1< den Pfad der SD-Karten Partition einzutragen. Du kannst dir eine Übersicht verschaffen indem du blkid eintippst. Der erste Teil des Befehls muss auf das Inslallationsmedium verweisen, wie das genau heißt findest du mit dem Befehl mount heraus. Suche nun nach dem einzigen Medium der Liste, welches als ro (type iso9660 (ro,realtime,nojoliet…)) markiert ist, bei mir ist das >/media/sdb<.

Schnellübersicht:

setup-keymap de
blkid
mount
setup-bootable /media/sdb /dev/sdc1

Das dauert nun ein paar Minuten, danach kannst du neustarten mit reboot oder poweroff und danach schon von der SD-Karte booten, den USB-Stick brauchst du nun nicht mehr. Stelle sicher das du die SD-Karte gebootet hast und nicht den USB-Stick.

Unter Alpine Linux kannst du nun, nach dem login mit root, setup-alpine verwenden, um Tastaturlayout, Netzwerk, Benutzer und ein paar Dinge für das aktuelle System zu konfigurieren. Du musst im Schritt Laufwerk nur “none” sagen, wenn du gefragt wirst, denn das System ist ja schon auf der SD-Karte installiert und wir wollen es im discless-mode verwenden..

Schnellübersicht:

setup-alpine

1. Keyboard Layout > de > de
2. Hostname > localhost (oder einen eigenen Namen vergeben)
3. Network > wlan0 um WiFi einzurichten oder eth0 für LAN > dhcp > done > n
4. DNS Servers > kannst du so lassen und mit Enter bestätigen, genauso dhcp
5. Root password > vergib ein sicheres Passwort für den Root-Account
6. Timezone > Europe/Berlin
7. HTTP/FTP Proxy > none
8. NPT client > chrony
9. Mirror > f (um den schnellsten Mirror zu wählen) 
10. Setup a user > no 
11. SSH > openssh
12. Disk Mode > none (den Rest wie voreingestellt bestätigen)
13. config > usb / cache > /media/usb/cache

Damit ist die Basiskonfiguration abgeschlossen. Alles was du auf diesem System machst, passiert nur im RAM, dass heißt alle Änderungen sind nach einem Neustart wieder im Urzustand. Um nun eine Änderung wie die Einrichtung oder das Installieren von Software auch mit der SD-Karte abzugleichen, verwenden wir den Befehl lbu commit . Nun werden alle Änderungen am System auch beim nächten Start von der SD-Karte mit in den RAM geladen. Probiere das doch gleich einmal aus und installiere den Editor nano mit apk add nano. Wundere dich nicht, dass das super schnell geht, Alpine Linux hat den schnellsten Paketmanager den ich bisher gesehen habe. Nun mit lbu commit die Änderung mit der SD-Karte abgleichen und nach einem Neustart sollte nano immer noch installiert sein. Ist dein System einmal gestartet kannst du die SD-Karte auch entfernen, denn dein Betriebssystem läuft nun rasend schnell im Arbeitsspeicher. Aber ACHTUNG: alles was du installierst muss auch in den Arbeitsspeicher (RAM) passen, also installiere wirklich nur das was du benötigst. Ich benötige eine Desktopumgebung z.B. sway. Aber auch xfce könntest du installieren, das zeige ich dir im nächten Schritt.

Desktopsetup

Erst einmal brauchen wir eine grundlegende Grafikschnittstelle also xorg, diese installieren wir mit setup-xorg-base. Außerdem kannst du mit setup-desktop verschiedene Desktops installieren z.B. xfce oder in meinem Fall sway, damit wir richtig viel Speicherplatz sparen.

Schnellübersicht:

setup-xorg-base
setup-desktop sway
rc-update add hwdrivers sysinit

Wenn du einen Loginmanager brauchst, kannst du noch lightdm installieren mit rc-update add lightdm ich spare mir das und starte direkt Sway

Editiere nano ~/.profile um Sway automatisch zu starten.

if [ "$(tty)" = "/dev/tty1" ]; then
     exec dbus-run-session sway 
fi

Eine Gesamtanleitung um Sway einzurichten findest du im Alpine Wiki . Außerdem findest du für den Desktopbetrieb eine schöne Anleitung bei GNU/Linux.ch aber installiere möglichst nur das, was du auch wirklich brauchst.

Dinge die du für ein vollständiges Desktopbetriebssystem installieren solltest wären: Sound-Firmware/ alsa, Sprachdateien, einen Browser, Office und den Networkmanager. Außerdem solltest du noch die Systemsprache konfigurieren:

nano /etc/X11/xorg.conf.d/00-keyboard.conf und Folgendes für Deutsch eintragen:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "de"
        Option "XkbVariant" "nodeadkeys"
EndSection

Aber für genauere Infos zur Desktopeinrichtung werde ich wohl einen weiteren Blogbeitrag schreiben, wie du Alpine Linux als super leichtgewichtiges Desktopbetriebssystem nutzen kannst oder du arbeitest dich selbst durch das Alpine Wiki . Für die allermeisten Dinge kannst du auch die Anleitungen aus dem Arch-Wiki verwenden.

Ach ja und nicht vergessen: sollen Änderungen persistent bleiben musst du diese mit lbu commit bestätigen. Ich habe das einmal vergessen, das ist natürlich auch eine super Möglichkeit Dinge einfach einmal auszuprobieren, denn nach einem Neustart waren die Änderungen natürlich nicht übernommen worden.

Zusammenfassung

Ich installiere nur virt-viewer und alsa somit kann ich mein super schnelles Alpine Linux als Thinclient für meinen Server verwenden. Das bedeutet, dass Monitor, USB, Maus und Tastatur das Steuergerät für das Betriebssystem sind, welches auf meinem leistungsfähigem Server lauft. Das Spice-Protokoll sorgt dafür, das sogar USB-Geräte zum Server durchgereicht werden können. Somit kann ich meine alten Laptops als Ein- und Ausgabegeräte für meinen Server nutzen. Aber auch ein Kiosksystem kann mit dieser Methode realisiert werden, also nur ein Browser der startet und sonst nichts. Schreib mir gerne was du davon hälst und was man noch Alles mit so einem Minimalsystem anstellen kann, welches komplett im Arbeitsspeicher läuft.

Was noch fehlt

Eine Verschlüssselung der persönlichen Daten wäre natürlich noch schön, ich denke ich werde noch eine extra verschlüsselte Partition einrichten um persönliche Daten dauerhaft aber auch sicher zu speichern. Die Sway-config muss noch heftig angepasst werden, damit auch bei der Benutzung das Desktops Spaß aufkommt. Außerdem wäre es großartig, das Basissystem per PXE-Boot zu verteilen, damit es ein echtes diskless-System wird, du also keinen Festspeicher mehr benötigst. Und zum Schluss die Frage: “Was passiert eigentlich wenn der Arbeitsspeicher mehr gefüllt wird als er groß ist, weil ich eine Menge Firefox-Tabs öffne oder Unmengen an Software installiere (z.B. einen Gnome oder KDE-Desktop mit Inkscape, Gimp, Kdenlive, usw…)?” Ich werde es ausprobieren und hier im Podcast berichten…

Dir wünsche ich viel Spaß beim Testen!

daswarschonkaputt.tech - Podcast

Wir sind ein Laber-Technik-Lebensweisheiten-Podcast, mit News, Retrogeschichten und gelegentlich Popkulturelles. Bob berichtet was er wieder mal kaputt gemacht hat und Jay erklärt warum es kaputt gegangen ist. Technik ist vergänglich, einiges setzt sich nie durch anderes gerät in Vergessenheit. In unserem Podcast erklären wir dir wie man Emails per Post versendet, Podcasts auf Kassette veröffentlicht, mit einem Raumschiff aus Knetmasse zum Mars fliegt und Linux auf einem Toaster installiert. Außerdem sprechen wir über aktuelle News aus der Technikwelt. Klingt abgedreht? Ist es auch. Hör rein dann verpasst du nichts. Wir senden ein mal monatlich etwa ca.2h also 30min die Woche ;-) KEINE WERBUNG, KEINE VERSTECKTEN KOSTEN.