BOOTCTL(1)

НАЗВА
bootctl — керування параметрами завантаження мікропрограми EFI та засобом завантаження

КОРОТКИЙ ОПИС

bootctl [ПАРАМЕТРИ...] {КОМАНДА}

ОПИС

bootctl може перевіряти мікропрограму EFI і стан завантажувача, показувати список доступних завантажувачів та записів завантажувачів та керувати ними, а також встановлювати, оновлювати та вилучати завантажувач systemd-boot(7) на поточній системі.

ЗАГАЛЬНІ КОМАНДИ МІКРОПРОГРАМИ EFI АБО ЗАВАНТАЖУВАЧА

Ці команди доступні у будь-якій системі EFI, незалежно від використаного завантажувача.

status
    Показує короткі відомості щодо мікропрограми системи, завантажувача, який було використано для завантаження системи, завантажувачів, які доступні у ESP, завантажувачів зі списку завантажувачів мікропрограми та поточного типового запису завантажувача. Якщо команду не вказано, це неявно заданий типовий варіант.

    Докладний приклад виведених даних наведено нижче.

    Додано у версії 239.

reboot-to-firmware [БУЛЕВЕ ЗНАЧЕННЯ]
    Опитати значення прапорця "Reboot-Into-Firmware-Setup" мікропрограми EFI або встановити його. Приймає булевий аргумент, який керує тим, чи слід запускати налаштовування мікропрограми під час наступного перезавантаження комп'ютера. Якщо аргумент не вказано, показує поточний стан прапорця чи повідомлення про те, чи передбачено підтримку прапорця. Керує тим самим прапорцем, що і systemctl reboot --firmware-setup, але є більш низькорівневим та надає змогу встановлювати значення прапорця незалежно від вимоги щодо перезавантаження комп'ютера.

    Підказка: скористайтеся systemctl reboot --firmware-setup для перезавантаження одразу до налаштовування мікропрограми. Докладніший опис див. у systemctl(1).

    Додано у версії 251.

КОМАНДИ СПЕЦИФІКАЦІЇ ЗАВАНТАЖУВАЧА

Ці команди доступні для усіх завантажувачів, де реалізовано Специфікацію завантажувачів[1], зокрема для systemd-boot.

list
    Показує усі доступні записи завантажувачів, для яких реалізовано специфікацію завантажувача[1], а також усі інші записи, які виявлено або створено завантажувачем, у яких реалізовано інтерфейс завантажувача[2]. Наказати програмі вивести дані у JSON можна за допомогою --json=.

    Докладний приклад виведених даних наведено нижче.

    Додано у версії 239.

unlink ІДЕНТИФІКАТОР
    Вилучає запис завантажувача, включно з файлами, на які він посилається. Приймає рядок ідентифікатора запису завантажувача або загальний взірець як аргумент. Файли, на які посилається запис, зокрема ядро або initrd, буде вилучено, лише якщо на них не посилається жоден інший запис.

    Додано у версії 253.

cleanup
    Вилучає з розділів ESP і XBOOTLDR файли, які належать до жетона запису, але на які не посилається жоден із записів завантажувача.

    Додано у версії 253.

КОМАНДИ ІНТЕРФЕЙСУ ЗАВАНТАЖУВАЧА

Ці команди доступні для усіх завантажувачів, де реалізовано Специфікацію завантажувачів[1] і Інтерфейс завантажувачів[2], зокрема для systemd-boot.

set-default ID, set-oneshot ІДЕНТИФІКАТОР
    Встановлює типовий запис завантажувача. Приймає один рядок ідентифікатора запису завантажувача або загальний взірець як аргумент. Команда set-oneshot встановлює типовий запис лише для наступного завантаження, set-default встановлює запис остаточно для усіх майбутніх завантажень.

    bootctl list можна скористатися для отримання списку доступних записів завантажувача та їхніх ідентифікаторів.

    Крім того, ідентифікатор запису завантажувача можна вказати одним з таких ключових слів: @default, @oneshot або @current. Цим словам відповідають поточний типовий запис завантажувача для усіх наступних завантажень, поточний типовий запис завантажувача для наступного завантаження та поточний завантажений запис завантажувача. Ці особливі ідентифікатори буде розгорнуто до поточних значень змінних EFI LoaderEntryDefault, LoaderEntryOneShot і LoaderEntrySelected, див. специфікацію завантажувача[1], щоб дізнатися більше. Ці особливі ідентифікатори, в основному, корисні для пришвидшення остаточного визначення поточного завантаженого запису як типового варіанта, або для оновлення типового запису завантажування для наступного завантаження до типового запису завантажувача для усіх наступних завантажень, але ними можна скористатися і для виконання інших дій.

    Якщо встановлено значення @saved, вибраний запис буде збережено як змінну EFI для усіх завантажень і автоматично вибрано під час наступного запуску завантажувача.

    Якщо для ідентифікатора вказано порожній рядок (""), встановлення значення змінної EFI буде скасовано.

    Підказка: скористайтеся командою systemctl reboot --boot-loader-entry=ІДЕНТИФІКАТОР для перезавантаження до певного запису і командою systemctl reboot --boot-loader-menu=час очікування для одноразового перезавантаження до меню завантажувача. Див. systemctl(1), щоб дізнатися більше.

    Додано у версії 240.

set-timeout ЧАС ОЧІКУВАННЯ, set-timeout-oneshot ЧАС ОЧІКУВАННЯ
    Встановлює час очікування на дії для меню завантажувача у секундах. Команда set-timeout-oneshot встановить час очікування лише для наступного завантаження. Див. systemd.time(7), щоб дізнатися про синтаксис запису проміжків часу.

    Якщо встановити значення menu-disabled або menu-hidden або 0, меню показано не буде, буде негайно завантажено типовий запис, а встановлення значення menu-force вимикає час очікування і завжди показує меню. Якщо вказано порожній рядок (""), завантажувач повернеться до типового часу очікування для меню.

    Додано у версії 250.

КОМАНДИ SYSTEMD-BOOT

Ці команди керують завантажувачем EFI systemd-boot, вони не працюють у поєднанні із іншими завантажувачами.

install
    Встановлює systemd-boot на системних розділ EFI. Копію systemd-boot буде збережено як типовий або резервний завантажувач EFI до ESP/EFI/BOOT/BOOT*.EFI. Після цього завантажувач буде додано на верхню позицію у списку завантажувачів мікропрограми.

    Додано у версії 239.

update
    Оновлює усі встановлені версії systemd-boot(7), якщо доступна версія є новішою за версію, яку встановлено на системному розділі EFI. Це також включає типовий або резервний завантажувач EFI у ESP/EFI/BOOT/BOOT*.EFI. Потім завантажувач буде додано наприкінці списку завантажувачів мікропрограми, якщо його там ще немає.

    Додано у версії 239.

remove
    Вилучає усі встановлені версії systemd-boot з системного розділу EFI і списку завантажувачів мікропрограми.

    Додано у версії 239.

is-installed
    Перевіряє, чи встановлено systemd-boot на ESP. Зауважте, що на одному ESP може зберігатися декілька завантажувачів; отже, ця команда перевіряє, чи є systemd-boot одним (із можливих багатьох) встановленим завантажувачем, — а не те, чи є він типовим, і чи зареєстровано його у якійсь зі змінних EFI.

    Додано у версії 243.

random-seed
    Створює базу випадковості (сім'я) і зберігає його на системному розділі EFI (ESP)для використання завантажувачем systemd-boot. Якщо в ESP вже є база випадковості, її буде оновлено. Крім того, створює випадковий «системний жетон» і зберігає його на сталій основі як змінну EFI, якщо значення для цієї змінної не було встановлено раніше. Якщо завантажувач знайде базу випадковості на ESP і системний жетон у змінній EFI, він визначити базу випадковості для передавання операційній системі і нову базу, яку слід зберегти у ESP, на основі комбінації обох. Базу випадковості, яку передано операційній системі, буде співвіднесено із буфером ентропії ядра керуванням системи на ранньому етапі завантаження. Це уможливить завантаження простору користувачів із дуже рано повністю ініціалізованим буфером ентропії. Див. також systemd-boot-random-seed.service(8).

    Див. бази випадковості[3], щоб дізнатися більше.

    Додано у версії 243.

КОМАНДИ ІНТЕРФЕЙСУ ЯДРА

kernel-identify ядро
    Приймає образ ядра як аргумент. Перевіряє тип ядра, до якого належить образ. Повертає одне з таких значень: «uki», «pe» або «unknown».

    Додано у версії 253.

kernel-inspect ядро
    Приймає як аргумент образ ядра. Виводить подробиці щодо образу.

    Додано у версії 253.

ПАРАМЕТРИ

Передбачено обробку таких параметрів:

--esp-path=
    Шлях до системного розділу EFI (ESP). Якщо не вказано, буде послідовно здійснено спроби скористатися /efi/, /boot/ і /boot/efi/. Рекомендовано, якщо можна, монтувати ESP до /efi/,.

--boot-path=
    Шлях до розширеного розділу завантажувача (Extended Boot Loader), як його визначено у специфікації завантажувачів[1]. Якщо не вказано, буде здійснено спробу скористатися /boot/. Рекомендовано, якщо можна, монтувати розширений розділ завантажувача до /boot/.

--root=корінь
    Приймає як аргумент шлях до каталогу. До усіх шляхів буде додано префікс, заданий альтернативний кореневий шлях, включно зі шляхами пошуку файлів налаштувань.

    Додано у версії 252.

--image=образ
    Приймає шлях до файла образу диска або вузла блокового пристрою Якщо вказано, усі дії буде застосовано до файлової системи у вказаному образі диска. Цей параметр подібний до --root=, але працює з файловою системою, що зберігається в образах диска або блокових пристроїв. Образ диска або має містити файлову систему, або бути набором файлових систем у таблиці розділів GPT, за якою має зберігатися специфікація придатних до вивчення розділів[4]. Докладніший опис підтримуваних образів дисків наведено на сторінці підручника systemd-nspawn(4) щодо перемикача з такою самою назвою.

    Додано у версії 252.

--image-policy=правила
    Приймає рядок правил поводження з образами як аргумент, як у systemd.image-policy(7). Правила буде примусово застосовано при роботі з образами дисків, які вказано за допомогою --image=, див. вище. Якщо не вказано, типовим значенням будуть правила «*», тобто буде використано усі розпізнані файлові системи образу.

--install-source=
    При встановленні виконуваних файлів за допомогою --root= або --image= вибирає, звідки їх слід взяти. Приймає одне з таких значень: "auto" (типовий варіант), "image" або "host". Якщо вказано "auto", виконувані файли буде взято із вказаного каталогу або образу і, якщо їх не буде знайдено, файли буде взято з основної системи. Якщо вказано "image" або "host" резервний пошук не відбуватиметься, якщо виконувані файли не буде знайдено у вибраному джерелі.

    Додано у версії 252.

-p, --print-esp-path
    Цей параметр змінює поведінку status. Виводить шлях до системного розділу EFI (ESP) до стандартного виведення і завершує роботу.

    Додано у версії 236.

-x, --print-boot-path
    Цей параметр змінює поведінку status. Лише виводить шлях до розділу розширеного завантажувача, якщо він існує, і виводить шлях до ESP до стандартного виведення і завершує роботу, якщо його не існує. Ця команда корисна для визначення того, де розташовувати записи завантажувача, оскільки їхнім пріоритетним місцем зберігання є розділ розширеного завантажувача, якщо він існує, і ESP, якщо його не існує.

    Записи типу 1 специфікації завантажувачів мають, загалом, зберігатися у каталозі "$(bootctl -x)/loader/entries/". Існування цього каталогу може вказувати на те, що у системі передбачено підтримку записів завантажувачів. Так само, записи типу 2 специфікації завантажувачів мають зберігатися у каталозі "$(bootctl -x)/EFI/Linux/".

    Зауважте, що цей параметр (подібно до параметра --print-esp-path, про який ми згадували вище) доступний незалежно від використаного завантажувача, тобто також без встановлення systemd-boot.

    Додано у версії 242.

-R, --print-root-device
    Вивести шлях до вузла блокового пристрою, який є основою кореневої файлової системи локальної операційної системи. Буде виведено шлях, подібний до /dev/nvme0n1p5. Якщо основою кореневої файлової системи є dm-crypt/LUKS або dm-verity, буде повернуто адресу базового блокового пристрою. Якщо основою кореневої файлової системи є декілька блокових пристроїв (підтримку такого варіанта передбачено у btrfs) дія завершиться повідомленням про помилку. Якщо перемикач вказано двічі (тобто -RR) і виявлений блоковий пристрій є пристроєм розділу, буде визначено і виведено «цілий» блоковий пристрій, до якого він належить (приклад: /dev/nvme0n1). Якщо кореневою файловою системою є «tmpfs» (або подібна файлова система у пам'яті), буде повернуто основу /usr/ блокового пристрою, якщо вона є застосовною. Якщо кореневою файловою системою є мережева файлова система (наприклад NFS, CIFS), спроба виконати дію завершиться повідомленням про помилку.

    Додано у версії 254.

--no-variables
    Не змінювати список завантажувачів мікропрограми у змінних EFI.

    Додано у версії 220.

--graceful
    Ігнорувати помилку, якщо не вдасться знайти системний розділ EFI, якщо не вдасться записати змінні EFI, або буде виявлено інший або новіший встановлений завантажувач. У пточній версії стосується лише команд is-installed, update і random-seed.

    Додано у версії 244.

-q, --quiet
    Придушити виведення результатів виконання різноманітних команд, а також надати підказку щодо недоступності ESP.

    Додано у версії 251.

--make-entry-directory=yes|no
    Керує створенням і вилученням каталогу записів типу 1 специфікації завантажувачів[1] на файловій системі, що містить ресурси, зокрема образи ядра і initrd, під час виконання install і remove, відповідно. Каталог буде названо за жетоном запису, як його вказано за допомогою параметра --entry-token=, який описано нижче, і розташовано одразу під кореневим каталогом $BOOT (тобто під коренем файлової системи, яку повернуто у відповідь на визначення параметра --print-boot-path, див. вище). Типовим значенням є "no".

    Додано у версії 251.

--entry-token=
    Керує тим, як називати і ідентифікувати записи завантажувача для цього екземпляра встановленої операційної системи. Буде прийнято під час install; можливі аргументи: "auto", "machine-id", "os-id", "os-image-id" або довільний рядок із префіксом "literal:".

    Якщо встановлено значення machine-id, назви записів формуватимуться за ідентифікатором машини запущеної системи (наприклад, "b0e793a9baf14b5fa13ecbe84ff637ac"). Див. machine-id(5), щоб дізнатися більше про поняття ідентифікатора машини та файл.

    Якщо встановлено значення os-id, назви записів формуватимуться за ідентифікатором запущеної операційної системи, тобто полем ID= os-release(5) (наприклад "fedora"). Так само, якщо встановлено os-image-id, назви записів формуватимуться за ідентифікатором образу запущеної операційної системи, тобто полем IMAGE_ID= os-release (наприклад "vendorx-cashier-system").

    Якщо встановлено значення auto (типовий варіант), буде виконано читання файла /etc/kernel/entry-token, якщо він існує, і буде використано збережене значення. Якщо файла не існує, буде використано ідентифікатор локальної машини, якщо його ініціалізовано. Якщо ідентифікатор не ініціалізовано, буде використано IMAGE_ID= з os-release, якщо його встановлено. Якщо запис не встановлено, буде використано ID= з os-release, якщо його встановлено.

    Якщо не використано варіант "machine-id" або якщо використано --make-entry-directory=yes, вибраний рядок жетона буде записано до файла /etc/kernel/entry-token, щоб забезпечити його використання для майбутніх записів. Цей файл також буде прочитано kernel-install(8) з метою ідентифікувати, для якої назви слід створювати записи завантажувача для нововстановлених ядер, або визначити назви записів для вилучення застарілих.

    Зазвичай, перевагу слід віддати використанню для іменування записів ідентифікатора машини; втім, існують випадки, де добрим варіантом є використання інших ідентифікаторів. Зокрема, це випадки, коли дані ідентифікації, які є результатом використання ідентифікатора машини, не буде збережено на (зашифрованому) розділі $BOOT або коли ідентифікатор буде створено при першому завантаженні, і він не є відомим при приготуванні записів. Зауважте, що використання ідентифікатора машини має перевагу тоді, коли на одному носії даних паралельно встановлено декілька однакових операційних систем, а оновлення їхніх записів завантажувача відбувається незалежно. При використанні іншого ідентифікатора (зокрема ідентифікатора операційної системи або ідентифікатора образу операційної системи) паралельне встановлення тієї самої операційної системи призведе до спроби використання однакових назв записів. Для забезпечення підтримки паралельного встановлення у засобі встановлення доведеться використовувати інший жетон запису при додаванні кожної наступної встановленої системи.

    Додано у версії 251.

--all-architectures
    Встановити виконувані файли для усіх підтримуваних архітектур EFI (неявним чином задає --no-variables).

    Додано у версії 252.

--efi-boot-option-description=
    Опис запису, який додано до списку варіантів завантаження мікропрограми. Типовим є "Linux Boot Manager".

    Використання типової назви запису, "Linux Boot Manager", загалом, є бажаним, оскільки слід використовувати лише один завантажувач, який встановлено на один розділ ESP, для завантаження довільної кількості встановлених операційних систем, які зберігаються на різних дисках у системі. Зокрема, дистрибутивам не слід використовувати цей прапорець для встановлення запису із назвою системи до списку варіантів завантаження. Втім, у випадках із декількома дисками, на кожному з яких є власний розділ ESP, нетипові назви можуть бути корисними для спрощення ідентифікації завантажувача, який використано у меню варіантів завантаження мікропрограми.

    Додано у версії 252.

--dry-run
    Тестовий запуск для unlink і cleanup.

    У тестовому режимі команди unlink і cleanup буде виведено лише назви файлів, які має бути вилучено, без вилучення цих файлів.

    Додано у версії 253.

--no-pager
    Не передавати виведені дані до засобу поділу на сторінки.

--json=РЕЖИМ
    Виводить дані із форматуванням JSON. Аргументами можуть бути такі рядки: "short" (найскороченіше виведення без додаткових пробілів та розбиття на рядки), "pretty" (форматована версія із відступами та розбиттям на рядки) або "off" (вимикання виведення до JSON, типовий варіант).

-h, --help
    Вивести короткий текст довідки і завершити роботу.

--version
    Вивести короткі дані щодо версії і завершити роботу.

ПІДПИСАНІ ФАЙЛИ .EFI

bootctl install і update спочатку шукатимуть файл systemd-boot, назва якого завершується суфіксом ".efi.signed", і скопіюють його на місце звичайного файла ".efi". Це уможливлює для авторів дистрибутивів і кінцевих користувачів створення підписаних образів для UEFI SecureBoot.

СТАН ВИХОДУ

Якщо дію буде виконано успішно, буде повернуто 0; в усіх інших випадках буде повернуто ненульове значення коду помилки. bootctl --print-root-device повертає стан виходу 80, якщо основою кореневої файлової системи не є єдиний блоковий пристрій, і ненульові стани виходу при інших помилках.

СЕРЕДОВИЩЕ

Якщо встановлено $SYSTEMD_RELAX_ESP_CHECKS=1, перевірки чинності для ESP буде оптимізовано, а шлях, який вказано --esp-path=, може посилатися на будь-який тип файлової системи на розділі будь-якого типу.

Так само, $SYSTEMD_RELAX_XBOOTLDR_CHECKS=1 вимикає деякі перевірки чинності для розділу розширеного завантажувача.

ПРИКЛАДИ

Приклад 1. Виведення від status і list

    $ bootctl status
    System:
         Firmware: UEFI 2.40 (firmware-version)  ← виробник і версія мікропрограми
      Secure Boot: disabled (setup)              ← стан Secure Boot
     TPM2 Support: yes
     Boot into FW: supported                     ← чи передбачено завантаження до мікропрограми
    Current Boot Loader:                         ← подробиці щодо sd-boot або іншого завантажувача
          Product: systemd-boot version            implementing the Boot Loader Interface[2]
         Features: ✓ Boot counting
                   ✓ Menu timeout control
                   ✓ One-shot menu timeout control
                   ✓ Default entry control
                   ✓ One-shot entry control
                   ✓ Support for XBOOTLDR partition
                   ✓ Support for passing random seed to OS
                   ✓ Load drop-in drivers
                   ✓ Boot loader sets ESP information
                   ✓ Menu can be disabled
              ESP: /dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000
             File: └─/EFI/systemd/systemd-bootx64.efi
    Random Seed:                                 ← база випадковості, яку використано для ентропії. in early boot
     Passed to OS: yes
     System Token: set
           Exists: yes
    Available Boot Loaders on ESP:
              ESP: /boot/efi (/dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000)
             File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 251
             File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 251
    Boot Loaders Listed in EFI Variables:
            Title: Linux Boot Manager
               ID: 0x0001
           Status: active, boot-order
        Partition: /dev/disk/by-partuuid/...
             File: └─/EFI/systemd/systemd-bootx64.efi
            Title: Fedora
               ID: 0x0000
           Status: active, boot-order
        Partition: /dev/disk/by-partuuid/...
             File: └─/EFI/fedora/shimx64.efi
            Title: Linux-Firmware-Updater
               ID: 0x0002
           Status: active, boot-order
        Partition: /dev/disk/by-partuuid/...
             File: └─/EFI/fedora/fwupdx64.efi
    Boot Loader Entries:
            $BOOT: /boot/efi (/dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000)
    Default Boot Loader Entry:
             type: Boot Loader Specification Type #1 (.conf)
            title: Fedora Linux 36 (Workstation Edition)
               id: ...
           source: /boot/efi/loader/entries/entry-token-kernel-version.conf
          version: kernel-version
       machine-id: ...
            linux: /entry-token/kernel-version/linux
           initrd: /entry-token/kernel-version/initrd
          options: root=...

    $ bootctl list
    Boot Loader Entries:
             type: Boot Loader Specification Type #1 (.conf)
            title: Fedora Linux 36 (Workstation Edition) (default) (selected)
               id: ...
           source: /boot/efi/loader/entries/entry-token-kernel-version.conf
          version: kernel-version
       machine-id: ...
            linux: /entry-token/kernel-version/linux
           initrd: /entry-token/kernel-version/initrd
          options: root=...
             type: Boot Loader Specification Type #2 (.efi)
            title: Fedora Linux 35 (Workstation Edition)
               id: ...
           source: /boot/efi/EFI/Linux/fedora-kernel-version.efi
          version: kernel-version
       machine-id: ...
            linux: /EFI/Linux/fedora-kernel-version.efi
          options: root=...
             type: Automatic
            title: Reboot Into Firmware Interface
               id: auto-reboot-to-firmware-setup
           source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

У виведених даних "(default)" вказує на запис, який буде використано типово, а "(selected)" вказує на запис, який було вибрано останній раз (тобто поточний запущений запис).

ДИВ. ТАКОЖ

systemd-boot(7), Специфікація завантажувачів[1], Інтерфейс завантажувачів[2], systemd-boot-random-seed.service(8)

ПРИМІТКИ

1.  Специфікація завантажувачів
    https://uapi-group.org/specifications/specs/boot_loader_specification

2.  Інтерфейс завантажувачів
    https://systemd.io/BOOT_LOADER_INTERFACE

3.  Бази випадковості
    https://systemd.io/RANDOM_SEEDS

4.  Специфікація придатних до вивчення розділів
    https://uapi-group.org/specifications/specs/discoverable_partitions_specification

ПЕРЕКЛАД
Український переклад цієї сторінки посібника виконано Yuri Chornoivan <yurchor@ukr.net>

Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html). НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ.

Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: trans-uk@lists.fedoraproject.org.