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. .mountpliki jednostek nakazują mu montowanie woluminów. .swappliki jednostek instruują go, aby poinformował jądro o partycjach wymiany. ( .servicepliki 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 systemctlpolecenia (z --all) w takim systemie operacyjnym, powie ci on o załadowanych .swapjednostkach. 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 .mountjednostkach.
Administrator systemu może faktycznie napisać takie .swappliki jednostki ręcznie, tak jak XE można napisać .service, .socketi 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 .mounti .swapjednostkowe pliki są automatycznie generowane przez programy znane jako generatory . Dwa takie generatory to systemd-fstab-generatori systemd-gpt-auto-generator. Oba działają na początku procesu ładowania początkowego i w odpowiedzi na systemctl daemon-reloadpolecenie, 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 swi 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 swapjako typu VFS. systemd-fstab-generatornie jest tutaj wyjątkiem i tak interpretuje /etc/fstabprzy 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-generatorznajdzie partycję z tym GUID (który spełnia kryteria podane w systemd doco), utworzy .swapdla niej jednostkę; w ogóle nie jest /etc/fstabzaangażowany .
Oczywiście proces ten ma wiele skutków ubocznych. Na przykład, ponieważ /etc/fstabnie 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 .mountjednostek, osadzonym w nazwach jednostek. Żadne dwie .mountjednostki nie mogą tego udostępnić. W przypadku .swapjednostek pole „spec” (tj. „What”) jest unikatowym kluczem dla jednostek. Żadne dwie .swapjednostki nie mogą tego udostępnić. Tak więc nie wszystkie rekordy /etc/fstabsą 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/fstabna mechanizm natywny, a mechanizm natywny systemd ma inne sposoby aktywacji jednostek , zachowanie jest nieco inne niż w niesystemowych systemach operacyjnych. .mountJednostka 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 .servicelub .socketjednostki, 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 swwpisy /etc/fstab. I w ten sposób natywny .mounti .swapjednostki 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/fstabpasują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 /etcdrzewa, 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/fstabdanych 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