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. .mount
Unit-Dateien weisen es an, Volumes zu mounten. .swap
Unit-Dateien weisen ihn an, den Kernel über Swap-Partitionen zu informieren. ( .service
Unit-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 systemctl
Befehl (mit --all
) auf einem solchen Betriebssystem verwenden, werden Sie über die geladenen .swap
Einheiten 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 .mount
Einheiten.
Ein Systemadministrator kann schreiben tatsächlich solche .swap
Unit - Dateien von Hand, wie xe schreiben kann .service
, .socket
und 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 .mount
und .swap
Unit-Dateien jedoch automatisch von Programmen generiert, die als Generatoren bezeichnet werden . Zwei solche Generatoren sind systemd-fstab-generator
und systemd-gpt-auto-generator
. Sie werden beide früh im Bootstrap-Prozess und als Antwort auf einen systemctl daemon-reload
Befehl 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/fstab
und erkennt mehrere Systemerweiterungen für dieses Dateiformat. Wie ich bereits in einer Antwort Kommentar darauf hingewiesen, haben traditionell Swap - Partitionen den montiert von sw
und 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-generator
ist hier keine Ausnahme, und so interpretiert es, /etc/fstab
wenn 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-generator
eine Partition mit dieser GUID gefunden wird (die die im systemd doco angegebenen Kriterien erfüllt), wird eine .swap
Einheit dafür erstellt; überhaupt nicht /etc/fstab
beteiligt .
Natürlich hat dieser Prozess viele Nebenwirkungen. Da beispielsweise /etc/fstab
kein 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 .mount
Einheiten, der in die Einheitennamen eingebettet ist. Keine zwei .mount
Einheiten können es teilen. Für .swap
Einheiten ist das Feld "spec" (dh "what") der eindeutige Schlüssel für Einheiten. Keine zwei .swap
Einheiten können das teilen. Daher sind nicht alle Datensätze in /etc/fstab
den 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/fstab
in den systemeigenen Mechanismus übersetzt wurde und der systemeigene Mechanismus andere Möglichkeiten zum Aktivieren von Einheiten bietet. .mount
Standardmäß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 .service
oder .socket
Einheiten 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, sw
Einträge in geschrieben /etc/fstab
. Auf diese Weise werden die Native .mount
und die .swap
Units automatisch generiert. Das Installations- / Konfigurationsdienstprogramm "weiß", wo die Auslagerungsdatei abgelegt wurde, da der Systemadministrator in seiner Benutzeroberfläche eine Auswahl getroffen und eine /etc/fstab
passende 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 /etc
Baum 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/fstab
und 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