скажімо, 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) з необхідним типом розділу автоматично використовуються всіма системними операційними системами. Оскільки вони будуть обмінюватися усіма автоматично виявленими розділами свопу, одному дійсно не потрібно створювати один підкачаний розділ на встановлену операційну систему.
Подальше читання