Sagen wir Fedora und Ubuntu?
… Beides sind heutzutage system- und betriebssysteme.
Was passiert in systemd Betriebssystemen?
der native Mechanismus
Systemd verwendet verschiedene Arten von Einheiten. .mountUnit-Dateien weisen es an, Volumes zu mounten. .swapUnit-Dateien weisen ihn an, den Kernel über Swap-Partitionen zu informieren. ( .serviceUnit-Dateien weisen es an, wie Dienste ausgeführt werden. Und so weiter.) Dies sind die systemeigenen systemd-Mechanismen. Um sie zu aktivieren, leitet systemd selbst untergeordnete Prozesse ab, die die entsprechenden Systemaufrufe ausführen.
Wenn Sie den systemctlBefehl (mit --all) auf einem solchen Betriebssystem verwenden, werden Sie über die geladenen .swapEinheiten informiert . Beispielsweise:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap geladen aktiv aktiv / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap geladen active active / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b2b339
dev-sda5.swap geladen aktiv aktiv / dev / sda5
Außerdem erfahren Sie mehr über die .mountEinheiten.
Ein Systemadministrator kann schreiben tatsächlich solche .swapUnit - Dateien von Hand, wie xe schreiben kann .service, .socketund andere Unit - Dateien von Hand. systemd selbst sucht nur nach Unit-Dateien im Dateisystem. Sie sind sein ursprünglicher Mechanismus.
Man kann sich sogar von systemd anzeigen lassen, was sich in diesen Unit-Dateien befindet und wo sie im Dateisystem zu finden sind:
$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# Wird automatisch vom systemd-fstab-generator generiert
[Einheit]
SourcePath = / etc / fstab
Dokumentation = man: fstab (5) man: systemd-fstab-generator (8)
[Tauschen]
What = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Optionen = sw
$
automatisch generierte Unit-Dateien
Man kann sie von Hand schreiben. Normalerweise werden solche .mountund .swapUnit-Dateien jedoch automatisch von Programmen generiert, die als Generatoren bezeichnet werden . Zwei solche Generatoren sind systemd-fstab-generatorund systemd-gpt-auto-generator. Sie werden beide früh im Bootstrap-Prozess und als Antwort auf einen systemctl daemon-reloadBefehl ausgeführt und (wie Sie oben sehen können) generieren eine ganze Reihe von Unit-Dateien in einem undokumentierten Unterverzeichnis in /run/systemd/. systemd selbst verwendet nur diese generierten Unit-Dateien .
Der frühere Generator liest /etc/fstabund erkennt mehrere Systemerweiterungen für dieses Dateiformat. Wie ich bereits in einer Antwort Kommentar darauf hingewiesen, haben traditionell Swap - Partitionen den montiert von swund das ist , wie man , dass andere Betriebssysteme erkennen Swap - Datensätze in dieser Tabelle finden. Aber Linux-Software hat die Alternative gewählt, stattdessen den VFS-Typ zu erkennen und nach dem VFS-Typ zu suchen swap. systemd-fstab-generatorist hier keine Ausnahme, und so interpretiert es, /etc/fstabwenn es in die nativen Mechanismen konvertiert wird.
Der letztere Generator verarbeitet die EFI-Partitionstabelle, die sich auf demselben Datenträger befindet, auf dem sich die EFI-Systempartition befindet, und sucht nach EFI-Partitionstabelleneinträgen mit verschiedenen bekannten GUIDs für Partitionstypen . Eine dieser GUIDs ist die herkömmliche GUID, die Linux-Swap-Partitionen zugewiesen wird. und wenn systemd-gpt-auto-generatoreine Partition mit dieser GUID gefunden wird (die die im systemd doco angegebenen Kriterien erfüllt), wird eine .swapEinheit dafür erstellt; überhaupt nicht /etc/fstabbeteiligt .
Natürlich hat dieser Prozess viele Nebenwirkungen. Da beispielsweise /etc/fstabkein Primärschlüssel für die Tabelle vorhanden ist, können Datensätze doppelte Felder "spec" und "file" (dh "what" und "where") enthalten. Im systemeigenen Mechanismus ist das Feld "file" (dh "where") ein eindeutiger Schlüssel für .mountEinheiten, der in die Einheitennamen eingebettet ist. Keine zwei .mountEinheiten können es teilen. Für .swapEinheiten ist das Feld "spec" (dh "what") der eindeutige Schlüssel für Einheiten. Keine zwei .swapEinheiten können das teilen. Daher sind nicht alle Datensätze in /etc/fstabden systemeigenen Mechanismen konvertierbar und funktionieren auch, insbesondere wenn Benutzer beispielsweise denselben Mountpunkt für zwei verschiedene Zwecke auflisten oder dieselbe Swap-Partition auf zwei verschiedene Arten auflisten.
In ähnlicher Weise unterscheidet sich das Verhalten geringfügig von dem von Nicht-System-Betriebssystemen , da es /etc/fstabin den systemeigenen Mechanismus übersetzt wurde und der systemeigene Mechanismus andere Möglichkeiten zum Aktivieren von Einheiten bietet. .mountStandardmäßig wird eine Einheit auch nach dem Bootstrap automatisch aktiviertsystemd-udevd , wenn das eingebaute Speichergerät angezeigt wird. Oder es kann als Wants=oder Requires=von einigen .serviceoder .socketEinheiten aufgeführt werden, was bedeutet, dass es (wieder) aktiviert wird, wenn sie es sind. Es gibt sogar RequiresMountsFor=.
Installer-Programme und die systemd Weise
Üblicherweise haben Betriebssystem-Installationsprogramme und der Systemadministrator, der das System anschließend neu konfiguriert, swEinträge in geschrieben /etc/fstab. Auf diese Weise werden die Native .mountund die .swapUnits automatisch generiert. Das Installations- / Konfigurationsdienstprogramm "weiß", wo die Auslagerungsdatei abgelegt wurde, da der Systemadministrator in seiner Benutzeroberfläche eine Auswahl getroffen und eine /etc/fstabpassende Datei geschrieben hat . Manchmal müssen Sie mich im Rahmen der Installation zu einer Swap-Partition machen. ; manchmal ist es nur die Swap-Partition, die Sie bereits auf der CD gefunden haben. (Installer, die sich auch die Partitionstypen ansehen).
Aber die Systemleute haben diese Idee von Betriebssystemen, die sich automatisch aus einem weitgehend leeren /etcBaum heraus konfigurieren , sogenannten zustandslosen Systemen , und genau darum geht es bei Mechanismen wie dem Generator, der die EFI-Partitionstabelle liest. Im Plan der systemd people gibt es überhaupt keine /etc/fstabund keine persistenten Konfigurationsdaten /etc, und all diese Informationen werden aus dem Inhalt der Partitionstabelle auf der Festplatte , bei jedem Bootstrap und bei jedem abgeleitet systemctl daemon-reload. Sie fördern heutzutage Betriebssystem-Installationsprogramme, als nicht schreiben/etc/fstab .
Im herkömmlichen Schema kann natürlich jedes Betriebssystem über eine eigene private Swap-Partition verfügen, ohne dass sich die Swap-Partitionen gegenseitig berühren. Und in der Tat, wenn Sie den Ruhezustand verwenden, um über eine Swap-Partition eine Festplatte zu starten, und erwarten, dass Sie im Ruhezustand auf ein anderes Betriebssystem mehrfach booten können ( was eine sehr schlechte Idee ist, da es sehr leicht ist, auf diese Weise eine Beschädigung des Dateisystems zu verursachen ) notwendig.
Im systemd-Schema laufen die oben genannten Generatoren, auch wenn das Betriebssystem noch nicht so ist, wie die systemd-Leute es sich vorstellen, und "zustandslos" ist. und somit werden alle Swap-Partitionen (auf der ESP / Root-Platte) mit dem erforderlichen Partitionstyp automatisch von allen Betriebssystemen des Systems verwendet. Da alle automatisch erkannten Swap-Partitionen gemeinsam genutzt werden, muss nicht wirklich eine Swap-Partition pro installiertem Betriebssystem erstellt werden.
Weitere Lektüre