diciamo Fedora e Ubuntu?
... entrambi i quali sono oggigiorno sistemi operativi e sistemi.
Cosa succede nei sistemi operativi systemd
il meccanismo nativo
Systemd impiega vari tipi di unità. .mount
i file unit danno istruzioni per montare i volumi. .swap
i file di unità lo indicano per dire al kernel delle partizioni di swap. (i .service
file di unità indicano come eseguire i servizi. E così via.) Questi sono i meccanismi nativi di sistema. Per metterli in atto, systemd stesso elimina i processi figlio che effettuano le chiamate di sistema pertinenti.
Se usi il systemctl
comando (con --all
) su un tale sistema operativo di sistema, ti dirà sulle .swap
unità caricate . Per esempio:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap caricato attivo attivo / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap caricato attivo attivo / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b3394
dev-sda5.swap caricato attivo attivo / dev / sda5
Ti parlerà anche delle .mount
unità.
Un amministratore di sistema può effettivamente scrivere tali .swap
file unità con la mano, proprio come xe può scrivere .service
, .socket
e altri file di unità a mano. systemd stesso cerca solo file di unità nel filesystem. Sono il suo meccanismo nativo.
Si può anche ottenere systemd per mostrarti cosa c'è in questi file di unità e dove si trovano nel filesystem:
$ 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
# Generato automaticamente da systemd-fstab-generator
[Unità]
SourcePath = / etc / fstab
Documentazione = man: fstab (5) man: systemd-fstab-generator (8)
[Scambiare]
Che = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Opzioni = sw
$
file di unità generati automaticamente
Si possono scrivere a mano. Di solito tuttavia tali file di unità .mount
e .swap
vengono generati automaticamente da programmi noti come generatori . Due di questi generatori sono systemd-fstab-generator
e systemd-gpt-auto-generator
. Entrambi vengono eseguiti all'inizio del processo di bootstrap e in risposta a un systemctl daemon-reload
comando e (come si può vedere sopra) generano un intero carico di file di unità in una sottodirectory non documentata in /run/systemd/
. systemd stesso usa solo quei file di unità generati .
Il precedente generatore legge /etc/fstab
, riconoscendo diverse estensioni di sistema in quel formato di file. Come ho sottolineato in un commento di risposta, tradizionalmente le partizioni di swap hanno il tipo di mount di sw
ed è così che si troverà che altri sistemi operativi riconoscono i record di swap in questa tabella. Ma i software Linux hanno preso la strada alternativa per riconoscere il tipo VFS , cercando swap
come tipo VFS. systemd-fstab-generator
non fa eccezione qui, ed è così che interpreta /etc/fstab
quando lo converte nei meccanismi nativi.
Quest'ultimo generatore elabora la tabella delle partizioni EFI che si trova sullo stesso disco che contiene la partizione di sistema EFI, cercando le voci della tabella delle partizioni EFI che hanno vari GUID di tipo di partizione noti . Uno di questi GUID è il GUID convenzionale assegnato alle partizioni di swap Linux; e se systemd-gpt-auto-generator
trova una partizione con quel GUID (che soddisfa i criteri indicati nel documento di sistema) creerà .swap
un'unità per esso; non /etc/fstab
coinvolto affatto .
Naturalmente, questo processo ha molti effetti collaterali. Ad esempio, poiché /etc/fstab
non ha una chiave primaria per la tabella, i record possono avere campi duplicati "spec" e "file" (ovvero "what" e "where"). Nel meccanismo systemd nativo, tuttavia, il campo "file" (ovvero "dove") è una chiave univoca per le .mount
unità, incorporata nei nomi delle unità. Non è .mount
possibile condividerla con due unità. Per le .swap
unità il campo "spec" (ovvero "what") è la chiave univoca per le unità. Non ci sono due .swap
unità che possono condividerlo. Quindi non tutti i record in /etc/fstab
sono necessariamente convertibili in meccanismi nativi e funzioneranno, specialmente se le persone fanno cose come elencare lo stesso mount point per due scopi diversi o elencare la stessa partizione di swap in due modi diversi.
Allo stesso modo, poiché si è tradotto /etc/fstab
nel meccanismo nativo e il meccanismo nativo di systemd ha altri modi di attivare le unità , il comportamento è leggermente diverso da quello dei sistemi operativi non di sistema. Per .mount
impostazione predefinita, un'unità verrà attivata automaticamentesystemd-udevd
, anche dopo l'avvio, in risposta all'aspetto del dispositivo di archiviazione montato. Oppure può essere elencato come uno Wants=
o Requires=
di alcuni .service
o .socket
unità, il che significa che sarà (ri) attivato quando lo sono. C'è anche RequiresMountsFor=
.
programmi di installazione e modalità systemd
Tradizionalmente, i programmi di installazione del sistema operativo e l'amministratore di sistema dopo aver successivamente riconfigurato il sistema, hanno scritto sw
voci in /etc/fstab
. Ed è così che il nativo .mount
e le .swap
unità finiscono per essere generati automaticamente. L'utility di installazione / configurazione "sa" dove è stato inserito il file di scambio, perché nella sua interfaccia utente l'amministratore di sistema ha fatto una scelta e ha scritto una /etc/fstab
corrispondenza. A volte quella scelta è che ho bisogno che tu mi faccia una partizione di swap come parte dell'installazione. ; a volte è sufficiente utilizzare la partizione di swap che hai già trovato sul disco. (anche gli installatori guardano i tipi di partizione).
Ma la gente del sistema ha questa idea di sistemi operativi che si configurano automaticamente da un /etc
albero in gran parte vuoto , i cosiddetti sistemi senza stato , e questo è ciò che riguarda meccanismi come il generatore che legge la tabella delle partizioni EFI. Nel piano del sistema e delle persone, non esiste alcun dato /etc/fstab
, e in effetti non esistono affatto dati di configurazione persistenti /etc
, e tutte queste cose sono dedotte dal contenuto della tabella delle partizioni su disco , ad ogni bootstrap e ad ogni systemctl daemon-reload
. Al giorno d'oggi promuovono programmi di installazione del sistema operativo che non scrivono/etc/fstab
.
Nello schema tradizionale, ovviamente puoi davvero avere ogni sistema operativo con la sua partizione di scambio privata e non farli toccare le partizioni di scambio reciproche. E infatti se stai utilizzando l'ibernazione per il disco tramite una partizione di swap e ti aspetti di essere in grado di eseguire l'avvio multiplo su un altro sistema operativo mentre è in letargo (il che è una pessima idea perché è molto facile causare la corruzione del filesystem in questo modo ) che sarà necessario.
Nello schema systemd, anche se il sistema operativo non è ancora come lo prevedono le persone e "apolidi", i generatori di cui sopra funzionano; e quindi tutte le partizioni di swap (sul disco ESP / root) con il tipo di partizione richiesto sono automaticamente impiegate da tutti i sistemi operativi di sistema. Dal momento che condivideranno tutte le partizioni di swap rilevate automaticamente, in realtà non è necessario creare una partizione di swap per sistema operativo installato.
Ulteriori letture