Seit Erscheinen des Raspberry-Modells 4 ist es für andere Platinenhersteller eine echte Herausforderung, zu einem angemessenen Preis ein überzeugendes Konkurrenzprodukt anzubieten. Der neue Odroid M1 will mit Sata-3-Port und NVMe-Slot punkten.
Die Platinenfamilie Odroid des koreanischen Herstellers Hardkernel (www.hardkernel.com) gehört seit Jahren zu den größten Raspberry-Konkurrenten. Die Odroid-Hardware ist robust und in der Regel ausgewogen konzipiert. Das einfache Grundkonzept war schon immer, für etwas mehr Geld mehr Leistung als der gerade aktuelle Raspberry zu liefern oder andere Anschlussmöglichkeiten als dieser. Die bisherige Palette mit Odroid XU4, Odroid HC4, Odroid N2 und Odroid H3 wird neuerdings ergänzt durch die Platine Odroid M1.
Odroid M1: Schnell ausverkauft
Mit 160 Euro muss man mindestens rechnen, sofern man neben der eigentlichen Platine (etwa 120 € oder 140 € mit 4 GB oder 8 GB RAM) das unentbehrliche Netzteil (etwa 7 Euro), ein Gehäuse (etwa 13 Euro) und ein Kabel- und Montage-Set für Sata (etwa 13 Euro) benötigt. Und Achtung: Dies waren die Preise einschlägiger Elektronik-Versandhändler wie Pollin oder Reichelt im April und Mai 2022. Seit der Odroid M1 in erster Marge schnell vergriffen war, stiegen umgehend die Preise.
Die nachfolgenden Eckdaten versprechen in der Tat ein besonders flott laufendes Betriebssystem dank Installation auf NVMe, Sata oder eMMC sowie einen rasanten Serverbetrieb dank Sata-Laufwerk. Ein Sorglospaket für Einsteiger ist die Platine im Unterschied zum universellen Raspberry 4 indes nicht: WLAN- und Bluetooth-Chip fehlen, beim Einsatz eines Sata-Laufwerks gibt es Bedingungen, die man vorab kennen sollte, und auch bei USB ist nicht jede beliebige Anschlussoption möglich. Nicht zuletzt gibt es vorläufig nur ein schmales Angebot bei der Systemsoftware, sodass der Käufer bei der Auswahl des Betriebssystems eventuell Kompromisse eingehen muss. Aber das lohnt die Hardware allemal.
Odroid M1: Die technischen Eckdaten
Die ARM-Hardware läuft mit einem leicht angepassten Rockchip-Prozessor (RK3568B2) mit vier Cortex A55-Kernen und einer Taktfrequenz von knapp 2 GHz. Diese CPU bringt die Platine in die Liga des Raspberry 4, erreicht dessen Leistung aber nicht ganz (siehe Kasten „Mini-Benchmark“ auf der letzten Seite). Für den festverbauten LPDDR4-Arbeitsspeicher gibt es zwei Varianten der Platine mit vier oder acht GB RAM. Der Preisunterschied beträgt gut 20 Euro. Nach unserer Marktbeobachtung wurde die 8-GB-Variante am schnellsten ausverkauft und fordert derzeit auch die längeren Wartezeiten auf die nächsten Margen. Im Prinzip sollten für typische Serverrollen im Heimnetz aber auch vier GB RAM völlig ausreichen.
Für den Netzwerkanschluss ist ein Gigabit-Ethernet-Port vorhanden und zur Monitorausgabe ein HDMI-Anschluss. Für die sehr ordentliche bis gute Soundausgabe kann neben HDMI auch ein 3,5-Millimeter-Klinkenstecker dienen. Für Bastler und Industrieeinsatz kommt ferner noch ein DSI-Anschluss für einen kleinen LCD-Bildschirm hinzu. Ebenfalls für Bastlerprojekte kann eine Kamera über CSI angeschlossen werden. Auch die vom Raspberry bekannte 40-Pin-GPIO-Leiste ist verbaut.
Interessant für den Servereinsatz wird es bei den Anschlüssen für Datenträger: USB darf nicht fehlen und ist im Prinzip fünfmal vertreten – zweimal USB 3.0, zweimal USB 2.0 sowie ein Micro-USB-Anschluss (OTG). Der untere der beiden USB-3.0-Ports wird allerdings deaktiviert, falls der kleine OTG-Anschluss genutzt wird. Das ist kein großes Limit, aber man sollte dieses Detail nicht vergessen. Für an USB 3.0 angeschlossene Laufwerke gilt wie bei allen ähnlichen Platinen die Empfehlung, besser Datenträger mit eigener Stromversorgung anzuschließen. Zwei 2,5-Zoll-Laufwerke an USB und eventuell noch ein zusätzliches Sata-Laufwerk kann das Netzteil der Platine nicht stabil versorgen.
Das optionale Sata-Laufwerk versorgen die zwei Standardanschlüsse für das Daten- und das Stromkabel. Letzterer ist ein 5-Volt-Anschluss für 2,5-Zoll-HDDs oder SSDs. Eine große 3,5-Platte mit 12-Volt-Anschluss kann die Platine folglich nicht versorgen, diese müsste dann also mit externem Netzteil betrieben werden. Das von Hardkernel angebotene Sata-Montage-Set für circa 13 Euro umfasst nur die beiden Standardkabel und einen Hartplastik-„HDD-Holder“, um die Sata-Platte mit der Platine zu verschrauben. Das Zubehör ist verzichtbar, sofern Standardkabel vorliegen und der Datenträger nicht befestigt werden muss.
Für das Betriebssystem (oder Daten) gibt es neben dem üblichen Slot für eine Micro-SD-Karte und dem Sata-Laufwerk noch weitere Optionen: Es ist ein eMMC-Slot vorhanden (Embedded Multimedia Card) sowie ein Anschluss für ein SSD-Laufwerk vom Typ NVMe M.2. Letzteres muss eine PCIe-NVMe sein, eine NVMe mit Sata-Controller funktioniert dort nicht.
Wichtige Infos zur Systeminstallation
Auf https://wiki.odroid.com/odroid-m1/odroid-m1 gibt es bislang nur einige wenige Systemimages zum Download (siehe dort „os_images“), die dann mit einschlägigen Tools wie Etcher oder Gnome-Disks auf SD-Karte zu übertragen sind. Zum Redaktionsschluss war die Auswahl verfügbarer System noch sehr bescheiden und überdies unglücklich gewählt: Wer – naheliegend – die Hardware für Serveraufgaben nutzen will, wird nicht unbedingt zu Android 11 greifen. Ansonsten gibt es ein Ubuntu 20.04 ausgerechnet mit der anspruchsvollen Gnome-Oberfläche, die für die Hardware nicht angemessen erscheint. Zum Zeitpunkt des Produkttests erschien uns daher als einzig passende Wahl ein purer Ubuntu Server 20.04, auf den wir anschließend ein sparsames XFCE nachinstallierten. Die Zugangsdaten für fertige Odroid-Images lauten seit jeher „odroid“ mit Kennwort „odroid“.
Diese traditionelle Systembestückung für Platinenrechner ist aber auf SD-Karten (eventuell noch eMMC) beschränkt. Wer das System auf Sata oder NVMe installieren will, muss einen anderen Weg einschlagen. Und dieser Weg erweist sich insgesamt als der klügere, weil er ein sauberes System ohne „odroid“-Konto, eine größere Systemauswahl, eine individuelle Desktop-Auswahl und vor allem die freie Wahl des Systemdatenträgers eröffnet.
Beim Start der Platine (mit oder ohne installiertes Betriebssystem) meldet sich das integrierte Minimalsystem Petitboot, das einige wesentliche Systeminfos anzeigt und ferner eine Multiboot-Auswahl des Betriebssystems erlaubt (falls etwa auf SD, Sata und NVMe verschiedene Systeme bereitstehen). Entscheidender ist aber die Fähigkeit von Petitboot, Betriebssysteme über das Internet zu laden und zu installieren. Diese Fähigkeit wird bei Hardkernel- oder Vertreiber-Dokumentationen lapidar vorausgesetzt, ist aber bislang nirgendwo prominent dokumentiert.
Um die im Netz verfügbaren Systeme aufzulisten, müssen Sie in Petitboot zunächst die unterste Option „Exit to shell“ wählen und dann die folgenden zwei Befehle eingeben:
udhcpc
netboot_default
Der erste stellt die Verbindung zum Netzwerk sicher, der zweite setzt die Bootpriorität auf die Netzwerkinstallation. Nach „exit“ und Verlassen der Mini-Shell zeigt das Petitboot-Menü oben die verfügbaren Betriebssysteme. Dies sind mehr als die Downloadseite als traditionelle Images anbietet, allerdings ist von Kandidaten mit dem Hinweis „Work in Progress“ oder „Experimental“ eher abzuraten, da dies in unserem Fall prompt in einem fatalen Boothänger nach dem ersten Systemstart endete. Zum Zeitpunkt dieser Recherche waren nur Ubuntu 20.04 und Debian 10 als stabile Kandidaten erreichbar. Mindestens Ubuntu 22.04 und Debian 11 werden umgehend folgen.
Die weiteren Vorteile dieser Installationsweise sind offensichtlich: In den bekannten, textbasierten Installern von Ubuntu und Debian sorgen Sie vorab für eine saubere Lokalisierung des Systems, für ein individuelles Systemkonto und entscheiden gegen Ende der Installation im Tasksel-Dialog über Desktop und gewünschte Serverdienste (SSH, Apache). Für den Systemdatenträger gibt es beim Partitionierungsdialog kein Verbot – SD-Karte, NVMe-, Sata-, eMMC- oder auch USB-Laufwerke sind möglich.
Odroid M1: Praxis, Tipps und Einordnung
Die Platine arbeitet lüfterlos und somit absolut lautlos. Ähnlich dem Odroid N2 sitzt die gesamte Hardware auf einem großen passiven Kühlkörper, und nach Ausweis des Sensor-Tools des von uns genutzten XFCE-Desktops erreicht die Platine selbst bei Last kaum 40 Grad. Dies bestätigen auch eine haptische Kontrolle sowie der sehr niedrige Stromverbrauch: Wir messen etwa zwei Watt im Leerlauf und bringen den Odroid M1 selbst unter hoher Last nicht über 3,5 Watt Leistungsaufnahme – eventuelle mechanische Laufwerke oder Displays sind hier natürlich nicht eingerechnet.
Tipp zur Desktop-Wahl: Sofern man dem allzu anspruchsvollen Desktop Gnome aus dem Weg geht, arbeitet der Mini-Rechner mit einem XFCE, LXDE oder LXQT jederzeit auch mit grafischer Oberfläche flüssig. Selbst für einen Odroid M1 in reiner Serverrolle empfehlen wir die Installation eines Desktops, der dann per HDMI oder VNC neben der SSH-Fernwartung auch eine bequeme Oberfläche anbietet. Bei vier oder sogar acht GB RAM fällt der meist ungenutzte Desktop kaum ins Gewicht.
Tipp für Datenfreigaben: Mechanische Sata-HDDs, auch wenn sie ausschließlich als Datenfreigabe dienen, sollten unbedingt mit dem Standarddateisystem Ext4 formatiert werden. Das von Hardkernel früh angebotene Ubuntu 20.04 hat einen relativ betagten Kernel mit mäßiger NTFS-Unterstützung. Der Datendurchsatz kommt damit kaum über 30 bis 40 MB/s und liegt damit sogar unter den etwa 80 MB/s, die per USB angeschlossene Datenträger erreichen. Es wäre daher kontraproduktiv, die M1-Platine wegen der Sata-Schnittstelle zu erwerben und dann mit NTFS auszubremsen. SSDs am Sata-Port sind hingegen mit jedem beliebigen Dateisystem schnell genug, um im Gigabit-Netzwerk die Daten mit den maximalen 110 bis 120 MB/s auszuliefern.
Tipp zum Zubehör: Für den Odroid M1 gibt es ein hübsches, blaues Aluminiumgehäuse, das als Staubschutz prinzipiell zu empfehlen wäre. Es wird einfach auf die passende Rille des großen Kühlkörpers aufgeschoben und dann auf beiden Seiten mit Endabdeckungen verschraubt. Ganz zu Ende gedacht ist das nicht, weil sich das Gehäuse mit dem interessantesten Hardware-Angebot der Platine nicht verträgt: Ein Sata-Laufwerk bringen Sie nämlich nicht unter, wenn Sie das Gehäuse nutzen. Es ist nicht einmal möglich, die Sata-Kabel nach außen zu legen und das Laufwerk außerhalb zu nutzen, denn allein schon die eingesteckten Sata-Kabel machen es unmöglich, das Gehäuse auf die Platine zu schieben. Kurz: Wer vorhat, am Odroid M1 ein Sata-Laufwerk anzuschließen, kann sich den Kauf des Gehäuses von vornherein sparen.
Einordnung: Im Umfeld des Raspberry Pi 4 und den weiteren aktuellen Odroid-Platinen wird das Modell Odroid M1 aufgrund seiner Flexibilität mühelos seinen Platz finden. Daran lässt sich praktisch alles anschließen und einbauen, was man in der Schublade liegen hat. Da wird dann die kleine SSD, die für den Desktoprechner längst unterdimensioniert war, zum idealen Systemdatenträger. Als Datenserver garantiert die Platine jederzeit volle Gigabit-Leistung (120 MB/s), wenn die Daten auf einem Sata-Laufwerk liegen. Laufwerke an USB 3.0 liefern die Daten nicht schneller, aber auch nicht langsamer aus als beim Raspberry Pi 4 – also je nach Datengrößen mit 60 bis 90 MB/s.
Mini-Benchmark mit Raspberry und Odroid
Ein kleiner Vergleich mit der simplen arithmetischen Iteration
time $(i=0; while (( i < 9999999 )); do (( i ++ )); done)
auf etlichen Geräten ordnet die CPU-Leistung des neuen Odroid M1 ganz gut ein. Diese primitive Methode haben wir gewählt, weil auf den diversen Geräten mit diversen Betriebssystemen eine andere einheitliche Methode zu viel Aufwand erfordert hätte. Über die Aussagekraft des simplen Benchmarks lässt sich streiten, aber die Rangfolge deckt sich mit unserer praktischen Alltagserfahrung mit diesen Geräten. Der Raspberry Pi 4 liegt vor der neuen Odroid-Platine, deutlicher noch der Odroid N2 und der nicht mehr erhältliche Odroid H2. Der Fokus des neuen Raspberry-Konkurrenten Odroid M1 liegt eindeutig beim Angebot der Datenträgeranschlüsse, nicht bei der CPU-Leistung.
Das jüngste Endeavour OS 22.6 (ab hier kurz „EOS“) hat vor allem die ARM-Unterstützung für Raspberry- und Odroid-Platinen ausgebaut. EOS ist Nachfolger des eingestellten Antergos und hat denselben Anspruch wie das bekanntere Manjaro, nämlich mit einem grafischen Installer den Zugang zu Arch Linux zu vereinfachen.
Laut Distrowatch hat EOS Manjaro inzwischen den Rang abgelaufen und liegt aktuell auf Platz 2 vor Mint, Manjaro, Ubuntu, Debian & Co. Generell scheinen Arch-Derivate und deren Rolling-Release-Modell derzeit hoch im Kurs: Sie gelten als besonders schnell und stets aktuell. Nachteile sind gelegentliche Paketkonflikte, eine Fokussierung auf das Terminal und eventuell nicht vollständig deutsch lokalisierte Komponenten. Die Frage dieses Artikels ist daher, ob sich EOS als das derzeit wohl beste Arch als Alltags-Desktop eignet?
Bezug und Installation
Das Installations-ISO und Livesystem erhalten Sie auf https://endeavouros.com/latest-release (1,8 GB). Dieser Live-Installer bringt standardmäßig den XFCE-Desktop mit, jedoch sind Sie nicht zwingend auf diese Oberfläche festgelegt. Der „Welcome“-Dialog des Livesystems zeigt mehrere Optionen, und im Normalfall wird die Installation mit „Start the Installer“ ausgelöst. Alle anderen Optionen können Sie ignorieren, allenfalls die Option „Endeavour community editions“ ist für Nutzer interessant, die sich für exotische bis experimentelle Oberflächen interessieren (Sway, Qtile, Openbox sowie die Endeavour-Eigenentwicklung Worm).
Die primäre Option „Start the Installer“ eröffnet dann wiederum die zwei Möglichkeiten „Offline“ und „Online“. Wer den mitgelieferten XFCE möchte, kann „Offline“ rein vom Installationsmedium installieren. Dies ist der schnellste und einfachste Weg. „Online“ bezieht Teile des Systems aus dem Web und erlaubt die Auswahl zwischen neun prominenten Oberflächen (Gnome, KDE, Cinnamon etc.).
Verantwortlich für das Setup ist der Calamares-Installer, den auch Manjaro und einige Ubuntu-Varianten nutzen. Die typischen Fragen betreffen Sprache, Zeitzone, Tastatur, Partitionierung (mit optionaler System-Verschlüsselung) und Erstbenutzer. Setzt man hier, wie vorgeschlagen, das Benutzerpasswort mit dem des Administrators identisch, erzielt man ein sudo-Verhalten genau wie bei Ubuntu & Co.
EOS: Ein erster Rundgang
Das System präsentiert sich am XFCE-Desktop und allen installierten Programmen komplett deutschsprachig mit ganz wenigen Ausnahmen bei EOS-eigenen Tools. Thema der neuen „Artemis“-Version ist die Apollo-Mission und Standardhintergrund am Anmeldebildschirm und am Desktop dazu passend eine steil startende Rakete: Hier wird der Mythos vom schnellen Arch gepflegt, der sich dann tatsächlich bestätigt: Das System bootet auf einem älteren Rechner (allerdings auf SSD) in 10 Sekunden. Da kann ein Ubuntu 22.04 nicht mithalten (13 Sekunden). Wie flink ein klassisch installierter Firefox agieren kann, wird Snap-geschädigte Ubuntu-Nutzer ebenfalls positiv überraschen. Auch der Start von Software-Schwergewichten wie Gimp ist praktisch per Mausklick geschehen. Wir kennen mit Bodhi Linux nur ein einziges Debian/Ubuntu mit vergleichbaren Reaktionszeiten.
Ressourcen-technisch fordert EOS mit dem Standarddesktop XFCE nicht mehr, aber auch nicht weniger als ein Debian/Ubuntu, nämlich etwa 650 MB ab Anmeldung. Auf der Festplatte bleibt es nach der Installation deutlich unter 5 GB, sollte aber für den Dauerbetrieb wie jedes Linux wenigstens 50 bis 100 GB auf der Systempartition vorfinden (Benutzerdaten nicht eingerechnet).
Hardware-technisch gibt es mit den von uns genutzten Standardkomponenten keinerlei Einschränkungen. EOS verwendet Kernel 5.18 und arbeitet problemlos im Multimonitorbetrieb, erkennt alle Medien, akzeptiert Linux-bewährte WLAN-Adapter, beherrscht ACPI-Ruhezustände und erkennt Funktions-Sondertasten auf Notebooks.
Nach der Anmeldung meldet sich der komplett deutsch lokalisierte „Welcome“-Dialog (eos-welcome). Die Angebote „Spiegelserver“ und „System-Update“ sollte man nach der Installation umgehend aufgreifen. EOS ist Terminal-dominiert, aber viele Aktionen wie eben auch die Systemaktualisierung kann man sich mit „Welcome“ vereinfachen. Es handelt sich um eine umfangreiche Kommando- und Scriptsammlung, die man als Autostart zwar abschalten („Nicht mehr starten“), aber als Favorit im Menü oder in der Systemleiste bereithalten sollte.
EOS arbeitet wie die allermeisten neueren Distributionen mit dem Init-Dienst systemd. Komponenten und Kommandos von systemctl, journalctl funktionieren daher wie gewohnt.
Paketmanager und Installationen
EOS nutzt die Arch-Paketquellen, bietet für den Software-Bezug aber nur ein sehr einfaches grafisches Programm. eos-quickstart („EndeavourOS Quickstart Installer“) zeigt eine kategorisierte Auswahl prominenter Software, die nach Markierung und „Install Now“ umstandslos installiert wird. Schwergewichte wie Chromium, Gimp, Libre Office, Thunderbird, VLC sind hier in jedem Fall anzutreffen. Im Dauerbetrieb und für die Installation speziellerer Tools wird das aber nicht ausreichen: Schon die Suche nach einem SSH-Server oder einem Werkzeug wie Filezilla bleibt hier vergeblich.
Basiskommandos des Terminal-Paketmanagers pacman sind daher unerlässlich. Dieser bezieht die Software aus den offiziellen Arch-Quellen. Ein zweiter Paketmanager yay kann zusätzlich die inoffiziellen AUR-Quellen nutzen. Wir empfehlen Arch-Einsteigern, zunächst bei den Arch-Quellen und bei pacman zu bleiben. Fürs Erste genügt (Beispiel)
pacman -Ss filezilla
zur Suche nach Software, ferner
sudo pacman -S filezilla
zur Installation und
sudo pacman -R filezilla
zur Deinstallation. Das komplette Systemupdate mit
sudo pacman -Syu
kann man alternativ auch mit dem Terminal-Link im Hauptmenü „System -> UpdateInTerminal“ erledigen oder mit dem freundlichen „Welcome“. Letzteres weist unter „Assistent -> Alle Arch-Pakete durchsuchen“ außerdem auf das Inventar unter https://archlinux.org/packages, das eine bequeme Online-Suche erlaubt. Passendes kann dann mit pacman -S […] installiert werden.
Systemverwaltung und Desktop
Systemverwaltung und Desktop
Neben den genannten grafischen EOS-Werkzeugen eos-quickstart (limitierter Software-Installer) und eos-welcome (wichtige klickfreundliche Scriptsammlung) bleibt es Arch-typisch spartanisch. Nahezu alles, was unter /usr/bin/eos-* an Systemprogrammen zu finden ist, sind Terminal-nahe Helfer. An grafischen EOS-Tools, die auch im Menü auftauchen, ist neben den bereits genannten nur noch der eos-update-notifier zu erwähnen, der die Frequenz der Systemaktualisierung einstellen kann. Im Übrigen überlässt EOS die grafische Systemverwaltung dem jeweils benutzten Desktop. Wer Terminal-Defizite hat, ist daher mit Desktops wie Gnome, KDE oder Cinnamon am besten beraten, die eine große Reichweite auch in Richtung Systemverwaltung besitzen. Nutzern ohne Terminal-Affinität wird man diese beeindruckend schnelle Distribution dennoch nicht empfehlen können.
Die Filterbefehle Grep, Awk, Xargs & Co sind unentbehrlich, um den Textoutput von Terminalbefehlen zielsicher zu filtern. Der Beitrag erklärt die wichtigsten Filter und die Prinzipien der Benutzung.
Grep: Der horizontale Zeilenfilter
Grep ist der häufigste Textfilter, um eine eventuell seitenlange Liste auf die relevante(n) Zeile(n) abzukürzen. Grep ist relativ eingängig, weil man einfach den Textstring angibt, den die benötigten Zeilen enthalten müssen (oder nicht enthalten dürfen).
Im einfachsten Fall geht es im interaktiven Terminal nur darum, die Ausgabe übersichtlich zu halten. So zeigt etwa der mount-Befehl auf Ubuntu-Systemen mit zahlreichen Snaps überwiegend Mountpunkte, die für den Benutzer irrelevant sind. Der Befehl
mount | grep "/dev/sd"
verkürzt auf die physischen Laufwerke. In manchen Fällen ist es sinnvoll, den Filter mit „-v“ umzudrehen, um nur die Zeilen zu erhalten, wo der String nicht vorkommt:
apt list --installed | grep -v "automatisch"
Dies zeigt alle installierten Software-Pakete, die manuell nachinstalliert wurden, also nicht zum „automatisch“ mitgelieferten Umfang gehören.
Für Scripts ist es oft erforderlich, genau eine einzige Ausgabezeile eines Standardbefehls auszuwerten. Der Suchstring muss dann entsprechend eindeutig ausfallen:
free -m | grep "Speicher:"
Die weitere Auswertung der verbleibenden Zeile kann dann das Werkzeug Awk übernehmen (siehe unten). Für Scripts ist ferner die Tatsache wichtig, dass Grep den Errorlevel „1“ zurückmeldet (abzufragen mit „$?“), wenn der Textstring nicht gefunden wird:
echo $file | grep -i ".7z"
if [ $? -eq 0 ] then …
Im Prinzip eignet sich Grep auch für die Textrecherche in vielen Dateien. Das Kommando
grep -r "Bunsenlabs" .
durchsucht ab dem aktuellen Verzeichnis rekursiv alle Dateien nach dem Suchstring. Da es sich aber um reine Textdateien handeln muss, wenn die Ausgabe lesbar sein soll, bleibt der Nutzwert von Grep als Desktopsuche begrenzt. Textprofis werden dafür eher zu Recoll oder Docfetcher greifen. Die Parameter „–after-context=“ und „–before-context=“, die auf Wunsch Zeilen nach und vor dem Suchtreffer ausgeben, zielen ebenfalls auf solche Textrecherche und seien hier zumindest erwähnt.
Hinweis: Die Varianten Egrep, Fgrep, Rgrep bleiben hier unberücksichtigt. Sie sind allesamt über Grep-Schalter zu erreichen.
Sort: Zeilenreihenfolge umstellen
Sort ist ein Filter, der die Datenmenge insgesamt unverändert lässt (Ausnahme Schalter „-u“). Das Sortieren kann aber die Daten in völlig neue Zusammenhänge setzen, die besseren Überblick und schnelle Auswertung ermöglichen.
Sort sortiert die Ausgaben anderer Befehle alphabetisch (Standard) oder numerisch (Schalter „-n“), bei Bedarf auch nach der gewünschten Spalte (Schalter „-k“). Vor allem die Sortierung von Listen nach einer beliebigen Spalte bringt rückt Informationen zusammen, die aus den ursprünglichen Daten nie ersichtlich wären: Der Befehl tree -isa listet alle Dateien unterhalb des aktuellen Verzeichnisses mit Bytezahl auf. Mit
tree -isa |sort -k2 -n
wird die Liste numerisch („-n“) nach dieser Größenangabe sortiert, sodass die größten Dateien am Ende erscheinen. Sortiert werden muss – etwas irritierend – nach Spalte 2, weil die beginnende Klammer „[ “ als erste Spalte zählt.
Als weiteres Beispiel sei der Befehl ps –A angeführt, der alle laufenden Prozesse zeigt. Die Ausgabe ist standardmäßig nach der PID (Prozess-ID) sortiert, was bei der Suche nach einem bestimmten Programm unübersichtlich ist. Sort macht daraus mit
ps –A | sort –k4
eine alphabetische Liste:
Sort kann nicht nur nach einer bestimmten Spalte sortieren („-k“), sondern dies auch dort, wo ungewöhnliche Spalten- und Feldbegrenzer vorliegen (Schalter „-t“). Typisch ist etwa das Semikolon in CSV-Dateien:
cat Buchungen.csv | sort -t ";" -n -k7
Wenn Spalte 7 die Buchungsbeträge enthält, wird die komplette Tabelle numerisch nach diesen Werten sortiert.
Mit Schalter „-u“, der ausschließlich horizontal und zeilenbezogen arbeitet, filtert Sort bei der Ausgabe langer Listen oder Dateien doppelte, identische Zeilen weg:
cat .bash_history | sort -u
Wer diesen Räumdienst direkt in der Originaldatei übernehmen will, nutzt am besten Sponge:
cat .bash_history | sort -u | sponge
Dies erspart den lästigen Umweg über eine sekundäre, temporäre Datei.
Hinweis Uniq: „sort -u“ macht das kleine Hilfsprogramm Uniq weitgehend überflüssig. Der Mehrwert gegenüber „sort -u“ liegt allenfalls bei der Analyse, zumal Uniq grundsätzlich nur funktioniert, wenn ein Sort-Filter vorangestellt wird:
cat .bash_history | sort | uniq -c
Dies zeigt alle Zeilen mit der Anzahl eventueller Wiederholungen. Jeder Wert größer als „1“ bedeutet einen doppelten oder vielfachen Eintrag.
Awk: Der vertikale Spaltenfilter
Awk ist das umfangreichste Filterwerkzeug und zerlegt die Textausgabe von Terminalkommandos in Spalten und Felder. Damit können Sie Spalten einer Liste ausblenden oder umstellen oder in einer Ausgabezeile genau einen bestimmten, einzelnen Wert ermitteln und weiterverarbeiten. Awk kann außerdem vorgefundene Werte gleich mathematisch verrechnen und etwa Additionen oder Divisionen erledigen.
Awk ist ein selbständiges Programmiertool. Die folgenden Beispiele können diesen Umfang nicht annähernd wiedergeben und fokussieren sich auf wichtige Aufgaben im interaktiven Einsatz oder für einfache Bash-Alias oder Funktionen. Die Arbeitsweise von Awk zeigt ein ganz simples Beispiel:
echo Anna Sepp Hans Berta | awk '{print $1 $4 $3 $2}'
Die Felder (hier Namen) werden umgestellt, sind aber ohne Trenner schlecht lesbar – also:
echo Anna Sepp Hans Berta | awk '{print $1 "\t" $4 "\t" $3 "\t" $2}'
Dies setzt einen Tabulator zwischen die Felder.
Nun wird es ernster: Awk soll aus dem Standardbefehl Top die aktuelle CPU-Last abgreifen und nur diesen einzigen Wert anzeigen:
top -n1 | grep "CPU(s)" | awk '{print 100-$8"%"}'
Feld 8 in der Zeile „CPU(s)“, die Grep vorfiltert, enthält den aktuellen Idle-Wert. Von 100 subtrahiert, ergibt sich die aktuelle CPU-Last.
Eigentlich ist Awk in diesem Fall gar nicht auf Grep angewiesen: Wenn eine Befehlsausgabe wie der Header von Top genau normiert ist, also von vornherein klar, in welcher Zeile welche Information erscheint, dann kann Awk auf die Nachhilfe von horizontalen Filtern verzichten. Mit „NR==“ lässt sich die exakte Zeilennummer einstellen und nachfolgend auswerten. Das folgende Beispiel ermittelt die aktuelle RAM-Belegung aus Zeile 4 des Top-Kommandos:
top -n1 | awk 'NR==4 {print int($8) " MB belegt von " int($4) " MB"}'
Dies wird ein Ergebnis wie „524 MB belegt von 3732 MB“ erzeugen. Die Funktion „int“ ist nicht zwingend, bereinigt aber auf gut lesbare Ganzzahlen.
Auf diese Weise wird es relativ einfach, gesuchte Werte nicht nur auszugeben, sondern als Bash-Variable zur Weiterverarbeitung abzulegen:
RAM_used=$(top -n1 | awk 'NR==4 {print int($8)}')
Danach steht die Variable $RAM_used für Scripts oder Funktionen zur Verfügung.
Awk kann auch eine Zeilennummerierung ausführen:
find . | awk '{print NR "\t" $0}'
Hier will offenbar jemand wissen, wie viele Dateien sich im aktuellen Ordner befinden: Awk nummeriert die Zeilen und hängt nach Tabulator die komplette Zeile an, wie sie Find anliefert („$0“ bedeutet die gesamte Zeile ohne Feldauswahl).
Wenn statt einer klaren Tabellenstruktur die Felder durch Trenner wie Semikolon, Doppelpunkt oder Slash definiert sind, dann hilft der Awk-Schalter „-F“ („Field“):
cat /etc/passwd | awk -F: '{print $3 "\t" $1}'
Die Datei /etc/passwd nutzt den Doppelpunkt als Feldtrenner, daher „-F:“. Die Ausgabe wird dann auf Username und UID reduziert, die Spalten umgedreht (Name zuerst) und zur besseren Lesbarkeit ein Tabulator zwischengeschaltet (Tipp: Der Backslash ist das typische Signal für Sonderzeichen in Bash-Filtern – hier „\t“ für den Tabulator).
Das letzte Beispiel zeigt zugleich noch einmal, dass Awk die Spalten eines Ausgangbefehls beliebig umstellen und unnötige Spalten ausblenden kann.
Column: Spaltenzerlegung
Dieses Tool verbessert die Lesbarkeit unformatierter Listen signifikant. Wer Awk beherrscht, wird Column zwar nicht oft brauchen, aber das Tool ist handlich und setzt passende Tabulatoren nach Berechnung aller Daten. Es kann auch als Vorbereitung dienen, um eine weitere Zerlegung durch Awk zu erleichtern.
Vergleichen Sie die überaus schlecht lesbare Ausgabe von mount mit dieser Variante
mount | column -t
oder den Befehl cat /etc/passwd mit dieser Tabellendarstellung:
cat /etc/passwd | column -s: -t
Column ersetzt hier das Trennzeichen „:“ (Schalter „-s“ steht für Separator) durch Tabulatoren. Sortiert man das Ganze dann noch mit
cat /etc/passwd | column -s: -t | sort -n -k3
numerisch nach der User-ID in Spalte 3, ist das Resultat mit der Originaldatei kaum noch zu vergleichen. Anders als Awk oder Sed, die ebenfalls Tabulatoren einsetzen können, errechnet Column eine passende Tabulatorweite für alle Spalten der gesamten Datenmenge.
Column schafft aber auch Felder, wo vorher keine waren. Der schon früher genannte Befehl
apt list --installed
trennt die Paketnamen durch einen „/“-Slash von der nachfolgenden Paketquelle. Mit
apt list --installed | column -s/ -t
wandeln Sie den Slash-Trenner um in eine gut lesbare Tabelle und mit
bleiben nur noch die Paketnamen der ersten Spalte übrig, die sich dann für eine Masseninstallation verwenden lässt. Hierfür ist das Tool Xargs einschlägig (siehe unten).
Hinweis: Für genau dasselbe Ergebnis des letzten Befehls reicht mit
apt list --installed | awk -F/ '{print $1}'
auch das begabte Awk allein.
Cut: Spalten definieren und entfernen
Column und vor allem Awk bieten alle Möglichkeiten, um vertikale Spalten und Felder darzustellen, zu analysieren oder bei Bedarf durch Umwandlung von Trennzeichen erst herzustellen. Das Tool Cut ist technisch weitaus einfacher, aber gerade deswegen oft die unkompliziertere Alternative.
Cut eignet sich ideal, um eine bestimmte Spalte aus einer Liste zu filtern, die ihre Felder mit einem Delimiter-Zeichen wie Semikolon, Komma, Doppelpunkt, Bindestrich oder Slash trennt. Die wichtigsten Schalter von Cut sind „-d“ (Delimiter), der das Trennzeichen definiert, und „-f“ für die Angabe der gewünschten Spalten (Fields). Der Befehl
echo Anna Sepp Hugo | cut -d" " -f2
wird folglich mit „Sepp“ antworten. Das letzte Beispiel oben, das mit Column und Awk eine Paketliste erstellte, ist daher mit dem Tool Cut noch einfacher zu realisieren:
apt list --installed | cut -d/ -f1
Mit dem Schalter „-d“ wird hier der Slash „/“ als Spaltentrenner definiert und mit „-f1“ nur noch die erste Spalte angezeigt, also die puren Paketnamen. Im folgenden Beispiel
cut -d: -f1,3 /etc/passwd
reduziert Cut die genannte Datei auf die zwei Felder Usernamen und UID.
Sed: Zeichen ersetzen oder löschen
Der Streameditor Sed eignet sich sowohl zur Dateibearbeitung als auch zur Korrektur des Terminaloutputs. Er ersetzt einzelne Zeichen oder Zeichenfolgen durch einen anderen String, löscht störende Zeichen oder fügt zusätzliche ein.
Sed kann automatische Textersetzungen oder Löschungen in allen Dateien des aktuellen Verzeichnisses erledigen. Ferner kann es auch als Kosmetik für schlecht lesbare Terminalbefehle dienen. Wenn das mächtige Werkzeug viele Dateien bearbeiten soll, ist Vorsicht geboten und zumindest ein vorhergehender Test zu empfehlen, der nur im Terminal angezeigt wird:
sed 's/domain.org/neue.domain.de/g' *.html
Jedes Vorkommen von „domain.org“ wird durch die neue Adresse korrigiert. Mit zusätzlichem Schalter „-i“ (oder „–in-place“) erledigt Sed die Aktion tatsächlich.
Hocheffizient, aber auch riskant sind Löschkommandos mit „d“:
sed -i '/bind /d' ~/.bashrc
Hier wird jede Zeile der angegebenen Datei gelöscht, die mit dem Kommando „bind “ beginnt.
Sed ist aber auch für die interaktive Kosmetik am Terminaloutput nützlich. Die Ausgabe des Systempfads mit
echo $PATH
trennt die Ordner bekanntlich schlecht lesbar mit Doppelpunkt. Folgende Alternative
echo $PATH | sed 's/:/\n/g'
ersetzt alle Doppelpunkte durch einen Zeilenumbruch („\n“) und macht die Ausgabe übersichtlich. Wie schon bei Awk angemerkt, ist der Backslash wieder das typische Signal für ein nachfolgendes Sonderzeichen.
Xargs: Andere Befehle füttern
Das Tool Xargs gehört in diesen Kontext, obwohl es selbst keine Filterleistung bietet. Aber es gibt vorher gefilterte Argumente oder den Inhalt einer Dateiliste direkt an einen anderen Befehl weiter. Damit ist es eine nützliche Abkürzung, die eine weitaus umständlichere Scriptverarbeitung erspart.
Im ersten einfachen Beispiel wird eine vorher angelegte Paketliste
apt-mark showmanual > liste.txt
später an diesem oder auf einem anderen System mit
cat liste.txt | xargs apt install
in einem Rutsch installiert. Xargs übergibt einfach den kompletten Inhalt der Textdatei an den Paketmanager.
Diese beiden nachfolgenden Befehle sind funktionsidentisch:
Das zeilenweise Abarbeiten mit „-n 1“ ist notwendig, wenn die Listendatei für jedes Argument eine eigene Zeile nutzt. Xargs kann auch für eine besser lesbarere oder ergänzte Terminalausgabe sorgen:
Die Ausgabe von free wird auf die Zeile mit „Speicher“ gekürzt. Awk filtert dort die Werte für den Gesamtspeicher ($2) und den benutzten Speicher ($3) und berechnet den belegten Prozentwert (bereinigt durch „int“ auf eine Ganzzahl). Damit nicht die bloße Zahl geliefert wird, übergibt Xargs den Wert an Echo. Weil der vorher ermittelte Wert nicht am Ende des Echo-Befehls steht, muss Xargs mit Schalter „-i“ verwendet werden. Die Klammern „{}“ definieren dann die Stelle für den Übergabewert.
Bash-Filter: More & Less
Es gibt eine Reihe weiterer (Mengen-) Filter wie More und Less zum zeilenweisen Blättern in der Ausgabe, Head und Tail zur Reduktion der Ausgabe auf die ersten oder letzten Zeilen. Dies nur der Vollständigkeit halber – denn dieser letzte Abschnitt ist eher ein Fazit.
In der Bash-Shell geht mit den genannten Tools im Prinzip alles. Wie bei allen textbasierten Shells ist es aber kein Vergnügen. Die Erbsenzählerei zum benötigten Feld für eine Awk-Auswertung ist mühsam, aber immerhin lohnend. Richtig ärgerlich ist, dass Bash-Tools keine einheitlichen Schalter haben und etwa einen Spaltentrennzeichen mal mit „-F“, mit „-d“ oder mit „-t“ definieren. Eine weitere Herausforderung ist es, dass Tools ähnliche Funktionen enthalten, die unterschiedliche Lösungen für ein und dasselbe Problem bieten. Unterm Strich sollten Grep, Sort und Awk alle Aufgaben erledigen – sofern man sie richtig beherrscht. Sed ist ein Editierautomat, der sich vornehmlich an Script- und Webentwickler richtet.
Wie lautet gleich wieder das Kennwort für das Gast-WLAN? Wie ist die öffentliche IP-Adresse? Router wie die Fritzbox verwalten so viele Infos, geben sie aber nur her, wenn man sich durch die Konfigurationsoberfläche klickt. Oder?
Gut Informierte wissen wahrscheinlich, dass sich die Fritzbox-Konfiguration durch PHP-Scripts auslesen und in vielen Belangen sogar steuern lässt. Theoretisch genügen dafür relativ komplizierte Befehle der Download- und Upload-Tools wget und curl. Komfortabler ist das Paket miniupnpc mit seinem Programm upnpc – dies allerdings mit eng begrenzter Reichweite. Das umfangreichste PHP-Projekt zur Fritzbox-Steuerung ist die Sammlung fb_tools (Fritzbox-Tools) von Michael Engelke. Was man damit alles anstellen kann, zeigt dieser Beitrag.
Definition und Umfang
Die Fritzbox-Tools sind eine umfangreiche Sammlung von PHP-Scripts, die über Terminalbefehle ausgelöst werden. Je nach Befehl kann man Informationen aus der Fritzbox auslesen, Konfigurationsbackups anlegen und wieder zurückschreiben und viele Einzelfunktionen von außen starten, so etwa Smarthome-Aktoren von AVM oder die LED-Anzeige der Fritzbox.
Um Missverständnissen vorzubeugen: Die Fritzbox-Tools können – mit einigen wenigen Ausnahmen – nicht mehr als das, was ein zutrittsberechtigter Fritzbox-Nutzer im Normalfall auf der Konfigurationsoberfläche erledigt. Ihre Reichweite ist sogar begrenzter als die Fritzbox-Oberfläche, weil AVM nicht alle Funktionen für PHP-Scripting offenlegt (so offenbar der gesamte Bereich WLAN/Funknetz). Der entscheidende Vorteil der Fritzbox-Tools ist es, dass Informationen wie die öffentliche IP-Adresse, die aktuelle Anrufliste oder der Online-Zähler mit einem vorbereiteten Terminalbefehl in zwei Sekunden ausgelesen sind. Und mehr noch: Als Terminalbefehl lassen sich solche Aktionen auch automatisch erledigen, etwa als Cronjob oder Autostart auf einem beliebigen Linuxsystem im Netzwerk.
Einfache Installation auf Debian/Ubuntu
Die Fritzbox-Tools laufen im Prinzip auf jedem Betriebssystem. Weil aber PHP installiert sein muss, ist die Einrichtung auf Linux am einfachsten. Auf jedem Update-gepflegten Linux wird eine PHP-Version 7.x für die Konsole („cli“) nämlich bereits vorliegen. Außerdem gibt es mindestens eine interessante Funktion der Tools, die Open SSL benötigt – und auch dies ist Standard unter Linux. Für Debian/Ubuntu-basierte Distributionen genügt daher der Download des winzigen DEB-Pakets „fb-tools.deb“ von www.mengelke.de/Projekte/FritzBox-Tools (nur 90 KB) und die Installation per Doppelklick oder im Terminal:
sudo dpkg -i fb-tools.deb
Für Linux-affine Windows-Nutzer ist genau derselbe Weg zu empfehlen, sofern sie ein Debian oder Ubuntu im „Windows Subsystem für Linux“ (WSL) verwenden. Dies ist wesentlich einfacher, als der Anleitung für die Installation unter Windows zu folgen.
Erste Umschau: Auf den typischen Hilfeschalter „-h“
fb_tools -h
meldet die Toolsammlung die verfügbaren Hauptbefehle (Modes). Einige dieser Befehle besitzen wieder diverse Unterbefehle (Funktionen), wovon Sie sich mit
fb_tools konfig -h
fb_tools smarthome -h
überzeugen können. Es gibt nun einige einfache Modes (ohne Unterbefehle), die ohne jede Benutzer-Authentifizierung sofort Antworten liefern:
fb_tools boxinfo
fb_tools systemstatus
Damit erhalten Sie die Basisdaten über Modell, Hardwarerevision, Provider, Laufzeit, Neustarts. Ebenfalls selbsterklärend ist die Abfrage der öffentlichen IP-Adresse:
fb_tools getip
Bei anderen Modes wie „traffic, anrufliste, led, konfig, smarthome“ werden Sie hingegen keinen Erfolg haben. Das Tool meldet dann „Anmeldung fehlgeschlagen, SID.lua ist ungültig“. Das bedeutet, dass Sie sich für diese Modes und Funktionen an der Fritzbox anmelden müssen.
Anmeldung und Fritzbox-Einstellung
Alle wirklich interessanten Funktionen setzen eine Anmeldung voraus. Die verläuft aber denkbar einfach innerhalb des Kommandos:
fb_tools Geh3im@fritz.box anrufliste
Dies genügt, falls der Router nur durch ein allgemeines Passwort geschützt ist. Wenn Sie in der Fritzbox Benutzerkonten angelegt haben, benötigen Sie folgende Syntax
fb_tools sepp:Geh3im@fritz.box anrufliste
mit der Abfolge „[Konto:Kennwort@Gerät]“. Und noch ein akademisches Detail: Wer sich in mehreren Netzen befindet, muss den angesprochenen Router statt mit „fritz.box“ genau adressieren (was aber auch sonst nie schadet):
fb_tools sepp:Geh3im@192.168.178.1 anrufliste
Mit dieser Syntax und somit korrekter Anmeldung sind aber auf jüngeren Fritzboxen immer noch nicht sämtliche Funktionen realisierbar. Die Lösung dafür liegt in der Fritzbox-Konfiguration unter „System → Fritz!Box-Benutzer → Zusätzliche Bestätigung → Ausführung bestimmter Einstellungen und Funktionen zusätzlich bestätigen”. Die Option ist standardmäßig aktiviert und verhindert einige Kommandos der Fritzbox-Tools. Es ist Ermessensfrage, ob man dies dauerhaft abschalten will. Zumindest vorübergehend ist das nötig, um einen der interessantesten Befehle abzusetzen:
Dieses Kommando liest im Klartext sämtliche Verbindungsdaten aus, unter anderem Provider-Zugangsdaten, WLAN-Passwörter, Telefonie-Passwörter, Internet- und MyFritz-Onlinezugangsdaten. Diese Daten sind in dieser Form und Vollständigkeit weder über die Fritzbox-Oberfläche noch in der (verschlüsselten) Konfigurationssicherung erreichbar.
Weitere Beispiele
Mit dem Mode „konfig“ können Sie interaktiv oder automatisiert Konfgurationssicherungen des Routers ausführen:
Mit „konfig import“ lässt sich eine Sicherung später wieder zurückspeichern.
Der einfache Mode „traffic“ hat keine Unterfunktionen und spuckt nach
fb_tools […] traffic
die Zusammenfassung aus, die in der Konfigurationsoberfläche unter „Internet -> Online-Monitor -> Online-Zähler“ zu finden ist. Der Mode „Ereignisse“ bietet das Systemprotokoll („System -> Ereignisse“) und hat dabei genau dieselben optionalen Filter wie die Oberfläche:
fb_tools […]ereignisse filter:system
Einfache, aber mindestens im zweiten Fall interessante Aktionen lösen folgende Kommandos aus:
fb_tools […] led off
fb_tools […] reconnect
Die LED-Leuchten lassen mit „on“ jederzeit wieder aktivieren. „reconnect“ darf als weiteres Highlight der Toolsammlung gelten, weil die Fritzbox-Oberfläche zur Neuverbindung nur den kompletten und zeitaufwändigen Gerätestart vorsieht – obendrein verbuddelt unter „System -> Sicherung -> Neustart“. Dass „reconnect“ die Fritzbox tatsächlich in Sekunden neu verbindet, können Sie dem Systemprotokoll entnehmen („System -> Ereignisse“ oder das entsprechende Kommando der fb_tools).
Besonders ergiebig ist der Mode „SmartHome“, der mit
fb_tools sepp:Geh3im@192.168.178.1 smarthome list
alle Smarthome-Komponenten („Aktoren“) mit AIN-Kennziffer anzeigt (AIN=Aktor Identifikationsnummer). Einschränkend ist zu bemerken, dass solche Steuerung eine homogene und ausschließliche Nutzung von AVM-Produkten voraussetzt. Da der Verfasser solche Funksteckdosen und Sensoren nicht nutzt, vertrauen wir an dieser Stelle auf Aussagen des Tool-Entwicklers und von Kommentaren im Web.
Auf Basis der mit „smarthome list“ ermittelten Gerätekennungen, lässt sich die betreffende Hardware dann detailliert steuern: Ein AVM-Thermostat mit der AIN „18“ kann dann etwa mit folgendem Befehl
fb_tools […] smarthome set 18 20
auf exakt 20 Grad gesetzt werden oder mit
fb_tools […] smarthome set 18 spar
auf eine in der Fritzbox („Smart Home -> Geräteverwaltung“) hinterlegte Spartemperatur.
Oracle Virtualbox kann alles – und viel mehr, als dieser knappe Beitrag zeigen kann. Hier geht es nur um die Grundlagen – die Installation der Software, die Einrichtungsschritte für virtuelle Maschinen (VMs) und die allerwichtigsten Optimierungsmöglichkeiten.
1. Installation: Vollständig mit Erweiterungspaket
Die aktuelle Version (7.0.4) von Virtualbox erhalten Sie für alle Betriebssysteme unter www.virtualbox.org/wiki/Downloads. Zu den Varianten für die unterschiedlichen Linux-Distributionen führt dort der Link „Linux distributions“. Den Download installieren Sie dann nach Rechtsklick mit dem Paketmanager der Distribution, unter Windows durch Doppelklick des EXE-Programms. Anders als die Linux-Varianten bietet der Windows-Installer eine Selektion von Komponenten, wobei aber außer der Python-Unterstützung alle Optionen zu empfehlen sind.
Exkurs: Virtualbox ist selbstverständlich auch in den Paketquellen der Distributionen erhältlich. Dies aber in älteren Versionen 6.x, sodass der Vorteil einer automatischen Aktualisierung in diesem Fall keiner ist: Die Updates erstrecken sich nämlich nur auf die veraltete Hauptversionsnummer „6“. Eine weitere Installationsoption unter Linux wäre es noch, die Oracle-Paketquelle einzubinden und auf diesem Weg Updates für Version 7 zu erhalten. Dies führen wir hier nicht näher aus (siehe www.virtualbox.org/wiki/Linux_Downloads), da die Heft-DVD dafür eine Komplettlösung anbietet. Das dort vertretene Ubuntu 22.04.1 hat ein vorinstalliertes Virtualbox 7, das sich via Systemaktualisierung aktuell hält.
Erweiterungspaket: Auf der allgemeinen Downloadseite erscheint auch das „Oracle VM VirtualBox Extension Pack“. Dieses darf aus lizenzrechtlichen Gründen nicht mit dem freien Virtualbox ausgeliefert werden, ist aber für private Nutzung frei und kostenlos. Nach dem Download dieses Erweiterungspakets starten Sie Virtualbox und gehen im Virtualbox Manager auf „Werkzeuge“. Im mittleren Hauptfenster klicken Sie dann auf die Schaltfläche „Installieren“ und navigieren zum Download. Da der Dialog nur Dateien mit der Extension „.vbox-extpack“ anzeigt, ist die Auswahl einfach und eindeutig. Nach einem Warnhinweis startet die Installation.
Das Erweiterungspaket ist zwar optional, aber für häufige Virtualbox-Nutzung uneingeschränkt zu empfehlen. Hauptgrund ist die Unterstützung für USB 2.0 und 3.0, aber auch RDP-Fernsteuerung für Windows-VMs kann ein wichtiges Motiv sein. Das Erweiterungspaket bietet noch weitere Extra-Funktionen wie Netboot oder AES-Festplattenverschlüsselung.
Gruppenzuweisung: Eine letzte Aktion vervollständigt die Installation unter Linux (unter Windows unnötig): Fügen Sie die Systembenutzer, die Virtualbox verwenden sollen, zur Gruppe „vboxusers“ hinzu:
sudo adduser [User] vboxusers
„[User]“ ersetzen Sie durch den Kontonamen des Benutzers. Wiederholen Sie den Befehl für alle gewünschten Konten. Melden Sie sich dann bei Linux ab und wieder an oder starten Sie das System neu. Diese vollständige Installation mit Erweiterung und Gruppenzuweisung ist für eine sporadische Nutzung von Virtualbox nicht zwingend, erspart aber eventuelle spätere Irritationen – insbesondere beim Versuch, USB-Geräte in einer VM zu nutzen.
2. Allgemeine Einstellungen
Der Start von Virtualbox am Desktop öffnet den „Oracle VM VirtualBox Manager“ – zunächst nur mit dem Eintrag „Werkzeuge“. Über eine grundsätzliche Einstellung können Sie vorab entscheiden, dies aber bei Bedarf auch später umstellen: Unter „Datei -> Einstellungen -> Allgemein“ ist der Pfad vorgegeben, wo Virtualbox seine Dateien ablegen wird. Da dies viel Kapazität fordern wird, ist hier eventuell von vornherein ein Ort jenseits von „/home“ besser geeignet.
Unter “ Datei -> Einstellungen -> Eingabe -> Virtuelle Maschine“ lohnt sich in jedem Fall eine Durchsicht der Standard-Hotkeys. Den „Host“-Key mit Kombinationen wie Host-C, Host-L, Host-F, Host-Pos1 werden Sie ständig benötigen, um die VM-Darstellung (Vollbild; Skaliert, Fenster) zu ändern oder das VM-Fenstermenü zu aktivieren (Host-Pos1). Voreingestellter Host-Key ist die rechte Strg-Taste. Alle Hotkeys sind individuell einstellbar, auch der Host-Key.
3. Eine virtuelle Maschine einrichten
Mit der Schaltfläche „Neu“ oder „Maschine -> Neu“ erstellen Sie eine VM. Den „Namen“ vergeben Sie beliebig. Als „Ordner“ ist voreingestellt, was unter „Datei -> Einstellungen -> Allgemein“ als Standard gilt. Wichtig ist das „ISO Abbild“, mit dem die Installation des neuen Systems erfolgt. Navigieren Sie hier über „Ändern“ zum Installationsmedium des Systems. Dabei handelt es sich über die typischen Live- und Installer-Downloads für Linux-Distributionen oder um das Installations-ISO einer Windows-Version. Sobald dieses Medium eingetragen ist, erkennt Virtualbox automatisch „Typ“ und „Version“ dieses Systems. Falls nicht, wählen Sie „Typ“ und „Version“ manuell. Für Linux sind viele, aber nicht alle Distributionen aufgeführt. Nehmen Sie den Eintrag, der dem System am nächsten kommt, etwa „Ubuntu (64-bit)“ für ein Linux Mint oder „Arch Linux (64 Bit)“ für ein Endeavour OS.
Wenngleich der Assistent die Hardware-Einstellungen von dieser Auswahl abhängig macht, ist diese Aktion – sofern überhaupt nötig – nicht kritisch, denn alle Voreinstellungen lassen sich durch manuelle Änderungen anpassen. Sie sollten aber für beste Kontrolle stets die Option „Unbeaufsichtigte Installation überspringen“ anklicken.
Mit „Vorwärts“ geht es zur RAM-Ausstattung und CPU-Vergabe für die VM. Vier GB und zwei CPU-Kerne sind für die meisten VMs ausreichend. Zum Teil genügt weniger. Die Einstellung hängt nicht zuletzt von der Hardware des Hostsystems ab und von der Frage, ob Virtualbox eventuell künftig sogar mehr als eine VM gleichzeitig mit Ressourcen versorgen soll. Kritisch sind auch diese Vorgaben nicht, da sie sich später – bei ausgeschalteter VM – jederzeit anpassen lassen.
Nach „Vorwärts“ kommt der Punkt „Virtuelle Festplatte“ mit drei Optionen. Im einfachsten Fall brauchen Sie überhaupt keine Festplatte („Keine Festplatte hinzufügen“), dann nämlich, wenn die VM nur ein Linux-Livesystem starten soll. Dann genügt das bereits vorher eingestellte ISO-Image. Soll das System hingegen ordentlich installiert werden, wählen Sie die oberste Option „Jetzt eine virtuelle Festplatte erstellen“. Die Kapazität wählen Sie umso großzügiger, je länger die VM voraussichtlich laufen soll (Updates, Installationen). 30 bis 50 GB sind für Linuxsysteme realistisch, 50 bis 100 GB für Windows.
Wer sich hier nicht sicher ist, sollte die Option „Volle Größe erzeugen“ immer inaktiv belassen (Standard) und damit eine dynamische virtuelle Festplatte erzeugen. Das hat zwei Vorteile – und einen Nachteil:
* Eine dynamische virtuelle Festplatte (VDI-Datei) fordert nur den aktuell nötigen Platz und wächst bis zum angegebenen Maximum. Sie belegt also eventuell nur 10 GB, obwohl 50 GB eingestellt sind.
* Eine dynamische VDI lässt sich später ohne Aufwand erweitern. Unter „Werkzeuge -> Medien -> Festplatten“ gibt es einen Schieberegler wie bei der Ersteinrichtung.
* Eine statische VDI („Volle Größe erzeugen“) ist im späteren Betrieb schneller.
Nach Abschluss des Schrittes „Virtuelle Festplatte“ und „Vorwärts“ ist die Definition der VM beendet und der grafische Assistent zeigt die Zusammenfassung.
Hinweis: Auf die dritte Option „vorhandene virtuelle Festplatte“ gehen wir später ein (Punkt 9).
4. Anpassungen der virtuellen Maschine
Die VM-Einrichtung via Virtualbox-Assistent führt in aller Regel zu einer sofort lauffähigen VM, lässt aber interessante Optionen außen vor. Es lohnt sich praktisch immer, vor dem ersten Start auf das Angebot „Ändern“ zu klicken und alle Optionen durchzugehen. Die Mehrzahl dieser Optionen setzt entweder das allgemeine Erweiterungspaket (Punkt 1) oder die Gasterweiterungen (Punkt 6) voraus:
Nicht optional, sondern unentbehrlich ist im Punkt „Anzeige“ ein hoher Wert für „Grafikspeicher“, am besten immer „128 MB“. Bei manchen Linux-Gastsystemen wählt Virtualbox den Wert so unterdimensioniert, dass die grafische Oberfläche nicht startet. Aktivieren Sie an dieser Stelle außerdem die Option „3D-Beschleunigung aktivieren“.
Unter „Allgemein -> Erweitert“ können Sie durch die „Gemeinsame Zwischenablage“ und „bidirektional“ Inhalte zwischen Host- und Gastsystem über die Zwischenablage austauschen. Dies lohnt sich ebenfalls für „Drag’n’Drop“, um Dateien vom Dateimanager des Hostsystems in den Dateimanager des Gastsystems zu ziehen.
Unter „USB“ sollte nicht nur der USB-Controller aktiviert sein, sondern auch die richtige USB-Version. Diese Angabe orientiert sich am Hostsystem und am USB-Port, wo Sie eventuelle USB-Datenträger voraussichtlich nutzen wollen.
5. Installation des virtuellen Systems
Nach dem Start der VM bootet diese über das virtuelle DVD-Laufwerk das Installationsmedium. Eventuell erwarten Sie von dieser VM gar nicht mehr als den Start eines typischen Linux-Livesystems und eine Installation entfällt somit. Wo dies zutrifft, sollte eine solche VM ausdrücklich „Live“ im Namen tragen (etwa „Knoppix-Live“), um es in der Virtualbox-Liste von installierten VMs zu unterscheiden.
In der Regel wird die VM aber eine virtuelle Festplatte enthalten, auf welche Sie nun das System ordentlich installieren. Der Vorgang unterscheidet sich in keiner Weise von einer normalen, physischen Installation. Er ist allenfalls einfacher, weil nur eine (virtuelle) Festplatte vorhanden ist. Nach Abschluss der Installation und Herunterfahren der VM sollten Sie – wie nach jeder Installation – das Installations-ISO aus der VM-Konfiguration nehmen. Dies erledigen Sie über „Ändern“ im Virtualbox Manager. Entfernen Sie unter „Massenspeicher“ aber nicht das komplette DVD-Laufwerk, sondern nur das eingehängte ISO-Image. Das geht mit der Klickbox ganz rechts neben „Optisches Laufwerk“ und der Option „Entfernt das virtuelle Medium…“. Das virtuelle DVD-Laufwerk selbst kann später noch anderweitig nützlich sein, insbesondere aber für die Installation der Gasterweiterungen.
6. Gasterweiterungen in die VM installieren
Im Unterschied zum allgemeinen Virtualbox-Erweiterungspaket werden die Gasterweiterungen in die jeweilige VM installiert. Gasterweiterungen sind optional, aber mindestens für häufiger genutzte VMs zu empfehlen. Sie enthalten Treiber für die Maus und den virtuellen Grafikadapter, verbessern damit Bildschirmauflösung, Skalierung, Mausverhalten und erlauben direkte Ordnerfreigaben zwischen Hostsystem und Gast-VM.
Die Gasterweiterungen lädt Virtualbox in das virtuelle DVD-Laufwerk einer laufenden VM, wenn Sie auf das VM-Fenstermenü „Geräte -> Gasterweiterungen einlegen“ klicken. Falls die Menüleiste im Vollbild oder im skalierten Anzeigemodus nicht zugänglich ist, verwenden Sie den Hotkey Host-Pos1 (also standardmäßig Strg-Rechts-Pos1). Das Installationspaket erscheint dann im DVD-Laufwerk der VM, und in einer Windows-VM genügt dann der Doppelklick auf „VBoxWindowsAdditions.exe“. Unter Linux müssen eventuell mit dem Terminal zum Pfad des DVD-Ordners navigieren und dann mit
sudo ./VboxLinuxAdditions.run
die Installation starten.
Optionale Gasterweiterungen (hier für Windows-VM): Über das Menü „Geräte“ lädt Virtualbox das Paket in das virtuelle DVD-Laufwerk. Von hier wird es dann in die VM installiert.
7. VM im Netzwerk: Netzwerkbrücke statt NAT
Standardmäßig gilt für VMs wie bei allen Virtualisierern der „NAT“-Modus im Netzwerk: Dabei dient Virtualbox selbst als virtueller Router und weist der VM eine zufällige IP-Adresse zu. Damit kommt die VM ins Internet, bleibt aber im lokalen Heimnetz isoliert. Es ist der VM zwar möglich, sich über die IP-Adressen des Heimnetzes mit Samba- oder SSH-Server zu verbinden, umgekehrt ist aber keine Verbindung zur VM möglich (SSH, Samba, VNC, RDP, Apache…).
Wenn eine VM einen Dienst im Heimnetz anbieten soll, ist eine andere Einstellung erforderlich. Möglichkeiten gibt es mehrere, aber die einfachste erfordert nur einen einzigen Klick und sollte in den meisten Fällen genügen. Gehen Sie bei einer eingerichteten VM nach „Ändern“ auf das „Netzwerk“. Hier finden Sie unter „Netzwerk -> Angeschlossen an“ eine Reihe weiterer Optionen. Mit „Netzwerkbrücke“ verbindet sich eine VM direkt mit dem Heimnetz. Die VM erhält also vom Heimrouter via DHCP eine lokale IP-Adresse genau wie ein physischer Rechner. Das macht die VM zum gleichberechtigten Mitglied des lokalen Netzes, und sie kann dann von jedem anderen Gerät erreicht werden. Die Umstellung von „NAT“ zu „Netzwerkbrücke“ kann im Virtualbox Manager jederzeit und auch für eine aktuell laufende VM erfolgen.
8. Virtuelle Maschinen umziehen
Bei längerer Benutzung von Virtualbox summieren sich schnell einige VMs, die mit großen virtuellen Festplatten die Kapazität der Systempartition überfordern. Wenn alternative Datenträger zur Verfügung stehen, dann ist der Umzug von VMs kein Problem: Sie klicken einfach im Virtualbox Manager mit rechter Maustaste auf die betreffende VM und wählen dann „Verschieben“. Die Option ist nur aktiv, wenn die VM aktuell ausgeschaltet ist. Danach müssen Sie nur noch zum gewünschten, neuen Zielordner navigieren. Virtualbox verschiebt dabei den Ordner mit dem Namen der VM inklusive Konfigurationsdatei (.vbox) und virtueller Festplatte (.vdi).
Wenn Sie ab einem bestimmten Zeitpunkt aus Platzgründen alle neu hinzukommenden VMs an einer anderen Stelle ablegen wollen, dann ändern Sie im Virtualbox Manager mit „Datei -> Einstellungen -> Allgemein“ den voreingestellten Standardpfad für die VMs. Die VMs aus dem bisherigen Standardpfad funktionieren weiterhin.
9. Virtuelle Festplatten von Vmware
Virtualbox kann die virtuellen Festplatten des Vmware Player (*.vmdk) direkt und ohne Konvertierung nutzen. Beim Erstellen einer VM wählen Sie beim Punkt „Virtuelle Festplatte“ die Option „Eine vorhandene virtuelle Festplatte verwenden“ und navigieren dann zur VMDK-Datei. Klicken Sie auf die erste, unbezifferte und kleinste dieser Dateien. Das ist der Verwaltungszeiger auf eventuell zahlreiche Inhaltsdateien einer dynamischen Festplatte. Die restliche Einrichtung der VM verläuft unverändert.
10. Virtualbox via Terminal
Virtualbox ist lückenlos – ohne grafischen Virtualbox Manager – über Terminalbefehle zu bedienen. Ein Motiv dafür werden Desktop-Nutzer angesichts der komfortablen Oberfläche zunächst nicht sehen. Im Netzwerk und mit SSH-Verbindung zum Hostsystem kann diese Option aber nützlich werden. Dann ist nämlich nach SSH-Anmeldung am Hostsystem eine VM etwa mit
vboxmanage startvm "Cent-OS"
übers Netzwerk zu starten. Die auf dem Host vorhandenen VMs und deren genaue Namen kann der Befehl vboxmanage list vms ermitteln. Mit
vboxmanage controlvm "Cent-OS" poweroff
ist eine VM per SSH-Befehl auch wieder zu beenden. Für grafische VM-Desktops ist solche Fernbedienung kaum relevant, wohl aber für VMs, die im Netzwerk eine Serverfunktion erfüllen. Und auf dem lokalen Hostsystem kann die Terminalmethode nützlich sein, um eine VM per Autostart automatisch zu laden.
11. Fertige virtuelle VMs
Virtuelle Maschinen muss man nicht zwingend in Virtualbox konfigurieren, danach manuell installieren und mit Software und Diensten ausstatten. Windows, zahlreiche Linux-Desktops und viele Linux-Server gibt es komplett vorkonfiguriert zum Download. Im Prinzip ersparen Sie sich damit die Hardware-Einrichtung in Virtualbox, die anschließende Installation des Systems und eventuell die Konfiguration eines komplexen Serverdienstes. Ob und wo sich das wirklich lohnt, hängt aber vom Verwendungszweck und vom Nutzer-Knowhow ab.
OVA-Format: Eingepackte PCs
Die standardisierte Hardware virtueller Maschinen macht es möglich, komplette Systeme einzupacken (Appliance) und diese auf jedem anderen Rechner via Virtualisierer zu starten. Als Virtualbox-Nutzer werden Sie theoretisch selbst mühelos zum Appliance-Entwickler, indem Sie eine sorgfältig konfigurierte VM mit dem Menü „Datei -> Appliance exportieren“ als Appliance sichern und weitergeben können. Das Resultat der Aktion ist eine OVA-Datei (Open Virtual Appliance), im Prinzip ein gepacktes TAR-Archiv. Vmware kennt die Methode analog und verwendet dabei das Format OVF (Open Virtualization Format). Dieses kann Virtualbox ebenso wie sein natives OVA-Format mit „Datei -> Appliance importieren“ importieren.
Virtuelle Appliances werden aber nicht immer im OVA-Format angeboten: Die Seite www.osboxes.org liefert zum Beispiel grundsätzlich nur die virtuelle Festplatte aus, also VDI-Dateien für Virtualbox. Was ist der Unterschied zu OVA? Virtuelle Maschinen für Virtualbox bestehen im Wesentlichen nur aus dem VDI-Festplattenabbild und einer kleinen XML-Konfigurationsdatei mit der Endung „.vbox“. Folglich genügt eigentlich die virtuelle Festplatte, denn die Konfiguration für ein System ist mit dem Virtualbox Manager in drei Minuten erstellt. Das OVA-Paket hat daher gegenüber einem puren VDI-Abbild nur den kleinen Vorteil, die Konfiguration mitzuliefern, und als zweiten Vorteil eine reduzierte Downloadgröße dank Komprimierung.
Schlüsselfertige Desktop-VMs
Die schon genannte Site www.osboxes.org bietet nur die Festplattenabbilder. Klicken Sie dort auf „VM Images“ und wählen Sie das benötigte Format – VDI für das hier bevorzugte Virtualbox. Die zahlreichen virtuellen Festplatten sind standardmäßig 7z-gepackt. Unter Windows muss daher der Packer 7-Zip vorliegen (www.7-zip.de), unter Linux ist 7z-Unterstützung in der Regel Standard und im Bedarfsfall mit
sudo apt install p7zip p7zip-full
schnell nachgerüstet. Die VDI-Images lassen sich dann einbinden, indem Sie in Virtualbox eine neue virtuelle Maschine erstellen und bei der Festplattenkonfiguration „Eine vorhandene virtuelle Festplattendatei verwenden“. Dazu klicken Sie auf das Ordnersymbol und navigieren zur heruntergeladenen VDI-Datei (der Pfad ist im Prinzip beliebig, aber für bessere Übersicht empfiehlt sich ein Sammelordner für solche VDIs). Nach Auswahl und „Hinzufügen“ ist die VM schon startklar.
Bei den Osboxes-Images handelt es sich überwiegend um Linux-Desktops (von „Android x86“ bis „Zorin OS“), die Sie anschließend beliebig anpassen können. Ganz ohne Pflegeaufwand sind sie dennoch nicht: Wenn Ihnen das voreingestelle Standardkonto – meist „osboxes“ mit Kennwort „osboxes.org“ – nicht zusagt, müssen Sie ein neues Konto einrichten. Oberfläche, Tastatur, Zeitzone sind grundsätzlich US-amerikanisch, was in den Regions- und Sprach-Einstellungen des jeweiligen Systems geändert werden muss.
Weitere Eigenheiten einer Appliance sind nie auszuschließen. Der Download einer fertigen Desktop-Appliance garantiert zwar den besonders schnellen Einsatz, bleibt aber eher eine Empfehlung für die unkomplizierte Wegwerf-VM. Zudem bietet www.osboxes.org nicht durchgehend aktuelle Versionen, sondern zum Teil auch ältere Systeme. Wer eine Desktop-VM für den nachhaltigen Dauerbetrieb einrichten will, nimmt vielleicht doch besser die Mühe der Installation mit dem Originalsystem in Kauf.
Windows-Appliance von Microsoft
Microsoft bietet virtuelle Windows-Maschinen unter https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ kostenlos zum Download an. Das Angebot richtet sich an Entwickler, die Webseiten mit Edge testen wollen. Es handelt sich aber um komplette Windows-Systeme, die 90 Tage ohne Einschränkung laufen. Das verfügbare Windows 10 („MsEdge on Win10 (x64) Stable 1809“) hat eine Downloadgröße von 6,7 GB. Unter „Select platform“ stellen Sie „Virtualbox“ ein. Den gezippten Download entpacken Sie, öffnen die OVA-Datei per Doppelklick in Virtualbox oder wählen dort „Datei -> Importieren“.
Microsoft gibt auf der Website den Tipp, vor dem ersten Start einen Schnappschuss der VM zu erstellen. Stellen Sie diesen vor Ablauf der 90 Tage wieder her, dann lässt sich die Windows-Appliance weitere 90 Tage nutzen. Dieser Hinweis und weitere Tipps zum Verlängern der Laufzeit erscheinen auch beim ersten Start der VM unübersehbar als Wallpaper. Für Linux-Anwender, die Windows vorübergehend für spezielle Software benötigen, ist die Appliance die eindeutig einfachere Alternative gegenüber der Installation des Windows-10-Enterprise-ISOs.
Ohne Nachbearbeitung geht es aber nicht: Das Wallpaper mit den Tipps wird früher oder später lästig. Eventuell wollen Sie auch das Standardkonto „IEUser“ mit Passwort „Passw0rd!“ ändern. Und auch die englischsprachige Oberfläche sowie die Zeitzone müssen über die „Einstellungen“ (Win-I) und „Time & Language -> Region“ erst auf Deutsch und europäische Zeitzone gesetzt werden.
Server-Appliances von Bitnami & Co
Auf Serversysteme spezialisiert sind die Sites www.bitnami.com und www.turnkeylinux.org. Hier erhalten Sie – überwiegend in OVA-Format – CMS-Systeme wie Drupal, Typo3, Joomla und WordPress sowie eine Vielzahl von Shop- und Entwicklungssystemen. Die VMs sind mit allem ausgestattet, was zum Betrieb notwendig ist, und ersparen Installation und Konfiguration von Apache/Nginx, Mysql und PHP. Das ist für alle, erst recht für unerfahrene Nutzer ein unschätzbarer Gewinn. Natürlich sind auch die Netzwerkeinstellungen der VM gleich so gesetzt („Netzwerkbrücke“), dass Serveranwendungen sofort funktionieren.
Eher an Entwickler und Firmen richtet sich das Appliance-Angebot von Vmware (https://marketplace.vmware.com/vsx). Das Portal bietet vorkonfigurierte Spezialsysteme. Nicht alle virtuelle PCs sind hier frei verfügbar, einige erfordern eine Registrierung oder eine Gebühr.
Eine einmal optimierte VM als OVA-Paket oder als VDI-Image weiterzugeben, ist denkbar einfach. Daher lohnt sich die Suche nach einem solchen Angebot auch bei vielen Einzelprojekten, wie folgende, eher zufällig gewählte Beispiele abschließend zeigen sollen:
Only Office: Im Downloadbereich www.onlyoffice.com/de/download-docs.aspx lässt sich nach einem Klick auf „Community“ die „Univention-Anwendung“ wahlweise mit Nextcloud oder Owncloud als VM herunterladen und in Virtualbox importieren.
Whonix: Das anonymisierende Surfsystem ist in der Zielsetzung mit dem Livesystem Tails vergleichbar, hat aber als Virtualbox-Appliance einen anderen Ansatz mit zwei parallelen VMs. Die OVA-Appliance mit circa 2,2 GB gibt es unter www.whonix.org/wiki/VirtualBox/XFCE. Nach dem Import in Virtualbox erscheinen zwei neue VMs, wovon Sie immer erst das Gateway, danach die Workstation starten. Das Konstrukt erscheint aufwändig, läuft aber auf jedem durchschnittlichen Rechner mühelos.
Schnelle Terminal-Dateisuche ist auf Servern unerlässlich, aber auch auf dem Desktop willkommen. Tool der Wahl ist aufgrund seiner Geschwindigkeit locate, das auf Ubuntu-Systemen mit
sudo apt install plocate
schnell nachgerüstet ist (das ältere mlocate wird heute überwiegend durch das schnellere plocate ersetzt). Das Paket enthält neben diesem Suchkommando locate auch das Indexierungstool updatedb. Damit die Dateiliste aktuell bleibt, muss je nach Rechnernutzung täglich oder auch häufiger der Befehl
sudo updatedb
ausgeführt werden. Das ist wieder ein Fall für einen Cronjob des root-Kontos (crontab -e):
0 10 * * * /usr/bin/updatedb
locate sucht nur nach Dateinamen, aber ein Befehl wie
locate -A -i steuer 2020
liefert sofort alle passenden Dateien mit komplettem Pfad – auch bei sehr großen Datenbeständen. Die lästige Eingabe der fast immer notwendigen Parameter „-A“ (alle Wörter müssen im Dateinamen vorkommen) und „-i“ (Groß/Kleinschreibung ignorieren) können Sie sich mit einem Alias
alias loc='locate -A -i'
in der Datei ~/.bashrc ersparen.
Standardmäßig berücksichtigt locate keine USB-Laufwerke. Um dies zu ändern, muss in der Konfigurationsdatei „/etc/updatedb.conf“ nach „PRUNEFS=…“ (ausgeschlossene Dateisysteme) der Eintrag „usbfs“ gelöscht werden, und bei dieser Gelegenheit bei Bedarf noch weitere Eintäge dieser Zeile.
Cubic (Custom Ubuntu ISO Creator) ist ein grafisches Frontend für die Linux-Fähigkeiten, in gemountete ISO-Images mit einer Chroot-Umgebung neue Dateien einzubauen und danach ein geändertes ISO zu schreiben. Der Schritt-für-Schritt-Assistent ist vorbildlich übersichtlich, erweitert die Standard-Live-Medien von Ubuntu & Co mühelos um Software und Benutzerdateien und baut optimierte Livesysteme. Detailliertere Anpassungen sind möglich, setzen aber auch mit Cubic gute Kenntnis der Verzeichnishierarchie des Livesystems voraus.
Wie auf der Porjektseite https://launchpad.net/cubic beschreiben, installieren Sie das Tool mit folgenden Terminalbefehlen:
sudo apt-add-repository ppa:cubic-wizard/release
sudo apt update
sudo apt install cubic
Nach dem Start geben Sie erst ein (beliebiges) „Project Directory“ an, wo Cubic das Livesystem zusammenbauen soll. Nach „Next“ und „Select“ wählen Sie zunächst das ISO-Image des originalen Livesystems. Weitere Änderungen sind in diesem Dialog nicht nötig und nach „Next“ wird das Dateisystem des ISO-Abbilds temporär ausgepackt.
Nach weiterem „Next“ wird es spannend: In chroot-Konsole können Sie jetzt alle Anpassungen erledigen. Mit apt install […] rüsten Sie alles nach, was dem originalen Livesystem nach Ihrer Meinung fehlt. Benutzer- und Konfigurationsdateien können Sie einfach per Drag & Drop vom laufenden System in die chroot-Konsole von Cubic ziehen und dann mit der „Copy“-Schaltfläche in das Livesystem integrieren. Beachten Sie dabei, vorher mit cd in der chroot-Konsole in das gewünschte Verzeichnis zu wechseln – genau dort werden die Dateien später vorliegen. Sie können auch mit mkdir Ordner erstellen, um das Livesystem zu optimieren. Im konkreten Beispiel des von uns gewählten Lubuntu lautet das Live-Konto „lubuntu“, jedoch existiert kein Home-Ordner für dieses Konto. Wenn Sie dieses mit
mkdir /home/lubuntu
anlegen, können Sie es mit weiteren Ordner bestücken (etwa „Desktop“, „Bilder“) und diese wiederum mit Benutzerdateien sowie Konfigurationsdateien füllen (.bashrc. etc), aber auch mit einer kompletten Thunderbird-Konfiguration. Um Ordner und Dateien richtig anzulegen, sollten Sie die Ordnerstruktur des originalen Livesystems gut kennen oder parallel vor sich haben. Mit „Next“ verlassen Sie die chroot-Konsole, mit weiterem „Next“ die Paketübersicht. Danach wird das angepasste System zusammengebaut. Das fertige ISO können Sie mit den üblichen Werkzeugen auf DVD brennen oder auf USB schreiben.
Trotz Beschränkung auf Ubuntu & Co ist Cubic aktuell das wohl komfortabelste Tool, um Livesysteme individuell aufzubessern. Das im nächsten Punkt beschriebene Systemback ist im Prinzip noch flexibler, wird aber nicht mehr aktualisiert und hat technische Hürden.
Die Livesysteme Clonezilla und Rescuezilla sichern Linux- oder Windows-Datenträger in komprimierte Abbilder und schreiben diese bei Bedarf wieder zurück. Dieser Ratgeber erklärt, wie Sie diese Werkzeuge nutzen und wo sich diese Aktion anbietet.
Rescuezilla und Clonezilla erledigen das Backup und Restore kompletter Datenträger oder ausgewählter Partitionen. Technische Basis ist bei beiden Tools das Kommandozeilenwerkzeug Partclone. Um die Verhältnisse vereinfacht zu skizzieren: Partclone ist ein Hardcore-Werkzeug, das sich allenfalls Profis für automatisierte Datenträgersicherungen zumuten. Auf der komfortablen Gegenseite steht das klickfreundliche Rescuezilla, das auch Einsteiger mit wenigen Schaltflächen übersichtlich durch die anspruchsvolle Aktion führt. Etwa in der Mitte steht das textbasierte Clonezilla, das – besser mit Cursortasten, Tabulator, Eingabe- und Leertaste statt mit Maus – etwas antiquiert zu bedienen ist, aber andererseits funktional unübertroffen bleibt.
Clonezilla wie das seit Ende 2020 voll kompatible Rescuezilla beherrschen neben verbreiteten Linux-Dateisystemen (Ext2, Ext3, Ext4, BTRFS, XFS, JFS, F2FS, Reiser FS, Reiser4) auch Windows- und Apple-Partitionen wie FAT, exFAT, NTFS und HFS+). Die Images können auf lokalen (USB-) Datenträgern und auf Netzwerkfreigaben gespeichert werden. Im Netz beherrscht Clonezilla alle Protokolle (Samba, SSH, NFS, Webdav), während Rescuezilla sich auf Windows/Samba-Freigaben beschränkt. Weitere Vorzüge von Clonezilla sind das direkte Klonen von Datenträger zu Datenträger, ferner die optionale Verschlüsselung der Imagesicherungen.
Clonezilla ist ohne Zweifel der Maßstab, Rescuezilla bleibt funktional auf eine Untermenge reduziert. Rescuezilla erfüllt aber die Ansprüche typischer Endanwender vollumfänglich, zumal einer Sicherung ins Netzwerk schon aus Geschwindigkeitsgründen meist lokales USB vorgezogen wird.
Warum sichern oder klonen?
Für das Sichern von Partitionen oder ganzen Festplatten gibt es mindestens drei starke Motive:
Systemsicherheit: Trotz Reparaturmechanismen von Linux- und Windows-Systemen sind manche Havarien gar nicht mehr zu beheben oder nur mit unzumutbaren Rechercheaufwand inklusiver stundenlanger Fehlversuche. Eine nicht allzu altes Plattenimage bietet Systemsicherheit auch in aussichtlosen Situationen und verkürzt Reparaturen auf eine einzige zuverlässige Aktion.
Systemumzug: Wenn der Platz des Systemdatenträgers nicht mehr ausreicht, kann das komplette bisherige System auf einen größeren Datenträger geschrieben werden.
Systemexperimente: Betriebssystembastler und Sicherheitsexperten benötigen oft einen genau definierten Systemzustand etwa vor einer Treiber- oder Software-Installation oder vor einer experimentellen (Un-) Sicherheitsaktion.
Image-Sicherung versus Klonen
Sichern und Klonen sind zwei technisch klar unterschiedene Aktionen, wenngleich zweiteres im Prinzip nur eine Abkürzung bedeutet:
Image-Sicherungen erstellen große komprimierte Dateien wahlweise eines kompletten Laufwerks oder eines Laufwerks mit mehreren Partitionen oder nur einer bestimmten Partition eines Laufwerks. Sie können diese Dateien später zurückschreiben, um eine System-Havarie zu beheben oder um das System auf einen früheren und besseren Zustand zurückzusetzen. Da die Image-Dateien groß sind, sollten sie auf schnellen externen Laufwerken oder im Gigabit-Netz gespeichert werden. Images sind eine präventive Sicherheitsmaßnahme für den Fall einer späteren Hardware- oder System-Havarie. Trotz der unvermeidlichen Größe arbeiten Clonezilla und Rescuezilla platzsparend, indem sie freien Platz von Datenträgern nicht sektorweise mitsichern: Eine zur Hälfte belegte 240-GB-SSD wird also nur 120 GB Sicherungsplatz erfordern, und nicht einmal dies, weil zusätzlich gzip-Komprimierung zum Einsatz kommt.
Klonen bedeutet eine exakte Datenkopie eines Laufwerks direkt auf ein zweites Laufwerk. Daher wird man Klonen nicht primär als Sicherheitsmaßnahme einsetzen, da es stets einen zweiten – identischen oder größeren – Datenträger erfordert, der dann eventuell über Monate unbenutzt bleibt. Klonen ist vielmehr die einschlägige Maßnahme, um den bisherigen Datenträger durch einen neuen (meist größeren) zu ersetzen. Direktes Klonen funktioniert nur mit Clonezilla. Wer mit Rescuezilla klonen will, benötigt zwei Schritte – erst das „Backup“ des Datenträgers als Image und danach dessen „Wiederherstellung“ auf den anderen Datenträger.
Benutzerdateien und Vorbereitungen: Für die Sicherung von Benutzerdaten brauchen Sie kein externes Livesystem – dafür gibt es einfachere Methoden im jeweiligen Betriebssystem. Einschlägig sind Rsync und Tar unter Linux, Robocopy oder Xcopy unter Windows (sowie diverse grafische Frontends oder Alternativen). Angesichts dieser Tatsache wäre es für schnelle Imagesicherungen optimal, Benutzerdateien weitgehend fernzuhalten. Bei unseren Image-Aktionen hielt eine kleine SSD mit einem relativ frischen System und ohne nennenswerte Benutzerdaten den Rekord: Es war in drei Minuten auf USB gesichert und später in vier Minuten wiederhergestellt. Für ein Notebooksystem mit etwa 50 GB Benutzerdateien fiel bereits die zehnfache Sicherungs- und Wiederherstellungsdauer an. Da es bei der Imagesicherung um Boot- und Systemsicherheit geht, wäre eine strikte Trennung der Benutzerdaten optimal – etwa in einer expliziten Home-Partition, die nicht mitgesichert wird. Das wird sich nicht überall ideal realisieren lassen, aber wer notgedrungen ganze Film- und Musikarchive in die Imagesicherungen einbezieht, muss Geduld mitbringen.
Der Umfang einer Sicherung lässt sich aber in jedem Fall reduzieren. Unter Linux entfernen Sie unnötige Programmpakete und räumen den Paket-Cache auf:
sudo apt autoremove
sudo apt autoclean
Ein Tool wie Bleachbit kann weitere überflüssige Datenlasten entsorgen.
Unter Windows verwenden Sie die Datenträgerbereinigung mit der Option „Systemdateien bereinigen“, um temporäre Dateien, Update-Sicherungen oder gar den eventuell noch vorhandenen Ordner „Windows.old“ zu löschen (mit Vorversion). Beachten Sie unbedingt, Windows vor einer Imagesicherung über „Neu starten“ zu beenden, denn nach normalem „Herunterfahren“ erhalten Clonezilla oder Rescuezilla keinen Schreibzugriff.
Das einfache Rescuezilla
Rescuezilla ist der Nachfolger des eingestellten Redo Backup. Der circa 850 MB umfassende Download des ISO-Abbilds von https://rescuezilla.com/ kann mit den üblichen Mitteln (dd, Gnome-Disks, Etcher, Win 32 Diskimager) bootfähig auf USB-Stick kopiert werden. Es handelt sich um ein komplettes Ubuntu-Livesystem, das eine Basisausstattung einschlägiger Werkzeuge mitbringt wie Browser, Gparted, Gnome-Disks. Nach „apt update“ ist auch das Nachinstallieren zusätzlicher Programme möglich, allerdings nur temporär während der Laufzeit.
Im Zentrum steht das Tool Rescuezilla, das gemeinsam mit dem Desktop automatisch startet und die Image-Sicherung und Wiederherstellung mit wenigen Schaltflächen einfach macht. Im Prinzip gibt es nur „Backup“ und „Wiederherstellung“, die wir nachfolgend genauer beschreiben.
Exkurs zur dritten Option: Eine dritte Schaltfläche „Image Explorer“ ist neu und noch als „Beta“ charakterisiert. Ihre Funktion ist es, den Inhalt vorhandener Sicherungsabbilder in den Dateimanager zu mounten. Dies wäre eine signifikante Funktionserweiterung, weil sich dann gezielt einzelne Dateiobjekte aus einer Sicherung holen ließen, ohne das gesamte Image zurückschreiben zu müssen. Da Rescuezilla (und Clonezilla) die Abbilder aber gzip-komprimieren, ist die Wartezeit für die Dekomprimierung größerer Images aktuell kaum zumutbar. In unserem Test benötigte das Mounten einer kleinen SSD-Sicherung (60 GB) etwa 10 Minuten, das Anzeigen des Inhalts im Dateimanager unter „/mnt/rescuezilla.image.explorer“ sogar nochmal deutlich länger. Auch das anschließende Navigieren im Dateisystem des Abbilds ist unzumutbar zäh. Rescuezilla warnt daher bei dieser Funktion mit gutem Grund vor erheblichen Wartezeiten und kündigt für künftige Versionen ein anderes Kompressionsformat an, das schnellere Ergebnisse verspricht. Derzeit lohnt sich der „Image Explorer“ allenfalls dann, wenn Sie ganz genau wissen, welche Einzeldateien Sie aus dem Image zurücksichern müssen.
Das Backup: Im automatisch gestarteten Haupttool „Rescuezilla“ lädt die Schaltfläche „Backup“ den Assistenten zum Schreiben eines neuen Abbilds:
„Schritt 1“ ist die Auswahl des physikalischen Quell-Datenträgers, dessen Partitionen gesichert werden sollen. „Schritt 2“ ermöglicht erlaubt die Auswahl der gewünschten Partitionen auf diesem Datenträger. Wenn Sie nicht genau wissen, dass eine bestimmte Partition keine Sicherung braucht, dann übernehmen Sie hier alle angezeigten Partitionen, wie es der Standard vorgibt. Andernfalls besteht die Gefahr, dass Sie eine wichtige Bootpartition unterschlagen und damit später ein nicht bootfähiges System zurückschreiben.
In „Schritt 3“ markieren Sie das Backupziel. Dabei zeigt die Standardoption „Direkt an meinen Computer angeschlossen“ die internen Laufwerke sowie USB-Medien. Falls das Image auf einer Samba-Freigabe landen soll, aktivieren Sie oben die Option „Über das Netzwerk verbunden“. In diesem Fall geben Sie den „Server oder Freigabeort“ in dieser Form (also ohne Protokollangabe „smb“ oder ähnlich)
//[IP]/[Zielverzeichnis]
ein, also etwa „//192.168.178.20/Data/“. Falls Zugangsdaten erforderlich sind, lassen sich diese in den weiteren Zeilen ergänzen (Samba-Kontoname, Samba-Kennwort).
„Schritt 4“ sollten Sie bei der Vorgabe belassen. Es handelt sich um das Mount-Verzeichnis im Livesystem, wohin das eigentliche Backupziel gemountet wird. In „Schritt 5“ sollten Sie eventuell tätig werden, weil ein aussagekräftiger Sicherungsname die spätere Orientierung erleichtert. „Schritt 6“ zeigt eine Übersicht für die Aktion und nach „Weiter“ erfolgt in „Schritt 7“ die eigentliche Aktion.
Die Wiederherstellung: Die Schaltfläche „Wiederherstellen“ startet den Assistenten, der mit „Schritt 1“ zunächst das Laufwerk abfrägt, wo sich die Sicherung befindet. Wird das Laufwerk korrekt gewählt, zeigt „Schritt 2“ die vorhandene(n) Imagesicherung(en). Mit der passsenden Auswahl und „Weiter“ geht es in „Schritt 3“ zum Zieldatenträger. Hier dürfen keine Zweifel bestehen, weil dieses Laufwerk komplett überschrieben wird. Die Angaben sind mit Größe, Hersteller und Partitionsangaben aber vorbildlich präzise. Mit „Schritt 4“ folgt noch die Partitionsauswahl, wobei Sie wieder – wie beim Backup empfohlen – alle Partitionen übernehmen. Nach „Schritt 5“ mit Zusammenfassung und „Weiter“ startet die Wiederherstellung des Datenträgers.
Das mächtige Clonezilla
Anders als Rescuezilla hat das Livesystem Clonezilla keinen Desktop oder weitere Programme, sondern fokussiert sich ausschließlich auf seinen Spezialjob. Der Hersteller bietet im Downloadbereich von https://clonezilla.org/downloads.php mehrere Varianten. Wir empfehlen die oberste Option „alternative stable“, die auf Ubuntu basiert (aktuell „groovy“, also Ubuntu 20.10). Ohne Desktop und sonstige Tools wiegt das Livesystem nur etwa 350 MB und kann mit den üblichen Mitteln (dd, Gnome-Disks, Etcher, Win 32 Diskimager) bootfähig auf USB-Stick kopiert werden.
Im textbasierten Menü navigieren Sie mit Cursor- und Tabulatortasten und bestätigen „OK“ mit der Eingabetaste. Im allerersten Startschirm wählen Sie die erste Option „Clonezilla live“. Wenn Sie im Folgefenster „de-DE.UTF“ wählen, ist das Menü samt Erklärungen weitestgehend in deutscher Sprache. Im Folgefenster sollten Sie außerdem das Tastaturlayout auf „German“ setzen. Weitere Abfragen zur Tastatur beantworten Sie mit den Standardvorgaben. Danach laden Sie im Fenster „Starte Clonezilla“ das eigentliche Tool.
Das Backup: Wählen Sie im ersten Dialog die oberste Option „device-image“ und danach „local_dev“. Sie haben jetzt Gelegenheit, ein USB-Laufwerk anzuschließen. Drücken Sie die Eingabetaste. Clonezilla zeigt Ihnen die verfügbaren Laufwerke an. Warten Sie, bis das USB-Laufwerk erscheint, und drücken Sie dann die Tastenkombination Strg-C. Wählen Sie das Ziellaufwerk aus und danach ein Verzeichnis, in dem Clonezilla das Backup speichern soll. Gehen Sie mit den Pfeiltasten auf „Done“ und drücken Sie zweimal die Eingabetaste.
Wenn Sie ein Image im Netzwerk sichern wollen, wählen Sie statt „local_dev“ das gewünschte Netzwerkprotokoll – also „samba_server“ für Windows/Samba-Freigaben oder „ssh_server“ für eine Sicherung via SSH. Danach geben Sie die IP-Adresse des Servers an und die zugehörigen Anmeldedaten mit Kontoname und Passwort. Im Anschluss fahren Sie fort, wie bei einem lokalen Ziel beschrieben.
Verwenden Sie den Modus „Beginner Einsteiger“ und dann die Option „savedisk“, sofern Sie ein Abbild der gesamten Festplatte erstellen möchten. Dies ist im Zweifel immer zu empfehlen, weil Clonezilla dann alle Partitionen inklusive Bootmanager sichert. Dabei spielt es keine Rolle, ob Windows, Linux oder beide Systeme installiert sind. Die weitere Option „saveparts“ sichert nur einzelne ausgewählte Partitionen.
Vergeben Sie einen aussagekräftigen Namen für das Image. Anschließend wählen Sie die Festplatte oder Partition aus, die Sie sichern möchten. Bei den folgenden Dialogen übernehmen Sie die Voreinstellungen.
Die Wiederherstellung: Starten Sie Clonezilla mit den Optionen „device_image“ und „local_dev“ (bei lokaler Sicherung). Wählen Sie die Partition und das Verzeichnis aus, in dem ein zuvor gesichertes Image liegt. Gehen Sie auf „Beginner“ und dann auf „restoredisk“. Wenn Sie vorher einzelne Partitionen gesichert haben, verwenden Sie „restoreparts“. Clonezilla findet auf dem Backup-Medium alle Abbilder automatisch und präsentiert sie in einer Liste. Danach wählen Sie die Zielpartition aus, in die das Image zurückgeschrieben werden soll. Nach zwei Sicherheitsabfragen spielt Clonezilla das Backup zurück.
Eine Wiederherstellung aus dem Netzwerk läuft entsprechend ab. Hier wählen Sie aber statt „local_dev“ das passende Netzwerkprotokoll – also etwa „samba_server“ und geben danach die Anmeldedaten an.
Direktes Klonen: Beim Klonen spielt es keine Rolle, ob es sich bei Quelle und Ziel um Festplatten oder SSDs handelt. Wichtig sind nur die Datenträgergrößen. Wir gehen hier vom häufigen und einfacheren Fall aus, dass das neue Zielmedium gleich groß oder größer ist als das bisherige Laufwerk. In diesen Fällen benötigt Clonezilla keine Vorbereitung und nur geringe Nachbesserung:
Sie wählen zunächst „device-device“, dann „Beginner“ und anschließend „disk_to_local_disk“. Geben Sie zunächst den Datenträger an, den Sie kopieren wollen, im nächsten Schritt das neue Ziellaufwerk. Die folgenden beiden Dialoge bestätigen Sie mit Eingabetaste, um die Voreinstellungen zu übernehmen. Folgen Sie den weiteren Anweisungen des Assistenten. Prüfen Sie die Einstellungen und bestätigen Sie mit „y“, wenn Sie dazu aufgefordert werden.
Wenn der neue Datenträger mehr Kapazität besitzt als der ursprüngliche, dann bleibt nach der Clonezilla-Aktion, welche exakt die ursprünglichen Größen wiederherstellt, nach der letzten Partition ungenutzer Plattenplatz. Dies korrigieren Sie in einem beliebigen Linux-System mit Gparted, indem Sie die letzte Partition auf dem neuen Laufwerk maximal vergrößern.
Bei Dateisystemen gibt es keinen Stillstand. Im Hinblick auf ihre immense Verantwortung geschehen aber alle Fortschritte zäh, konservativ und abseits der öffentlichen Wahrnehmung. Ubuntus aktuelle Parteinahme für ZFS sorgt für frische Diskussion.
Seit vielen Jahren gilt das Dateisystem Ext4 als Standard auf dem Linux-Desktop, zumeist auch auf Servern. Eindeutige Plädoyers für andere Dateisysteme wie etwa beim NAS-System Freenas für ZFS blieben rar. 2017 schlug sich Open Suse Leap auf die Seite von BTRFS, und neuerdings hat Ubuntu ZFS in die Desktop-Installation integriert (wenn auch optional). Wir nehmen dies zum Anlass für einen Heftschwerpunkt zum Thema „Dateisysteme“. Dieser erste Beitrag soll die Bedeutung und prinzipielle Funktionsweise von Dateisystemen skizzieren, die wichtigsten kurz charakterisieren und die erweiterten Fähigkeiten von Dateisystemen diskutieren. Dies führt dann zwangslos zu Fragen, für welche Szenarien sich welche Dateisysteme am besten eignen und ob der Linux-Desktop tatsächlich eine Abkehr vom bisherigen Ext4-Standard benötigt.
Die nachfolgenden vier Artikel führen dann in den
praktischen PC-Alltag und zeigen Basiskonfiguration und Tuning-Tipps für die
Linux-Dateisysteme Ext4, ZFS, BTRFS und für Windows-Alternativen für den
Datenaustausch.
1. Dateisysteme: Die sichtbare
Spitze
Am Linux-Desktop zeigen sich Dateisysteme nur an zwei
Stellen deutlich: bei der (manuellen) Installation und in der Laufwerksverwaltung.
Die Installation bietet die Formatierung mit Ext2/3/4, XFS, JFS, BTRFS,
eventuell ZFS, die Laufwerksverwaltung hat in der Regel zusätzlich NTFS und
FAT32, exFAT im Angebot. Inaktive (ausgegraute) Linux-Dateisysteme lassen sich
durch Nachinstallationen passender Pakete aktivieren.
Die Aktion, ein Laufwerk oder einen Teil dessen
(Partition) mit einem Dateisystem zu versehen, nennt sich bekanntlich „Formatieren“.
Optionales Partitionieren (Aufteilen) eines Laufwerks ist einer Formatierung
vorgeschaltet. Dort und in der daraus resultierenden Partitionstabelle geht es
darum, ein Laufwerk aus organisatorischen Gründen in mehrere Bereiche
aufzuteilen (Partitionen). Sobald eine Partition anschließend durch ein
Dateisystem formatiert wird, erhält die Partition in der Partitionstabelle eine
knappe Kennziffer, um welches Dateisystem es sich handelt.
Die sichtbare Spitze des Eisbergs „Dateisystem“
wird wesentlich größer, sobald die zugehörigen Terminaltools zum Einsatz
kommen. Erst diese zeigen die Komplexität und die Tatsache, dass ein
Formatieren mit grafischen Werkzeugen für zahlreiche Parameter einfach bewährte
Kompromisswerte setzt. Ein besonders wichtiger Parameter ist die Block- oder
Clustergröße, die standardmäßig 512 Bytes, heute meist 4 KB beträgt.
Wichtig und sichtbar für den Anwender sind ferner Standardverzeichnisse
eines Dateisystems. Diese sind allerdings bloße Namen, Konvention und
Tradition, und vom eigentlichen Handwerk des Dateisystems Lichtjahre entfernt.
2. Dateisystem-Pflicht: Die
Übersetzungsleistung
Dateisysteme kennen Pflicht und Kür (dazu später). Unabdingbare
Pflicht für jedes Dateisystem ist es, angeforderte Dateien zu finden und
bereitzustellen. Die Tatsache, dass sich Dateien über hierarchische Pfade, über
Namen, Extensionen oder Datumsangaben aufrufen oder filtern lassen, erfordert
erheblichen Verwaltungsaufwand. Der Controller der Hardware (Festplatte, SSD)
kann jede Einheit (Sektor, Block) in Milli- oder Mikrosekunden ansteuern. Aber er
braucht die exakte Kennziffer der gewünschten Einheit: Ordner und Dateinamen
sind ihm so fremd wie der Dateibegriff insgesamt. Wenn ein Laufwerk die Bits
aus etlichen angeforderten Blöcken ausliefert, weiß es weder, dass es sich um
eine zusammengehörige Datei handelt, noch weniger, dass diese sich in einem bestimmten
Ordner befindet und einen Namen besitzt. Nebenbei: Auch die Einteilung in
Partitionen ist der Hardware unbekannt. Das ist alles Aufgabe des Dateisystems.
Das Dateisystem errichtet ab
Formatierung eine Dateitabelle. Jede Datei erhält dort einen Eintrag mit
Metadaten wie Dateiname, Erstelldatum, Rechtemaske. Format und Umfang dieser
Einträge bestimmen die maximalen Datei- und Pfadnamen, maximale Dateigrößen und
die Tauglichkeit für Multiuser-Systeme mit Rechteverwaltung. Entscheidend zum
Auffinden der Dateiinhalte ist der Verweis auf die Zuordnungseinheiten –
Cluster oder Blöcke (Cluster ist der klarere Begriff für eine
Dateisystemeinheit, weil „Block“ auch Hardware-technisch die kleinste
Datenträgereinheit meint). Um die Übersetzungsarbeit für die Hardware zu
vereinfachen, entsprechen diese Cluster genau oder als einfaches Vielfaches der
Block- oder Sektorgröße des Datenträgers – oft vier KB, sofern der Nutzer bei
der Formatierung keine andere Wahl trifft. Als Clusterzeiger in der
Dateitabelle dient dann eine schlichte Ziffer für den Startcluster der Datei,
ferner eine weitere Ziffer für die Anzahl der Folgecluster (da eine Datei in
der Regel mehrere oder viele Cluster beansprucht).
Nehmen wir an, Sie klicken im
Dateimanager auf eine Datei „Rechnung_034-2020.odt“. Woher weiß das
Dateisystem, dass es den Inhalt dieser Datei etwa aus den Clustern 12057, 12058
und 12116 zu laden hat? Und woher weiß das System, welche Dateinamen es
anzeigen soll, wenn Sie im Home-Verzeichnis auf „Dokumente“ klicken?
Anhand der kompletten Pfadangabe beginnt die Suche immer auf der obersten Ebene
der Dateitabelle. Dort findet sich der Eintrag für den ersten Ordnernamen der Pfadangabe,
in dessen Inhalt geht die Suche dann weiter zum nächsten Unterordner gemäß
Pfadangabe bis hinunter zur gesuchten Datei.
Noch sind wir beim Eintrag der
Datei in der Dateitabelle – nicht bei der Datei selbst: Wo diese liegt, zeigen
nun aber die Cluster-Verweise. Startcluster und Anzahl der Cluster können nun
an die Hardware weitergegeben werden. Wenn die Datei unfragmentiert ist, also
der komplette Inhalt in einer zusammenhängenden Clusterfolge abgelegt ist,
genügt es, den Startcluster anzuspringen und ab dort die angegebene Anzahl von
Cluster einzulesen. Bei fragmentierten Dateien folgt in der Dateitabelle ein
weiterer Eintrag mit dem nächsten Startcluster und der Clusteranzahl.
3. Dateisystem-Kür: Erweiterte Eigenschaften
Die angesprochene Kernaufgabe erledigt jedes Dateisystem.
Die Limits für Pfadlänge, Dateigröße und Datenträgergröße sind zum Teil
pragmatisch (Pfadlänge bei NTFS, Größen bei F2FS oder Ext2/3), ohne aber bei
Desktop-Systemen an ernsthafte praktische Grenzen zu stoßen. Lediglich das alte
FAT32 hat mit einer maximalen Dateigröße von nur 4 GB ein Limit, das in den
PC-Alltag hineinwirkt.
Was Dateisysteme neben der Pflicht der
Dateibereitstellung zusätzlich leisten sollen, wird durchaus kontrovers
interpretiert. Die einzelnen Eigenschaften (siehe Tabelle) lassen sich in
folgende Hauptaspekte gliedern:
1. OPTIMIERTE
LEISTUNG: Während einfache Dateisysteme Schreibaktionen sofort und
undifferenziert einfach in die nächstmöglichen freien Cluster schreiben, gibt
es eine Reihe von intelligenteren Methoden, um erstens die Zugriffe zu
beschleunigen und zweitens die Fragmentierung zusammenhängender Dateien zu
verringern. Allocate-on-Flush
verzögert den Schreibvorgang, um den kompletten Platzbedarf einer Datei
abzuwarten und dann zusammenhängend zu speichern (unfragmentiert). Extents verschlanken die
Dateisystemtabelle, indem sie bei vermehrten Metadaten selbige in normale
Datencluster auslagern. Permanentes Dateisystem-Caching verwendet nur ZFS mit entsprechenden RAM-Ansprüchen.
Sparse-Dateien
sind eine intelligente Antwort auf Dateien ohne Inhalt: Das Dateisystem erkennt
die „Leere“ und belegt keine Cluster, selbst wenn die Metadaten eine
formale Dateigrößen im MB- oder GB-Bereich definieren. Trim-Support ist eine Spezialität für SSDs, um die Hardware über
gelöschte und somit freigewordene Blöcke zu informieren. Eine eher marginale
Eigenschaft ist Execute-in-Place,
das Programmausführung direkt vom Datenträger erlaubt (ohne Kopie in den
Arbeitsspeicher), aber nur für sehr speziellen Programmecode in Betracht kommt.
2. OPTIMIERTE
SICHERHEIT: Das verbreitete Journaling
ist sowohl eine Sicherheitsfunktion als auch eine Leistungsoptimierung: Das
Journal protokolliert entweder nur die Metadaten in der Dateitabelle oder
sämtliche Änderungen an Dateiinhalten (Full Journaling). Nach Absturz, Hard
Reset oder Stromausfall muss das Dateisystem dann nicht komplett geprüft
werden, sondern sieht im Journal alle Dateiänderungen, die nicht ordentlich
abgeschlossen wurden. Einige wenige Dateisysteme führen obendrein gesonderte Change-Logs und schreiben Checksummen in die Metadaten. Copy-on-Write (CoW) bedeutet, dass
geänderte Blöcke nicht an Ort und Stelle überschrieben, sondern zunächst in
freie Cluster kopiert werden. Die dadurch entstehende Redundanz ist
Voraussetzung für Snapshot-Sicherung
(nur BTRFS und ZFS).
3. ERWEITERTE METADATEN:
Alle elaborierteren Dateisysteme notieren als Metadaten deutlich mehr als die
unbedingt erforderlichen Pfade, Namen und Clusterverweise. Besitz, Dateirechte,
mehrere Zeitstempel und Streams als formal unstrukturierte Metadaten sind fast
überall Standard. Streams eignen sich als interne Infos für Software, aber auch
als Kommentarfunktion.
4. ERWEITERTE
FUNKTIONEN: Besondere Attraktivität für Anwender haben native Zusatzfunktionen
des Dateisystems wie Verschlüsselung
und Kompression. Hier kann das
ansonsten pragmatische NTFS gegenüber den Linux-Standards klar punkten. Snapshots zur Systemsicherung bieten
andererseits nur die Linux-Dateisysteme BTRFS und ZFS. Diese gehen aber noch
einen ganzen Schritt weiter, indem sie einen eigenen Volume-Manager zur Laufwerksverwaltung integrieren. Funktional
bedeutet das, dass Größenänderungen des Dateisystems online wie offline und mit
Anschluss zusätzlicher Laufwerke möglich sind.
4. Dateisysteme und ihre Performance
Zur Leistung von Dateisystemen
gibt es zahlreiche Messungen, die sich aber nicht gegenseitig bestätigen. Zuverlässiges
Testen der Dateisystemleistung ist heikel, weil sehr viele Faktoren mitspielen.
Die Größe der Dateien ist relevant, weil Dateisysteme ihre jeweiligen Vorzüge
besitzen. Noch wichtiger ist die Clustergröße, denn jedes Dateisystem ist umso
schneller, je weniger Einzelblöcke es zusammensuchen muss. Ein gerechter
Vergleich müsste überall dieselbe Clustergröße verwenden – soweit dies
einstellbar ist. Dies wiederum kann zu Ungerechtigkeiten führen, wenn
Dateisysteme intern auf ihre Standardgrößen hin optimiert sind. Für einen
gerechten Vergleich müssten ferner alle Daten unfragmentiert vorliegen. Spezielle
Funktionen wie Kompression müsste man von vornherein ausschalten, eventuell
auch das Aufzeichnen von speziellen Metadaten – soweit dies überhaupt vorgesehen
ist.
Angesichts dieser Situation
ist ein objektiver Vergleichstest eine akademische Herausforderung, die wir an
dieser Stelle radikal und vereinfachend abkürzen: Generell darf man von
einfachen Dateisystemen wie Ext2 oder FAT32, die sich weder mit Journaling,
Fehlerprüfung noch mit luxuriösen Metadaten abgeben müssen, höheren Durchsatz
erwarten. Gerade auf nicht systemrelevanten Laufwerken mit Benutzerdaten ist
älteres Ext2 oft die beste und schnellste Alternative, exFAT auch nicht immer verkehrt.
F2FS bietet sich für USB-Sticks an. Elaborierte Dateisysteme können den
zusätzlichen Verwaltungsaufwand durch optimierte Schreibverfahren und präventive
Maßnahmen gegen die Fragmentierung nur teilweise kompensieren.
5. Relevante Dateisysteme
Wie viele Dateisysteme braucht Linux? Die
Betriebssystem-Konkurrenz leistet sich längst nicht den Luxus so zahlreicher
Entwicklungen. Der langjährige Windows-Standard NTFS ist bislang ausreichend und hat Komfortfunktionen an Bord,
ähnliches gilt für APFS unter Mac OS
sowie das einfachere HFS+. Für
wachsende Server-Ansprüche arbeitet Microsoft an ReFS, das zwar astronomische Kapazitäten verwaltet, aber noch viele
unter NTFS selbstverständliche Attribute vermissen lässt. Für das einfache
Austauschformat FAT32 hat Microsoft
beizeiten den Nachfolger exFAT
nachgelegt, um drängende Größenlimits zu überwinden.
Unter Linux tummeln sich zahlreiche prominente,
exotische und spezialisierte Dateisysteme. Die Übersichtstabelle beschränkt sich
auf jene, die am Linux-Desktop in Erscheinung treten (etwa in der
Laufwerksverwaltung). Da Ext4, BTRFS und ZFS nachfolgend eigene Beiträge
erhalten, beschränken wir uns an dieser Stelle auf eine Kurzcharakteristik der verbleibenden
Dateisysteme Ext3, Ext2, JFS, XFS und F2FS:
Ext3 und Ext2: Der wichtigste Unterschied
dieser Ext-Versionen ist das mit Ext3 eingeführte Journal. Wo diese Sicherheitsfunktion
keine Rolle spielt, ist Ext2 die einfachere und schlankere Wahl. Anders
ausgedrückt: Wenn Journaling-Sicherheit gefragt ist (Systempartition), nimmt
man besser gleich Ext4, wo nicht, genügt auch Ext2.
XFS: Das
Journaling-Dateisystem wurde ursprünglich für Server-Aufgaben geschaffen. Die
ehemals gelobten Geschwindigkeitsvorteile beim Umgang mit sehr großen Dateien
und beim Mehrfachzugriff auf Daten dürften mittlerweile weitgehend egalisiert
sein. Ein spürbarer Unterschied zu Ext4 besteht heute nicht mehr. Messbar mag
XFS aber immer noch vorne liegen, da etwa Open Suse die Home-Partition
standardmäßig mit XFS formatiert.
JFS: Das
„Journaling File System“ ist so alt (1990 von IBM), dass es die
damals noch revolutionäre Journal-Funktion zur Namensgebung verwendete. JFS ist
heute eigentlich JFS2 und hat keine herausragenden Eigenschaften, aber auch
keine nennenswerten Schwächen.
F2FS: Das „Flash-Friendly
File System“ von Samsung ist ein Spezialist für Flash-Speicher – also für SD-Karten,
SSDs und eMMC. Die begrenzte Lebensdauer von rund 10.000 Schreibzugriffe pro
Speicherzelle legt es dort nahe, die Dateiinhalte turnusmäßig so umzuverteilen,
dass alle Bereiche des Datenträgers in etwa gleichmäßig beansprucht werden. Für
solches „Wear-Leveling“ sorgt die Hardware im Prinzip selbständig. F2FS
entlastet diese Aufgabe aber dadurch, dass es die Daten für Schreibvorgänge strukturiert
und zwischen Daten mit tendenziell kurzer (Benutzerdaten) und langer Lebensdauer
(Dateitabelle, Betriebssystem) unterscheidet. F2FS ist in der Regel nicht vorinstalliert,
kann aber mit dem Paket „f2fs-tools“ leicht nachgerüstet werden:
Der Linux-Standard Ext4
Das robuste Ext4 ist in den meisten Linux-Distributionen der Standard bei der Installation und bei der Formatierung externer Laufwerke. Die Voreinstellungen garantieren Datensicherheit, Ext4-Tools ermöglichen optionales Tuning und Dateiverschlüsselung.
Die Entwicklung von Ext („Extended Filesystem“) reicht über die Vorgänger 3 und 2 letztlich zurück bis ins Jahr 1993. Änderungen bei Ext folgten ganz konservativ den gewachsenen Standardanforderungen (etwa Journaling-Sicherheit) oder technischen Notwendigkeiten (etwa Kapazitätslimits), experimentelle Extras standen offenbar nie zur Diskussion. Version Ext4 hat mit seinen aktuellen Spezifikationen keine drohenden Limits hinsichtlich Gerätegrößen, Dateigrößen oder mangelnder Metadaten. Es darf seit mehr als 10 Jahren als Quasi-Standard auf allen Desktop- und Server-Distributionen gelten, wo ein grundsolides Dateisystem gewünscht ist – genau das: nicht weniger, nicht mehr.
Integration und Werkzeuge
Die kleine Ewigkeit als Linux-Standard hatte wenige
Konsequenzen am grafischen Desktop. Zwar ist eine händische Formatierung mit
sudo mkfs.ext4 […]
nur in Sonderfällen nötig, weil Installer und
Laufwerksverwaltungen Ext4 integrieren. Nennenswert darüber hinaus geht die Desktop-Integration
aber nicht. Auch für Ext4 sind Interna nur über Terminalwerkzeuge zu erledigen.
Alle Ext4-Tools sind im Standardpaket e2fsprogs enthalten und mit
dpkg -L e2fsprogs
leicht zu ermitteln. Neben den fundamentalen Programmen mke2fs
oder gleichbedeutend mkfs.ext4 (Formatieren) und e2fsck oder gleichbedeutend fsck.ext4
(Integritätscheck) gibt es eine ganze Reihe weiterer Werkzeuge: badblocks, debugfs,
dumpe2fs, e2image, e2scrub, e2undo sind allesamt forensische Tools, die im
Alltag keine große Rolle spielen und typische PC-Anwender überfordern dürften.
e2freefrag, e4defrag, filefrag liefern Infos zur Fragmentierung oder leisten
aktive Defragmentierung (e4defrag). E4defrag kann mit Schalter „-v“
auf Einzeldateien, Verzeichnisse und Partitionen angewandt werden.
Resize2fs ist das Low-Level-Tool für Größenänderungen von
Partitionen. In der Regel wird man hierfür am Desktop bevorzugt zum grafischen
Gparted greifen. Für die beiden verbleibenden und interessantesten Ext-Tools –
tune2fs und e4crypt – folgen konkrete Einsatzbeispiele.
Laufwerksoptionen mit tune2fs steuern
Das Werkzeug tune2fs steuert viele
Dateisystemeigenschaften wie die zu schreibenden Metadaten, die Absicherung
durch das Journaling oder die Häufigkeit von Integritätschecks. Selbst auf der
Systempartition sind nicht immer Standards erforderlich, auf externen
Datenträger noch weniger. Klar ist dennoch: Folgende Eingriffe verringern die
Robustheit des Dateisystems und bleiben eine Ermessensfrage.
Ext4-Journaling
abschalten: Auf externen Laufwerken mit (oft nur redundanten) Benutzerdaten
ist die Absicherung durch das Journalprotokoll selten notwendig. Ohne
Journaling entfallen viele Schreibaktionen, was den Datendurchsatz
beschleunigt. Oft wäre dort die Wahl des Journal-freien Vorgängers Ext2 von
vornherein die bessere Wahl, aber auch auf Ext4 lässt sich Journaling
deaktivieren (hier für „sde1“):
sudo umount /dev/sde1
sudo tune2fs -O ^has_journal /dev/sde1
„tune2fs -O“ (Buchstabe „O“) entfernt
Dateisystemattribute mit „^“, während „+“ solche hinzufügen
kann. Die aktuellen Eigenschaften ermitteln Sie so:
sudo tune2fs -l /dev/sde1
Die Ausgabe wird nach obiger Aktion neben
„Filesystem features“ das Attribut „has_journal“ nicht mehr
anzeigen.
Ext4-Checks
reduzieren: Folgender tune2fs-Befehl
sudo tune2fs -i60 -c100 /dev/sda
reduziert die
Datenträgerchecks: Die langwierige Prozedur wird dann nur noch alle 60 Tage
(„-i60“) oder nach 100 Neustarts („-c100“) erfolgen – je
nachdem, welches Ereignis früher erfüllt ist.
Reservierten root-Speicher
reduzieren: Ext4 reserviert auf jeder Partition Speicherplatz für das
root-Konto. Falls ein System durch eine vollgeschriebene Systempartition
lahmgelegt wird, kann sich noch root anmelden. Der reservierte Platz beträgt immerhin
fünf Prozent der Gesamtkapazität und lässt sich gefahrlos verringern:
sudo tune2fs -m 1 /dev/sda1
Dies reduziert die Anzahl der root-Reserve auf Partition „/dev/sda1“
auf ein Prozent. Ganz ausschalten („-m 0“) sollten Sie die Reserve
aber nicht.
Ext4-Metadaten reduzieren: Ext4-formatierte Partitionen speichern bei jeder
Datei mehrere Zeitangaben. Erstelldatum und Änderungsdatum werden immer
eingetragen (ctime und mtime: Creation und Modification). Optional ist hingegen
das Erfassen des letzten Dateizugriffs (atime: Access). Diese Information ist
nur dann relevant, wenn Sie mit „find -atime“ nach Zugriffszeiten von
Dateiobjekten suchen. Wenn Sie das nie tun, kann die Festplattenaktivität
reduziert werden. Hier hilft ausnahmsweise nicht tune2fs, sondern nur ein
Eingriff in die Datei /etc/fstab:
UUID=[…] / ext4 noatime 0 2
Wenn in der
Optionen-Spalte bereits Einträge stehen, setzen Sie „,noatime“ an
deren Ende (mit Trennkomma). Der Vollständigkeit halber: Es gibt auch noch die
Option „nodiratime“, die bei Verzeichnissen darauf verzichtet, die
Zugriffszeit zu vermerken. Wenn Sie die Aktivität der Festplatte reduzieren möchten,
ist „noatime“ die weitreichendere Maßnahme.
Verschlüsselung mit Ext4
Ext4 hat durch Google transparente Verschlüsselung
erhalten, die Google im Hinblick auf Android-Geräte entwickelt hat. Die Leistung
der Ext4-Verschlüsselung ist mit Cryptsetup/LUKS vergleichbar oder sogar besser,
außerdem fordert Ext4-Verschlüsselung keine Neuformatierung. Trotzdem muss man
diese Option unter Linux noch deutlich kritisch beurteilen – nach dem Motto: Es
funktioniert im Prinzip. Die nachfolgend beschriebene Aktion beschränkt sich
auf das einfache, aber realistische Szenario, dass das Verzeichnis eines
USB-Datenträgers nur auf genau einem PC gelesen werden darf.
Da eine engere Desktop- oder Dateimanager-Integration fehlt,
müssen im Terminal die beiden Tools tune2fs und e4crypt zusammenarbeiten. Folgendes
Kommando
sudo tune2fs -O +encrypt /dev/sdc1
aktiviert zunächst die Verschlüsselung für Partition
/dev/sdc1 (auf bereits vorhandene Daten hat diese Aktion keine Auswirkung). Danach
benötigt die Verschlüsselung einen Ext4-Schlüssel:
e4crypt add_key
Das Passwort wird nur einmal abgefragt und hat keine
Komplexitätsanforderungen. Dieser Schlüssel wird im Schlüsselbund des gerade
angemeldeten Benutzers gespeichert. Der Befehl
keyctl show
gibt Einblick in den Schlüsselbund (eventuell muss dafür
das kleine Paket „keyutils“ nachinstalliert werden) und zeigt den neuen
Ext4-Schlüssel als „logon: ext4:…“. Die nach „ext4:“
folgende Hexadezimal-ID brauchen Sie zur Verschlüsselung des Verzeichnisses (Beispiel):
e4crypt set_policy [Hex-ID] /media/lw/Privat
Ab sofort werden alle neuen Dateien im Verzeichnis „Privat“
automatisch auf Dateisystem-Ebene verschlüsselt gespeichert und transparent
wieder entschlüsselt. Das funktioniert, solange der Ext4-Schlüssel im
Schlüsselbund gespeichert ist, also bis zur nächsten Anmeldung am System. Ohne
Schlüssel bleibt der Datenträger zwar insgesamt lesbar, aber der Ordner
„Privat“ zeigt nur Zeichensalat – auch bei den Dateinamen. Für
erneuten Zugriff auf die Daten genügt nach dem Einhängen des Ext4-Datenträgers
die erneute Eingabe dieses Befehls:
e4crypt add_key
Das Tool fragt das Passwort ab und lädt bei korrekter
Eingabe den Ext4-Schlüssel in den Schlüsselbund. Das Verzeichnis und die
enthaltenen Dateien sind dann sofort wieder lesbar. Das Systemkonto, das diese
Aktion ausführt, spielt keine Rolle. Wer auf dem betreffenden Rechner das
Kennwort weiß, hat Zugriff auf das verschlüsselte Verzeichnis des
Ext4-Datenträgers.
Das Dateisystem ZFS
Das ursprünglich für Sun Solaris entwickelte ZFS gilt als „last word in filesystems“. Es geht über die engere Definition eines „Dateisystem“ weit hinaus, kennt keine Limits, besitzt alle Funktionen und Metadaten und integriert einen Volume Manager.
Eine gerechte Bewertung von ZFS ist nicht einfach: Metadaten, Besitzrecht, ACLs, Streams, Zeitstempel, Checksummen, Hardlinks, Softlinks, Quotas, Journaling, Caching? Alles drin – und viel mehr: Das Dateisystem hat nach heutigem Ermessen keine Größen- oder Mengenbegrenzungen. Dazu arbeitet es als Volume Manager zum Zusammenlegen von Festplattenpools, verkleinert/vergrößert den Pool online durch Hotplug oder Entnahme von Datenträgern. Der integrierte RAID-Z-Controller ermöglicht ausfallsichere Mehrfachspeicherung. Automatische und manuelle Snapshots sorgen für Systemsicherheit (neben der automatischen Fehlerkorrektur und Journaling). Datenkomprimierung, Verschlüsselung und Netzfreigaben erledigt ZFS noch nebenbei.
ZFS im Desktop-Anflug (Ubuntu)? Kaum je zuvor ist auf dem
PC-Desktop etwas so krass Überdimensioniertes gelandet wie dieses Dateisystem.
Das ist kein SUV oder Pick-Up, der nicht in die Garage passt: Hier landet ein Chinook-Transporthubschrauber im Schrebergarten. „Viel zu groß“
ist aber nur das eine Problem, fast noch gewichtiger ist die Tatsache, dass für
dieses Flugobjekt kein Führerschein A bis D ausreicht. Wer die Piloten-Ausbildung
machen will, muss ein Semester einplanen.
ZFS: Werkzeuge und Grundlagen
ZFS ist nicht im Linux-Kernel integriert, weil Linus
Torvalds dies – auch, aber nicht nur – aus lizenzrechtlichen Bedenken ablehnt. Die
einzige Linux-Distribution, die optionale ZFS-Unterstützung direkt mitbringt,
ist Ubuntu 20.04/20.10, sofern diese Option bei der Ubuntu-Installation gewählt
wurde. Überall sonst – und auch unter Ubuntu ohne ZFS-Installation – lässt sich
das ZFS-Dateisystem mit diesen beiden Paketen
sudo apt install zfsutils-linux zfs-fuse
nachrüsten. Eine Integration in grafische Werkzeuge ist
dadurch aber nicht gegeben, ZFS erfordert grundsätzlich Terminalarbeit. Die in
den genannten Paketen enthaltenen Terminalprogramme sind mit zfs, zpool und
zfs-fuse überschaubar, hinzu kommen noch eher periphere Tools zdb (Debugger)
und zstreamdump (Output-Filter für „zfs send“). Die geringe Toolanzahl
kann aber nicht lange darüber hinwegtäuschen, wie komplex ZFS ist: Die Manpages
für die beiden Werkzeuge zfs und zpool könnten mit etwas Kommentierung dieses
Magazin füllen.
ZFS fordert eine großzügige Cache-Verwaltung, deren
RAM-Verbrauch von der Festplattenkapazität abhängt: Einige Hundert MB gehen
verwaltungstechnisch grundsätzlich weg, ferner pro TB Plattenkapazität etwa ein
GB RAM. Ein Desktop-Rechner mit einer 4-TB-Platte muss also etwa 4 GB RAM für
ZFS abzweigen. Außerdem laufen für ZFS mindestens vier Systemdienste, der
wichtigste heißt „zfs-zed“.
Wer sich bei einer Ubuntu-Installation für ZFS
entscheidet, erlebt dies erst einmal als unkomfortable Zunahme an Komplexität:
Laufwerkstools wie Gparted oder Gnome-Disks zeigen die rpool-Partitionen von
ZFS zwar an, können sie aber nicht bearbeiten. Terminaltools wie mount, lsblk
oder df werden durch die komplexe ZFS-Partitionierung durchweg unübersichtlicher.
Für produktive Nutzung sind „zfs“ und
„zpool“ zuständig. Ersteres verantwortet die Eigenschaften des
Dateisystems, zweiteres ist für die Verwaltung der Datenträger zuständig, die
bei ZFS immer als „Pool“ organisiert sind, selbst wenn nur ein
Datenträger vorliegt. Der Befehl
zpool list
zeigt die aktuellen
ZFS-Datenträger des Pools an, Basisbefehle wie „zpool create“ oder
„zpool add“ formatieren Datenträger mit ZFS oder fügen sie einem
bestehendem Pool hinzu.
Einem Pool untergeordnet sind ZFS-Datasets, die
keineswegs einem kompletten Datenträger entsprechen müssen. In Datasets werden Standardpfade
und Snapshots als je einzelnes Dateisystem verwalten, wie folgender zfs-Befehl zeigt:
zfs list
Er bringt die Mount-Übersicht und informiert über den
Belegungszustand. Eine detaillierte Anzeige der ZFS-Eigenschaften pro Dataset
oder Verzeichnispfad liefert dann folgender Befehl:
zsf get all /
Die hier angezeigte, umfangreiche Liste der
ZFS-Eigenschaften können Sie auch einzeln abfragen. So ist etwa eine
Eigenschaft wie „compressratio“ mit
zfs get compressratio
global über den
gesamten Pool zu ermitteln. Sicher gewöhnungsbedürftig sind dabei die ZFS-Pfadangaben
wie „rpool/USERDATA/lw_0am7f7“ mit ID. Dass dies (in unserem Fall) mit
/home/lw zu übersetzen ist, zeigt der bereits genannte Befehl „zfs list“.
Beispiel 1: ZFS-Snapshots
Wer Ubuntu mit ZFS installiert hat, sieht bei jeder Installation im Terminal Infos wie folgende
(Beispiel):
Anforderung zur Speicherung des aktuellen Systemzustands
Erfolgreich als "autozsys okpszm" gespeichert
ZFS ist also unter
Ubuntu soweit integriert, dass bei jeder Installation standardmäßig ein Snapshot
entsteht. Dies gilt für Installationen aus den normalen Paketquellen im
Terminal wie im grafischen Software-Center. zfs kann alle Snapshots auflisten:
zfs list -t snapshot [-o name,creation -s creation]
Was in eckiger Klammer steht, ist nicht zwingend,
reduziert aber auf Snapshot-Namen und Erstelldatum und sortiert („-s“) nach dem
Erstelldatum – neueste zuletzt. Snapshot-Namen bestehen aus dem ZFS-Pfad,
gefolgt von einem „@“ und dem Namen des Snapshots. Eine Bezeichnung
wie
rpool/USERDATA/lw_0am7f7@autozsys_w6sj7d
zeigt einen automatischen Snapshot („autozsys_…“) im
Home-Verzeichnis /home/lw („rpool/USERDATA/lw_0am7f7“). Periodisch landen Snapshots auch im Grub-Menü. Damit kann der
Systembenutzer über das Bootmenü zu einem früheren Systemzustand zurückkehren.
Wird Systemstart mit Umschalt-Taste (Bios-Boot) oder Esc (Uefi-Boot) unterbrochen,
dann zeigt Grub den zusätzlichen Eintrag „History for Ubuntu…“ und
darunter dann die einzelnen Sicherungen (Beispiel):
Revert to 24.12.2020 @ 16:22
Mit dem Befehl
sudo zfs snapshot create […]
lassen sich Snapshots manuell erstellen – allerdings erwartet
ZFS dabei die Pfadangabe gemäß seiner rpool-Verzeichnisstruktur:
Mit seiner internen Komprimierung kann ZFS erheblich
Platz sparen. Bei einer Ubuntu-Installation mit ZFS ist je nach Format der
Benutzerdateien ein Platzgewinn von bis zu 50 Prozent zu erzielen. Die Komprimierung
kann auch ad hoc für externe Datenträger genutzt werden. Im folgenden Beispiel
bearbeiten wir einen USB-Stick (/dev/sde):
sudo zpool create -f stick32 /dev/sde
Dies bedeutet eine
ZFS-Formatierung, die alle bisherigen Daten löscht. Danach liefert der Befehl
sudo zfs get all stick32
die Menge aller ZFS-Attribute und zeigt, dass die
Eigenschaft „compression“ aktuell auf „off“ steht. Das
ändert dieser Befehl:
sudo zfs set compression=lz4 stick32
Die erneute Abfrage der Eigenschaften zeigt nun bei
„compression“ den Wert „lz4“. Das war’s schon. Der USB-Stick
ist unter /stick32 im Dateisystem eingehängt und kann nun genutzt werden,
nachdem der Benutzer mit
sudo chown -cR sepp:sepp /stick32
den Besitz übernommen hat.
Beispiel 3: ZFS-Verschlüsselung
Um einen verschlüsselten
Bereich zu erstellen, beginnt man mit einem neuen Pool unter Angabe eines
Namens und der Gerätekennung (hier: /dev/sde):
sudo zpool create mystick /dev/sde
Auf dem neuen Datenpool
„mystick“ entsteht nun mit Namen „privat“ der verschlüsselte
Bereich. Nach folgendem Befehl
BTRFS hat als der etwas kleinere ZFS-Konkurrent das Potential für den künftigen Linux-Standard am Desktop. Es bietet fundamentale Vereinfachungen für die Datenträger-Administration ohne die überdimensionierten Maße eines ZFS.
BTRFS (B-Tree-Filesystem, „Butter FS“, „Better FS“) gibt es seit 2007, ist seit 2009 im Linux-Kernel und gilt seit 2014 als stabil. BTRFS hat viele Gemeinsamkeiten mit ZFS und gilt als dessen kleineres Linux-Pendant, das besser auf die Leistung und die Anforderungen am Linux-Desktop- abgestimmt ist und keine zusätzlichen RAM-Ressourcen fordert. Dennoch bleiben die BTRFS-Spezialitäten vorerst „nur“ optional interessant und für ein typisches Desktop-System sicher nicht zwingend. Bemerkenswert ist die interne Datenkomprimierung, während Datenverschlüsselung (im Unterschied zu ZFS) weiterhin fehlt.
Als Formatierungsoption für interne wie externe Laufwerke
hat BTRFS überall in den grafischen Werkzeugen wie Installer oder
Laufwerksverwaltungen Einzug gefunden. Überwiegend findet der Umgang mit BTRFS
aber im Terminal mit den Programmen statt, die das in der Regel vorinstallierte
Paket „btrfs-progs“ (früher „btrfs-tools“) mitbringt. Das
wichtigste dieser Tools nennt sich schlicht „btrfs“ und bringt eine
Menge an Unterfunktionen mit. Dieser Beitrag hat nur Platz für die
interessantesten Fähigkeiten von BTRFS.
BTRFS-Snapshots
BTRFS bietet Snapshots (Systemsicherungspunkte), um – mit
einem einzigen Befehl – den aktuellen Partitionszustand zu sichern. Während
grafische BTRFS-Tools, die über die grundlegende Formatierung (etwa mit
Gnome-Disks) hinausgehen, den meisten Distributionen fehlen, hat Open Suse die
Integration ein Stück verbessert. Das Konfigurationszentrum Yast2 bringt mit
der Komponente Yast2-Snapper bringt die wichtige Snapshot-Verwaltung in
grafischer Darstellung. Dort genügt ein Klick auf „Erzeugen“ für
einen manuellen Schnappschuss und „Löschen“ für das Entfernen des
markierten Eintrags. Der Punkt „Änderungen anzeigen“ führt zu einem
Detailbericht für den markierten Schnappschuss, der gezieltes Zurückschreiben
einzelner Dateien ermöglicht – eine kleinteilige Arbeit, die zumindest für
Systemdateien gute Kenntnisse voraussetzt. Bedauerlich ist, dass der
Yast2-Snapper kein komplettes Rollback zu einem früheren Zustand auslösen kann.
Hierfür bietet Opensuse sein Bootmenü mit Auswahl der Snapshots, im laufenden
Betrieb außerdem das Terminaltool Snapper:
sudo snapper list
Dies zeigt zunächst sämtliche Snapshots mit Kennzahl.
Dort suchen Sie den geeigneten Snapshot
anhand des Datums und geben dann diesen Befehl
sudo snapper rollback [x]
mit der zugehörigen Kennziffer ein. Danach starten Sie das
System neu. Beim Rollback geschieht grundlegend anderes als beim
Wiederherstellen einzelner Dateien im Yast-Modul: Hier hängt Snapper den kompletten
Snapshot an die ursprüngliche Stelle ins Dateisystem ein und ersetzt dabei die
bisherigen Daten.
Insgesamt erscheint die Snapshot-Integration in Open Suse
prinzipiell verdienstvoll, aber für Desktop-Nutzer unzureichend. Wer sich mit
BTRFS-Snapshots genauer befassen will, kommt trotz Yast2-Snapper und
Konsolen-Snapper am zugrundeliegenden Basisprogrammen btrfs nicht vorbei
(Beispiel):
Die Quelle – hier
„/home“ – ist kein beliebig wählbarer Pfad, sondern muss ein existierendes
BTRFS-Subvolume sein, welche wiederum der Befehl
sudo btrfs subvolume list /
liefern kann.
Snapshots sind auch bei größeren Laufwerken blitzschnell
erledigt, da es sich vorläufig nur um einen Zeiger auf identische Dateiobjekte
handelt. Erst bei Änderungen muss BTRFS die Originalversion für den Snapshot
gesondert speichern. Der Snapshot wird dauerhaft den Originalzustand anzeigen
und diesen erhalten, egal was im Originalordner geschieht. Ein
„Rollback“, wie es Snapper nennt, gibt es eigentlich nicht: Vielmehr wird
das bisherige Original ausgehängt und der Snapshot eingehängt.
BTRFS-Komprimierung auf SSD
BTRFS bietet für komplette Datenträger transparente
(Hintergrund-) Komprimierung aller gespeicherten Dateien. Auf SSDs mit wenig
Kapazität kann eine Linux-Installation mit BTRFS Platz sparen und obendrein den
Datendurchsdatz erhöhen. Preis ist eine höhere Prozessorlast, was aber bei
aktuellen CPUs kaum auffallen sollte. Wenn Linux mit BTRFS installiert wurde
(was inzwischen auch Ubuntu & Co anbieten), lässt sich die optionale
Komprimierung für das root-Dateisystem in der Datei /etc/fstab einrichten. Nach
sudo nano /etc/fstab
werden Sie eine gut gefüllte Datei mit diversen
Subvolumes vorfinden. Für das root-Verzeichnis „/“ wird als Dateisystem
„btrfs“ und in der Optionenspalte lediglich „defaults“
anzutreffen sein. Für zusätzliche Komprimierung ergänzen Sie die Option
„compress“:
Theoretisch kann Analoges auch für „subvol=/@/home“
und weitere Subvolumes erfolgen.
BTRFS-Komprimierung auf USB
Wer Bedenken vor der Formatierung und Komprimierung eines
Systemdatenträgers hat, sollte BTRFS immerhin für externe Laufwerke in Erwägung
ziehen. Neben dem standardmäßig vorgesehenen
sudo mkfs.btrfs /dev/sd[x]
bieten auch die Gnome- und KDE-Laufwerkstools
BTRFS-Formatierung. Falls die optionale Kompression gewünscht ist, sollte sie baldmöglichst
nach der Formatierung aktiviert werden, da sie erst ab diesemZeitpunkt wirkt
(vorher vorhandene Daten bleiben unberücksichtigt). Dies geschieht am
Mountpunkt des eingehängten Laufwerks (hier „/media/sepp/btrfs-stick“):
sudo btrfs property set /media/sepp/btrfs-stick compression zstd
Das Attribut bleibt dann permanent gesetzt, auch nach
Aushängen und erneutem Einhängen. Davon und von den aktuellen Eigenschaften
eines BTRFS-Dateisystems können Sie sich mit
btrfs property get /media/sepp/btrfs-stick
jederzeit überzeugen. BTRFS-Kompression kann gerade bei
langsamen USB-Laufwerken und Speicherkarten den Datendurchsatz deutlich
verbessern.
BTRFS: Weitere Praxis-Beispiele
Konvertierung:
Das Tool btrfs-convert (im Paket btrfs-progs enthalten) kann von einem Livesystem
aus das Ext4-Dateisystem eines bereits installierten Linux zu BTRFS zu
konvertieren. Wir raten ab – nicht aus empirischer Erfahrung, sondern aufgrund
prinzipieller Vorsicht vor Eingriffen dieser Dimension.
Datenträger
zusammenlegen: Folgender Befehl
sudo mkfs.btrfs /dev/sdc /dev/sdd
legt zwei (ausgehängte) Datenträger zu einem logischen
Volume zusammen. Achtung – das ist eine Formatierung und eventuelle Daten auf
den Laufwerken gehen verloren. Um diesen neuen Speicherplatz einzuhängen,
benötigen Sie ein leeres Verzeichnis und einen Mount-Befehl:
sudo mount /dev/sdc ~/Sticks
Es spielt keine Rolle, welche der beiden Geräte-Kennungen
Sie verwenden. Sie können später noch weitere Datenträger hinzufügen:
sudo btrfs device add /dev/sdf ~/Sticks/
Das gilt analog auch
für root-Dateisystem („/“), falls dort der Speicherplatz knapp wird:
sudo btrfs device add /dev/sdf /
Größenänderungen:
Wie schnell BTRFS Größenänderungen auf einem Volume oder einem Verbund
erledigt, zeigt dieser Befehl:
sudo btrfs filesystem resize -10g /
Das verkleinert das root-Dateisystem um 10 GB.
Windows-Dateisysteme unter Linux
Für eine Linux-Installation stehen die Windows-Dateisysteme NTFS, FAT32 und exFAT nicht zur Diskussion. Ganz anders sieht es bei externen Datenträgern aus, die unter verschiedenen Betriebssystemen und Geräten genutzt werden sollen.
Selbst kompromisslose Linux-Anwender sind gut beraten, auf das verbreitete Windows Rücksicht zu nehmen. USB-Sticks oder USB-Festplatten sind unter Windows schlicht nicht verwendbar, wenn die Datenträger mit einem Linux-Dateisystem formatiert sind (Ext, XFS, BTRFS, ZFS…). Die Windows-Reaktion „Sie müssen den Datenträger formatieren…“ ist borniert bis arrogant, weil Microsoft zweifellos in der Lage wäre, zumindest ein Ext4 einzubinden. Aber diese Weigerung ist seit Jahren Status Quo und wird sich auch nicht zeitnah ändern. Daher ist es fast unausweichlich, für mobile Laufwerke (eventuell auch in weiteren Situationen) auf ein Microsoft-Dateisystem auszuweichen.
FAT32: Limitiert, aber unkompliziert
Das alte FAT32 (seit 1996) hat gegenüber moderneren
Nachfolgern nur einen großen Pluspunkt – es ist wirklich unter jedem PC-System
(alte und neue Linux-, Windows-, Mac-OS-Versionen) lesbar und beschreibbar. Unterhaltungselektronik
wie Smart-TVs, Hifi-Receiver oder Auto-Soundsysteme werden am USB-Port in jedem
Fall einen FAT32-Datenträger einlesen. Sämtliche PC-Betriebssysteme können Datenträger
auch selbst mit FAT32 formatieren. Da FAT32 außer zwei Zeitstempel keine
Metadaten und keine Dateirechte anbietet, eignet es sich ausschließlich als
Datencontainer insbesondere für USB-Sticks. Das Größenlimit für den Datenträger
von 32 GB unter Windows ist künstlich (siehe unten).
4-GB-Datei-Limit:
Entscheidender ist das FAT32-Limit für eine einzelne Datei von 4 GB. IMG- und
ISO-Dateien überschreiten diese Größe häufig ebenso wie hochauflösende
Filmdateien. Während Windows das Größenproblem im Falle des Falles sofort
meldet, kopiert Linux bis zum Erreichen der Grenze und bricht erst dann mit einer
Fehlermeldung ab. Für USB-Medien, die keine riesigen Imagedateien oder Filmdateien
aufnehmen müssen, reicht FAT32 aber völlig aus.
32-GB-Datenträger-Limit:
Bei USB-Sticks, -Festplatten, SD-Karten größer als 32 GB unterschlägt Windows
beim Formatieren die Option „FAT32“ und schlägt nur „NTFS“
und „exFAT“ vor, als wäre dies bei Datenträgern dieser Größe
technisch nicht anders möglich. Das müssen Sie nicht akzeptieren, wenn ein
Linux im Haus ist. FAT32 kann problemlos auch große Datenträger verwalten,
indem es einfach die Blockgröße entsprechend hochskaliert. Verwenden Sie etwa
Gnome-Disks oder den KDE-Partitionmanager zum Formatieren. FAT32 erscheint dort
in der Regel einfach als „FAT“, zum Teil auch erläutert als
„Kompatibel mit allen Systemen…“.
USB-Medien mit Livesystemen
/ Multiboot-Livesystemen: Im Unterschied zu installiertem Linux laufen
Linux-Livesysteme sehr wohl auf auch auf FAT32. In den meisten Fällen ist hier
FAT32 sogar notwendig oder empfohlen. Tools wie Unetbootin (http://unetbootin.github.io/) zum
Erstellen von Livesystemen oder Tools wie Yumi(www.pendrivelinux.com/yumi-multiboot-usb-creator)
zum Einrichten von Multiboot-Livesystemen setzen eine FAT32-Formatierung
schlicht voraus.
exFAT: „Großer“ Datenaustausch
exFAT ist ähnlich simpel wie FAT32 und besitzt keine
Metadaten für Rechte. Entscheidender Unterschied zu FAT32 ist die unlimitierte
Größe für Einzeldateien. Wer ISO/IMG-Images und Filme zwischen Linux und Windows austauschen will,
kann mit exFAT auf USB- und SD-Datenträger wenig falsch machen. Nachdem der
Dateisystemtreiber Einzug in den Linux-Kernel gefunden hat, ist exFAT unter Linux
größtenteils ohne Nachhilfe nutzbar. Auch grafische Werkzeuge wie Gnome-Disks („Partition
formatieren -> Andere -> exFAT“) bieten inzwischen direkte
exFAT-Unterstützung, und Dateimanager laden entsprechende Datenträger
automatisch. Ausnahme: Der Partitionierer Gparted hat exFAT zwar in seiner Dateisystemliste,
will aber bislang nicht mit exFAT formatieren (inaktiv).
SDHX-Karten:
Der jüngere SDHX-Standard bei SD-Karten, der sehr große Kapazitäten erlaubt,
empfiehlt grundsätzlich eine Formatierung mit exFAT.
Exorbitante Blockgröße: Während sich normale
Blockgrößen (Cluster) bei Dateisystemen im KB-Bereich bewegen, kann die
maximale Blockgröße bei exFAT theoretisch bis zu 32 MB betragen! Aus diesem
Grund kann das relativ einfache Dateisystem praktisch beliebig große
Datenträger adressieren. Empirisch lassen sich unter Linux aber offenbar
„nur“ maximal 4-MB-Blöcke einrichten, und dies auch nur im Terminal:
sudo mkfs.exfat -s 8192 /dev/sd[x][n]
Die von vier MB völlig abweichende Zahl „8192“
ergibt sich aus der Vervielfachung der kleinsten Einheit „1“, die
512-Byte-Cluster erstellt. Wenn von vornherein klar ist, dass ein Laufwerk ausschließlich
sehr große Dateien aufnehmen wird, dann ist eine derart extreme Formatierung
durchaus sinnvoll und beschleunigt alle Dateivorgänge. Für kleine Dateien bedeutet
das hingegen pure Platzverschwendung. Dies gilt im Prinzip für alle
Dateisysteme, ist aber bei dem ungewöhnlichen exFAT eine besondere Erwähnung
wert.
Nachinstallation:
Wo exFAT unter Linux tatsächlich noch fehlen sollte, ist es mit
sudo apt install exfat-fuse exfat-utils
schnell nachgerüstet (im Beispiel für Debian/Ubuntu & Co).
NTFS: Auf USB kontraproduktiv
Sofern nicht dumme Geräte der Unterhaltungselektronik
berücksichtigt werden müssen, scheint NTFS auf den ersten Blick die beste Wahl
für Austauschdatenträger. Das trifft aber nur bedingt zu. Externe
USB-Datenträger mit NTFS-Formatierung rangieren unter Linux im Prinzip als
rechteloses FAT-Dateisystem: Wenn Linux-Standardbenutzer – Systemverwalter sowieso
– externe Geräte ein- und aushängen, erhalten sie auf NTFS-Partitionen (wie auf
FAT32 oder exFAT) vollen Lese- und Schreibzugriff. Das sollte zunächst auf einem
Austauschdatenträger nicht stören, kann aber erheblich stören, wenn von
Windows-Seite spezielle NTFS-Eigenschaften aktiviert wurden. Dateien, für die
etwa unter Windows Komprimierung oder Verschlüsselung angefordert wurde, werden
unter Linux nicht ankommen. Andererseits wird Linux eingestellte NTFS-Benutzerrechte
ignorieren.
Mit anderen Worten: NTFS ist als Austauschformat solange
in Ordnung, als seine eigentlichen Fähigkeiten nicht genutzt werden und es nur
als unkompliziertes Containerformat dient. Dann kann man aber gleich zum
simplen FAT32 oder exFAT greifen.
FAT32 / exFAT und Samba-Freigaben
Datenträger mit rechtelosen Dateisystemen per Samba freizugeben,
ist ein absoluter Komfort-Tipp für faule Heim-Administratoren. Dateirechte
fallen komplett weg und es zählen nur noch die Netzwerkrechte, die in der
Samba-Konfigurationsdatei (/etc/samba/smb.conf) mit wenigen Zeilen definiert
sind:
Wer sich als „sepp“ ausweisen kann (Benutzer-
und Samba-Konto sind natürlich Voraussetzung), kann auf dieser (exFAT-)
Freigabe mit vorhandenen und neu erstellten Dateien machen, was er will.
Systemctl ist das wichtigste Werkzeug zur Kontrolle und Steuerung des Linux-Dienstes Systemd – aber nur eines von vielen. Der Funktionsumfang dieser Tools ist so beeindruckend (und anstrengend) wie der generelle Allmachtsanspruch von Systemd. Der primäre Init-Daemon Systemd herrscht über alle weiteren Systemprozesse und hält für den Benutzer eine ganze Palette von Tools bereit, wie die nachfolgende Liste zeigt:
Eine nähere Auseinandersetzung mit systemd und seinen
Steuerungsprogrammen ist mittlerweile alles andere als ein Nischenthema,
nachdem fast alle namhaften Linux-Distributionen systemd verwenden, unter
anderen Arch, Debian, Fedora (und Red Hat Enterprise sowie Cent OS), Mageia, Mandriva,
Opensuse (und Suse Enterprise), Siduction, insbesondere aber auch Ubuntu mit
sämtlichen Derivaten (wie Mint, Peppermint, Chromium, Netrunner, Bodhi,
Elementary, Zorin…). Dieser Init-Prozess systemd ist allerdings ein Kosmos für
sich – ein logischer, aber hochkomplexer mit Allmachtsanspruch, und dabei reichlich
verkopft. Von den uferlosen Kommandos und Optionen werden selbst professionelle
Administratoren kaum 10 Prozent im Alltag benötigen und höchstens fünf Prozent
verinnerlichen. Natürlich ist das gesamte Potential ein Fall für das Terminal,
wobei Infobefehle in der Regel mit Benutzerrecht arbeiten, Änderungen jedoch
„sudo“ erfordern. Grafische Frontends wenigstens für die allerwichtigsten
Funktionen sind in Arbeit, aber bislang ist keines über die Beta-Phase
hinausgekommen, weswegen wir dazu auch keine Empfehlung abgeben.
Systemd-Werkzeuge: Eine Übersicht
Der einfachste und fast alternativlose Weg, sich über den
enormen Toolbestand von systemd zu informieren, ist der Blick in das
Gesamtpaket:
dpkg-query -L systemd
Neben systemctl treffen Sie hier auf eine Armee von Hilfsprogrammen. Die man-Pages aller systemd-Werkzeuge könnten mühelos eine komplette LinuxWelt füllen – und dabei ist Vieles noch unzureichend kommentiert. Die nachfolgenden Beispiele beschränken sich auf wenige alltagstaugliche Aufgaben.
networkctl
zeigt zunächst nur die Netzwerksschnittstellen. Wenn Sie
dort erfahren, dass der Ethernetadapter „eth0″ oder “ enp2s0″
heisst, dann erfragen Sie mit
networkctl status enp2s0
alle Parameter von der IP- und MAC-Adresse bis zu MTU,
Speed und Gateway-Adresse (Router) oder noch ausführlicher mit
networkctl status enp2s0 --stats
zusätzlich die gesendeten und empfangenen Bytes. Das eher
funktionsarme Kommando hostnamectl zeigt ohne Parameter
hostnamectl
den Hostnamen des Rechners sowie auch einige Basisinfos
zu System, Kernel und Architektur. Mit dem Befehl
hostnamectl set-hostname bolide
vergeben Sie umstandslos einen neuen Rechnernamen.
Journalctl: Dieses Tool ist ein sehr präzises Werkzeug, um
das Systemprotokoll zu zeigen, zu filtern und zu bearbeiten. Da eine ungefilterte
Ausgabe des Journals uferlos ausfällt, eignen sich zur Analyse folgende
Filteroptionen: Die Befehle
journalctl --boot
journalctl --since today
bringt nur die Meldungen seit dem letzten Systemstart
beziehungsweise die des heutigen Tages. Nach journalctl –list-boots kann auch jede beliebige Boot-ID mit journalctl –boot [ID] abgefragt werden.
Ebenfalls systematisch ist die Eingrenzung nach einem Systemdatum
journalctl --since "2020-09-18"
oder zusätzlich nach einem bestimmten Ereignislevel:
journalctl --priority "crit" --since
"2020-09-18"
Priority-Level wie hier („crit“) können durch
ein Schlüsselwort oder durch eine Kennziffer übergeben: „emerg“ (0), „alert“
(1), „crit“ (2), „err“ (3), „warning“ (4), „notice“ (5), „info“ (6), „debug“
(7). Ein Level kumuliert immer alle Meldungen der niedrigeren Stufen, das
heißt: „crit“ (2) präsentiert auch die Level 0 und 1.
Wer genau weiß, wo er ein Problem zu suchen hat, kann
auch gleich nach dem betreffenden Dienst („unit“) eingrenzen. Die
Protokollausgabe von
zeigt alle Meldungen des Apache-Servers ab dem
angegebenen Datum.
Nicht zuletzt kann journalctl den Umfang der
Systemprotokollierung steuern. Mit
journalctl --disk-usage
fragen Sie die den
aktuellen Umfang ab. Befehle wie
journalctl --vacuum-size=300M
journalctl --vacuum-time=30d
können das Journal auf 300 MB reduzieren oder auf die Aufzeichnung
der letzten 30 Tage kürzen. Wer dies nicht manuell erledigen will, kann auch
die /etc/systemd/journald.conf ändern, um ein solches Limit dauerhaft
einzustellen.
Homectl:
Dieses hochkomplexe Tool ist ein großes Versprechen, weil es das Home-Verzeichnis
portabel macht und etwa auf einem USB-Laufwerk einrichtet:
homectl create linux --real-name="Linux Welt"
--image-path=/dev/disk/by-id/usb-WD_My_Passport_476fff954b2b5c44-0:0
Solche Homes können
dann nach Bedarf am System ein- und ausgehängt werden. Alle Probleme bei
Dateisystemen und Benutzerrechten sind aber offenbar noch nicht gelöst, sodass
homectl derzeit noch auf den allermeisten Distributionen fehlt.
Weitere Beispiele:
Ein weiteres systemd-Werkzeug hat gewisse Popularität erreicht, da es
Startprobleme, also Verzögerungen des Systemstarts, in aller Präzision
offenlegt. Die simpelste Form („time“ kann auch entfallen)
systemd-analyze time
zeigt nur eine knappe Angabe zur Dauer des Systemstarts,
differenziert aber bereits Bios/Firmware, Bootloader, Kernel und Benutzerkonto.
Die Befehle
systemd-analyze blame
systemd-analyze plot > start.svg
systemd-analyze dump > dump.txt
bringen in unterschiedlicher Darstellung die millisekundengenaue
Abfolge des Systemstarts, wobei mindestens die Option „dump“ über das
Informationsbedürfnis normaler Anwender deutlich hinausgeht.
Wer sich über die geltenden Systempfade und ihre Funktion
informieren will, ist mit dem einfachen Befehl
systemd-path
bestens beraten. Eine ebenfalls vergleichsweise einfache
Funktion erfüllt dieses Kommando (Beispiel):
systemd-cat lsblk
Eigentlich ist systemd-cat ein interner Befehl für
systemd-Dienste, um an das Systemjournal zu berichten. Der Benutzer kann dies
aber auch manuell tun: Die Befehlsausgabe von lsblk würde hier an das Journal
angehängt und kann mit journalctl jederzeit wieder abgefragt werden.
Basis-Kommandos von Systemctl
Systemctl ist aktuell das wichtigste und mächtigste Werkzeug
von systemd. Die lehrbuchmäßige Syntax folgt – wie bei allen systemd-Tools –
diesem Muster:
systemctl Befehl [--Option]
Einige besonders
einfache, aber nützliche Systemkommandos wie
systemctl poweroff
systemctl suspend
systemctl rescue
benötigen keine
weiteren Optionen. Typischer ist folgendes konkrete Beispiel:
systemctl list-units --type=service
Dies liefert eine Übersicht der laufenden und beendeten
Dienste. Dieser Befehl ist nicht so weit entfernt vom altgedienten service –status-all, ist aber auch nur
ein Vorgeschmack der Möglichkeiten. Der Filter „–type=service“ zeigt
schon, dass systemctl eine wesentlich größere Reichweite hat. Weitere
„unit“-Klassen sind „socket“, „device“,
mount“, „automount“, „swap“, „target“,
„path“, „timer“, „snapshot“, „slice“
und „scope“. Das Kommando ohne weitere Filter
systemctl list-units
zeigt alle
Systemd-Klassen. Wir müssen uns im Folgenden auf wenige Beispiele zur
Dienste-, Target- und Timer-Verwaltung beschränken. Beachten Sie, dass jede einzelne Unit ihre eigene Konfigurationsdatei
besitzt, die mit
systemctl edit --full [unit.name]
bearbeitet werden und
folglich auch vom Systembenutzer selbst angelegt werden kann.
Target-Units: Um
alle geladenen „targets“ aufzulisten, ist dieser Befehl geeignet:
systemctl list-units --type=target --state=loaded
Hier tauchen dann unter anderem „emergency“
oder „rescue“ als inaktive „targets“ auf. Das Kommando
systemctl isolate rescue.target
ist eine gravierende Aktion, da sie ohne Umschweife in
die Wiederherstellungskonsole führt und „isolate“ alles beendet, was
für das angeforderte „target“-Ziel nicht benötigt wird. Ein weiterer
praxisnaher Einsatz von systemd-„targets“ ist der Wechsel vom
Desktop- zum Serverbetrieb. Wenn ein Desktop läuft (multi-user.target), aber
auf einem Server unnötig ist, dann schaltet
systemctl set-default multi-user.target
die Oberfläche ab und spart damit viel Ressourcen. Der
Befehl
systemctl set-default graphical.target
kann den Desktop wieder einschalten.
Service-Units:
Die wichtigsten Befehle zur Diensteverwaltung lauten wie folgt:
systemctl status [name].service
systemctl stop [name].service
systemctl start [name].service
systemctl restart [name].service
Diese Kommandos,
angewandt etwa konkret auf den Dienst ssh.service, sind weitgehend
selbsterklärend. „stop“ und „start,“ oder einfacher
„restart“ sind häufig erforderlich, wenn der betreffende Dienst eine
Konfigurationsänderung neu einlesen und berücksichtigen soll. Zum nachhaltigen
Beenden eines Dienstes ist diese Abfolge einzuhalten:
systemctl stop [name].service
systemctl disable [name].service
systemctl mask [name].service
„disable“
deaktiviert einen Dienst, verhindert aber nicht, dass diesen ein anderer
Systemdienst unter der Haube neu aktiviert. Der „mask“-Befehl macht
auch dieses unmöglich. Gegebenenfalls kann
systemctl unmask [name].service
den Dienst wieder
zugänglich machen.
Diverse Dienste zeigen als Status den Eintrag
„static“. Diese lassen sich weder stoppen noch deaktivieren. In
dieser LinuxWelt finden Sie im Special „Linux in Tabellen“ auch eine
Tabelle mit den typischen Linux-Diensten: Die knappe Übersicht informiert,
welche Dienste eventuell entbehrlich sind.
Eingriffe in die Systemdienste sind immer heikel, aber
systemctl kann diese nicht nur erledigen, sondern bietet auch gute Kontrolle.
Eine hervorragend lesbare Übersicht mit farbigen Markierungen („disabled“
rot, „enabled“ grün) zeigt dieser Befehl, der nicht die Dienste,
sondern die darunterliegenden Konfigurationsdateien abfragt:
systemctl list-unit-files --type=service
Zusätzlich zur Farbmarkierung erscheint in der rechten
Spalte die Distributionsvorgabe („Vendor Preset“). Somit erkennt man sofort,
was am System nachträglich geändert wurde.
Timer-Units: Systemd
ist auf dem Weg, zahlreiche alte Zöpfe abzuschneiden. Dienste, Netzwerk, Geräte,
Umgebungsvariablen, Mount-Aktionen sind ebenso betroffen wie die alten Cronjobs,
denn systemd kann auch zeitgesteuerte Aufgaben übernehmen („timer“).
Ganz trivial ist das allerdings nicht, denn damit steckt man mitten in der
systemd-Verwaltung. Der Aufbau einer Timer-Unit sieht etwa so aus:
[Unit]
Description=Backup
[Timer]
OnCalendar=10:00
[Install]
WantedBy=basic.target
Die Zeitsteuerung geschieht im Abschnitt “Timer”. Die Beispieleinträge
bedeuten, dass der Job „Mein Backup“ täglich um 10 Uhr ausgeführt
wird, und die Install-Sektion stellt mit „basic.target“ klar, dass
der Job immer ausgeführt werden soll. Nun muss aber unter /etc/systemd/system
für jede Timer-Unit (etwa fstrim.timer) eine gleichlautende Service-Unit
existieren (fstrim.service). Diese Datei enthält dann als
„ExecStart=…“ das Kommando oder Script, das periodisch ausgeführt
werden sollen. Diese Datei könnte dann so aussehen:
[Unit]
Description=Backup
[Service]
ExecStart=/home/lw/backup.sh
Um einen so definierten Timer interaktiv zu laden, hilft
wieder systemctl: