powiedzmy, że Fedora i Ubuntu?
… Oba są obecnie systemowymi systemami operacyjnymi.
Co dzieje się w systemowych systemach operacyjnych
natywny mechanizm
Systemd stosuje różne rodzaje jednostek. .mount
pliki jednostek nakazują mu montowanie woluminów. .swap
pliki jednostek instruują go, aby poinformował jądro o partycjach wymiany. ( .service
pliki jednostek instruują go, jak uruchamiać usługi. itd.). Są to natywne mechanizmy systemowe. Aby je uchwalić, systemd sam odrzuca procesy potomne, które wykonują odpowiednie wywołania systemowe.
Jeśli użyjesz systemctl
polecenia (z --all
) w takim systemie operacyjnym, powie ci on o załadowanych .swap
jednostkach. Na przykład:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap załadowane aktywne aktywne / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap załadowany aktywny aktywny / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4
dev-sda5.swap załadowany aktywny aktywny / dev / sda5
Powie ci również o .mount
jednostkach.
Administrator systemu może faktycznie napisać takie .swap
pliki jednostki ręcznie, tak jak XE można napisać .service
, .socket
i inne pliki jednostkowe ręcznie. systemd sam szuka plików jednostkowych w systemie plików. Są ich rodzimym mechanizmem.
Można nawet uzyskać systemd, aby pokazać ci, co jest w tych plikach jednostkowych i gdzie w systemie plików można je znaleźć:
$ 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
# Generowane automatycznie przez systemd-fstab-generator
[Jednostka]
SourcePath = / etc / fstab
Dokumentacja = man: fstab (5) man: systemd-fstab-generator (8)
[Zamiana]
What = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Opcje = sw
$
automatycznie generowane pliki jednostek
Można je pisać ręcznie. Zazwyczaj jednak takie .mount
i .swap
jednostkowe pliki są automatycznie generowane przez programy znane jako generatory . Dwa takie generatory to systemd-fstab-generator
i systemd-gpt-auto-generator
. Oba działają na początku procesu ładowania początkowego i w odpowiedzi na systemctl daemon-reload
polecenie, i (jak widać powyżej) generują cały ładunek plików jednostkowych do nieudokumentowanego podkatalogu w /run/systemd/
. systemd sam używa tylko tych wygenerowanych plików jednostkowych .
Poprzedni generator czyta /etc/fstab
, rozpoznając kilka systemowych rozszerzeń tego formatu pliku. Jak zauważył w komentarzu odpowiedzi, tradycyjnie partycje wymiany mają Rodzaj montażu na sw
i tak będzie znaleźć, że inne systemy operacyjne rozpoznają rekordy swapowych w tej tabeli. Ale oprogramowanie dla Linuksa zastosowało alternatywną metodę rozpoznawania typu VFS , szukając go swap
jako typu VFS. systemd-fstab-generator
nie jest tutaj wyjątkiem i tak interpretuje /etc/fstab
przy konwersji na natywne mechanizmy.
Ten ostatni generator przetwarza tablicę partycji EFI, która znajduje się na tym samym dysku, na którym znajduje się partycja systemowa EFI, szukając pozycji tablicy partycji EFI, które mają różne dobrze znane GUID typu partycji . Jednym z tych identyfikatorów GUID jest konwencjonalny identyfikator GUID przypisany do partycji wymiany systemu Linux; a jeśli systemd-gpt-auto-generator
znajdzie partycję z tym GUID (który spełnia kryteria podane w systemd doco), utworzy .swap
dla niej jednostkę; w ogóle nie jest /etc/fstab
zaangażowany .
Oczywiście proces ten ma wiele skutków ubocznych. Na przykład, ponieważ /etc/fstab
nie ma klucza podstawowego do tabeli, rekordy mogą mieć zduplikowane pola „spec” i „file” (tj. „What” i „where”). Jednak w natywnym mechanizmie systemowym pole „plik” (tzn. „Gdzie”) jest unikalnym kluczem dla .mount
jednostek, osadzonym w nazwach jednostek. Żadne dwie .mount
jednostki nie mogą tego udostępnić. W przypadku .swap
jednostek pole „spec” (tj. „What”) jest unikatowym kluczem dla jednostek. Żadne dwie .swap
jednostki nie mogą tego udostępnić. Tak więc nie wszystkie rekordy /etc/fstab
są koniecznie konwertowane na natywne mechanizmy i będą działać, zwłaszcza jeśli ludzie robią rzeczy takie jak lista tego samego punktu montowania dla dwóch różnych celów lub lista tej samej partycji wymiany na dwa różne sposoby.
Podobnie, ponieważ zostało to przetłumaczone /etc/fstab
na mechanizm natywny, a mechanizm natywny systemd ma inne sposoby aktywacji jednostek , zachowanie jest nieco inne niż w niesystemowych systemach operacyjnych. .mount
Jednostka będzie domyślnie być automatycznie aktywowanysystemd-udevd
, nawet po bootstrap, w odpowiedzi na pojawienie zamontowanego urządzenia pamięci masowej. Lub może być wymieniony jako a Wants=
lub Requires=
niektóre .service
lub .socket
jednostki, co oznacza, że zostanie (ponownie) aktywowany, gdy będą. Jest nawet RequiresMountsFor=
.
programy instalacyjne i sposób systemowy
Tradycyjnie programy instalacyjne systemu operacyjnego i administrator systemu po ponownej konfiguracji systemu zapisywali sw
wpisy /etc/fstab
. I w ten sposób natywny .mount
i .swap
jednostki są generowane automatycznie. Narzędzie instalacyjne / konfiguracyjne „wie”, gdzie został umieszczony plik wymiany, ponieważ w interfejsie użytkownika administrator systemu dokonał pewnego wyboru i zapisał /etc/fstab
pasującą wartość. Czasami ten wybór polega na tym, że musisz zrobić ze mnie partycję wymiany w ramach instalacji. ; czasami jest to po prostu użyj partycji wymiany, którą znalazłeś już na płycie. (instalatorzy również patrzą na typy partycji).
Ale systematyczni ludzie mają pomysł na systemy operacyjne, które automatycznie konfigurują się z zasadniczo pustego /etc
drzewa, tak zwanych systemów bezstanowych , i na tym właśnie polegają mechanizmy takie jak generator odczytujący tablicę partycji EFI. W planie ludzi systemowych nie ma żadnych /etc/fstab
danych konfiguracyjnych, a nawet nie ma w nich żadnych trwałych danych konfiguracyjnych /etc
, a wszystkie te informacje są wywnioskowane z zawartości tabeli partycji na dysku , przy każdym ładowaniu i każdym systemctl daemon-reload
. Obecnie promują programy instalacyjne systemu operacyjnego, niż nie piszą/etc/fstab
.
Oczywiście w tradycyjnym schemacie każdy system operacyjny może mieć swoją prywatną partycję wymiany i nie dotykać nawzajem partycji wymiany. I rzeczywiście, jeśli używasz hibernacji do dysku za pomocą partycji wymiany i spodziewasz się, że będziesz w stanie uruchomić wiele systemów operacyjnych podczas hibernacji ( co jest bardzo złym pomysłem, ponieważ bardzo łatwo jest spowodować uszkodzenie systemu plików w ten sposób ), to będzie niezbędny.
W schemacie systemowym, nawet jeśli system operacyjny nie jest jeszcze taki, jak ludzie systemowi go sobie wyobrażają i jest „bezstanowy”, działają wyżej wymienione generatory; i dlatego wszystkie partycje wymiany (na dysku ESP / root) z wymaganym typem partycji są automatycznie stosowane przez wszystkie systematyczne systemy operacyjne. Ponieważ będą udostępniać wszystkie automatycznie wykryte partycje wymiany, tak naprawdę nie trzeba tworzyć jednej partycji wymiany na zainstalowany system operacyjny.
Dalsza lektura