Die Entwickler des Projekts postmarketOS, das eine Linux-Distribution für mobile Geräte entwickelt, haben die Schaffung einer atomar aktualisierbaren Variante der Distribution bekannt gegeben. Die neue Version trägt den Namen Duranium und zeichnet sich durch die Auslieferung des Systems als ein Ganzes aus, ohne es in separate Pakete zu unterteilen. Es wird darauf hingewiesen, dass die neue Variante der Idee entspricht, dass ein Gerät einfach funktionieren sollte, ohne dass der Benutzer über die Existenz eines Terminals Bescheid wissen oder sich mit den Besonderheiten des Systems auseinandersetzen muss.
Das Systemverzeichnis im Abschnitt /usr wird im Nur-Lese-Modus unter Verwendung des Dateisystems EROFS gemountet und bei jedem Bootvorgang anhand einer digitalen Signatur verifiziert. Der Abschnitt /usr hat eine Größe von 5 GB. Zur Überprüfung der Datenintegrität im Abschnitt /usr wird dm-verity verwendet, und bei Feststellung von Änderungen im Inhalt wird das Booten blockiert. Der Prüfhash wird in das einheitliche Bild UKI (Unified Kernel Image) eingebettet, das den Handler zum Laden des Kernels aus UEFI (UEFI boot stub), das Linux-Kernel-Image und die in den Speicher geladene Systemumgebung initrd, die für die initiale Initialisierung vor dem Mounten des Wurzel-Dateisystems verwendet wird, vereint. Das UKI-Bild wird als eine ausführbare Datei im PE-Format gestaltet und vom UEFI-Bootloader aufgerufen.
Die anderen Verzeichnisse, außer /usr, gehören zum Wurzelverzeichnis, das schreibfähig ist und zwischen Neustarts und Aktualisierungen gespeichert wird. Der Inhalt des Wurzelverzeichnisses wird zwangsläufig mit LUKS2 verschlüsselt, was die Anforderungen an die Hardware erhöht. Das verschlüsselte Wurzel-Dateisystem wird beim ersten Bootvorgang oder nach einem Werkseinstellungsreset erstellt. Standardmäßig wird ein leerer Schlüssel erstellt, der die automatische Entsperrung des verschlüsselten Abschnitts erlaubt. Im Assistenten zur Ersteinrichtung und im Konfigurator wird der Benutzer aufgefordert, ein Passwort zur Entschlüsselung festzulegen.
Die Standardeinstellungen werden im Systemabbild im Verzeichnis /usr/share/factory/etc gespeichert. Während des ersten Bootvorgangs werden im Verzeichnis /etc symbolische Links zu allen Dateien in /usr/share/factory/etc erstellt, mit Ausnahme der Dateien passwd, group, shadow, fstab, machine-id und hostname. Bei Bedarf zur Änderung der Einstellungen während des Betriebs wird der symbolische Link durch eine Kopie der Datei ersetzt.
Updates werden durch den Austausch des gesamten Systemimages installiert. Auf dem Speicher werden zwei identische Root-Partitionen erstellt – eine aktive und eine passive. Das neue Update wird in die passive Partition installiert, ohne die Funktion der aktiven zu beeinträchtigen. Nach der Überprüfung der Korrektheit des installierten Updates und einem erfolgreichen Neustart werden die Partitionen vertauscht – die Partition mit dem Update wird aktiv, während die vorherige aktive Partition in den passiven Modus versetzt wird und auf die Installation des nächsten Updates wartet. Sollte es nach dem Update zu Problemen beim Booten kommen, erfolgt eine automatische Rückkehr zur vorherigen Systemversion.
Ein solcher Ansatz vereinfacht das Debugging und die Problemdiagnose erheblich, da Entwickler den Zustand, in dem der Fehler aufgetreten ist, genau reproduzieren können, ohne die Systemkonfiguration des Nutzers auf der Ebene einzelner Pakete nachstellen und vorhandene Paketversionskombinationen berücksichtigen zu müssen. Ein Nachteil ist, dass es höhere Anforderungen an die Hardware gibt, was bedeutet, dass Duranium nicht auf allen in postmarketOS unterstützten Geräten verwendet werden kann.
Der Inhalt des Duranium-Systemimages wird aus einer einheitlichen Paketbasis von postmarketOS gebildet, die auf Alpine Linux, der Standard-C-Bibliothek Musl und einer Sammlung von BusyBox-Dienstprogrammen basiert. Die Versionen von postmarketOS und Duranium sind nahezu identisch in ihrer Zusammensetzung, unterscheiden sich jedoch durch unterschiedliche Bereitstellungsmethoden des Systems. Zur Erstellung, Installation und Aktualisierung der Systemimages werden die Komponenten systemd-sysupdate, systemd-repart und systemd-verity-setup verwendet.
Zusätzliche Anwendungen werden im Flatpak-Format oder mit dem Paketmanager Coldbrew installiert. Coldbrew ermöglicht die Installation von Paketen aus den Repositories von Alpine Linux im Heimatverzeichnis des Benutzers. Bei der Ausführung werden solche Pakete mithilfe des Tools bubblewrap isoliert.
Quelle: opennet.ru
