скажімо, Fedora та Ubuntu?
... вони сьогодні є системними операційними системами.
Що відбувається в системних операційних системах
рідний механізм
Система використовує різні підрозділи. .mountодиничні файли дають йому змогу встановлювати томи. .swapодиничні файли доручають йому повідомити ядро про swap-розділи. ( .serviceфайли блоку вказують, як запускати сервіси. І так далі.) Це основні системні механізми. Щоб прийняти їх, systemd сам розщеплює дочірні процеси, які здійснюють відповідні системні дзвінки.
Якщо ви використовуєте systemctlкоманду (з --all) у такій системній операційній системі, вона розповість про завантажені .swapблоки. Наприклад:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap завантажений активним активним / dev / disk / by partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap завантажений активним активним / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b33
dev-sda5.swap завантажений active active / dev / sda5
Він також розповість про .mountпідрозділи.
Системний адміністратор може на насправді писати такі .swapпоодинокі файли вручну, так само , як х може писати .service, .socketі інші поодинокі файли вручну. Сам systemd просто шукає одиничні файли у файловій системі. Вони є його рідним механізмом.
Можна навіть отримати systemd, щоб показати вам, що є в цих файлах одиниць і де у файловій системі їх можна знайти:
$ 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
# Автоматично генерується системою-fstab-генератором
[Одиниця]
SourcePath = / etc / fstab
Документація = man: fstab (5) man: systemd-fstab-generator (8)
[Обмін]
Що = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Параметри = sw
$
автоматично створені одиничні файли
Можна написати їх від руки. Однак зазвичай такі .mountта .swapодиничні файли автоматично генеруються програмами, відомими як генератори . Два таких генераторів є systemd-fstab-generatorі systemd-gpt-auto-generator. Вони обидва запускаються на початку завантажувального процесу та у відповідь на systemctl daemon-reloadкоманду, і (як ви бачите вище) вони генерують ціле завантаження одиничних файлів у незадокументований підкаталог в /run/systemd/. Сам systemd просто використовує створені одиничні файли .
Колишній генератор читає /etc/fstab, розпізнаючи декілька системних розширень до цього файлового формату. Як я вказав у відповідь коментарі, традиційно розділ підкачки має тип монтування з swі як один виявлять , що інші операційні системи розпізнають підкачки записів в цій таблиці. Але програмне забезпечення Linux взяло альтернативний варіант розпізнавання типу VFS , шукаючи його swapяк тип VFS. systemd-fstab-generatorтут не є винятком, і саме так воно інтерпретується, /etc/fstabперетворюючи його у власні механізми.
Останній генератор обробляє таблицю розділів EFI, що знаходиться на тому ж диску, на якому зберігається системний розділ EFI, шукаючи записи таблиці розділів EFI, які мають різні відомі GUID-файли типу розділів . Одним з таких GUID є звичайний GUID, призначений для Linux-розділів своп; і якщо systemd-gpt-auto-generatorзнайде розділ з цим GUID (який відповідає критеріям, наведеним у системному doco), він зробить .swapдля нього одиницю; взагалі не /etc/fstabбере участь .
Звичайно, цей процес має безліч побічних ефектів. Наприклад, оскільки /etc/fstabне має первинного ключа до таблиці, записи можуть мати повторювані поля "spec" і "файл" (тобто "що" і "де"). Однак у власному системному механізмі поле "файл" (тобто "де") - це унікальний ключ для .mountодиниць, вбудованих у назви одиниць. Жоден два .mountпідрозділи не можуть поділитися ним. Для .swapодиниць поле "spec" (тобто "що") є унікальним ключем для одиниць. Жоден два .swapпідрозділи не можуть поділитися цим. Таким чином, не всі записи в /etc/fstabобов'язково конвертуються в нативні механізми і працюватимуть, особливо якщо люди роблять такі речі, як перелік однієї і тієї ж точки монтажу для двох різних цілей або перераховують один і той же розділ swap двома різними способами.
Аналогічно, оскільки він переклав /etc/fstabна основний механізм, а вроджений механізм systemd має інші способи активації блоків , поведінка тонко відрізняється від поведінки несистемних операційних систем. За .mountзамовчуванням пристрій автоматично активуєтьсяsystemd-udevd , навіть після завантаження, у відповідь на появу змонтованого пристрою зберігання даних. Або він може бути перелічений як Wants=або, або Requires=деякий .serviceабо .socketпідрозділ, що означає, що він буде (повторно) активований, коли вони є. Є навіть RequiresMountsFor=.
програми встановлення та системний спосіб
Традиційно програми встановлення операційної системи та системний адміністратор після перенастроювання системи мають письмові swзаписи /etc/fstab. Ось так автоматично створюються нативні .mountта .swapодиниці. Утиліта встановлення / конфігурації "знає", куди був поміщений файл swap, тому що в своєму користувальницькому інтерфейсі системний адміністратор зробив якийсь вибір і записує /etc/fstabвідповідність. Іноді цей вибір - це те, що я потребую, щоб ти зробив мені розділ для заміни як частина установки. ; іноді це просто використовувати розділ swap, який ви вже знайшли на диску. (інсталятори, які також переглядають типи розділів).
Але у системних людей є така ідея операційних систем, які автоматично конфігурують себе з майже порожнього /etcдерева, так званих систем без громадянства , і саме про це є механізми, як генератор, який читає таблицю розділів EFI. У плані systemd людей немає /etc/fstab, і взагалі немає постійних даних про конфігурацію /etc, і все це виводиться із вмісту таблиці розділів на диску , на кожному завантажувальному і в кожному завантажувальному systemctl daemon-reload. Нині вони просувають програми встановлення операційної системи, ніж не пишуть/etc/fstab .
У традиційній схемі, звичайно, ви можете дійсно мати кожну операційну систему своїм приватним розділом swap, і не допускати, щоб вони торкалися своп розділів. Дійсно, якщо ви використовуєте сплячий режим для диска через swap-розділ і очікуєте, що зможете перезавантажитись до іншої операційної системи, перебуваючи в сплячому режимі ( це дуже погана ідея, оскільки дуже легко викликати пошкодження файлової системи таким чином ), що буде необхідні.
У системній схемі, навіть якщо операційна система ще не є такою, як системні люди її передбачають і "без громадянства", вищезазначені генератори працюють; і, таким чином, всі розділи підкачки (на диску ESP / root) з необхідним типом розділу автоматично використовуються всіма системними операційними системами. Оскільки вони будуть обмінюватися усіма автоматично виявленими розділами свопу, одному дійсно не потрібно створювати один підкачаний розділ на встановлену операційну систему.
Подальше читання