Visor: новий Open Source UEFI завантажувач для Linux

Visor: новий Open Source UEFI завантажувач для Linux

Visor – це новий відкритий UEFI завантажувач для Linux, призначений для запуску ядер, Unified Kernel Images, Windows та інших EFI додатків. Написаний переважно на C, проект поєднує швидкість і ефективність GRUB з елегантним, іконковим інтерфейсом rEFInd.

Що відрізняє Visor?

Однією з особливостей, яка виділяє Visor серед подібних рішень, є те, що замість використання скриптового движка або численних згенерованих конфігураційних файлів, Visor покладається на єдиний файл boot.conf, який зберігається на EFI-системному розділі.

При завантаженні Visor відображає графічне меню завантаження за допомогою UEFI Graphics Output Protocol. Інтерфейс використовує подвійну буферизацію для мінімізації мерехтіння і має плавні анімації при перемиканні між операційними системами та записами для завантаження.

Налаштування інтерфейсу та навігація

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

Цікаво, що навігація не обмежена лише клавіатурою. Якщо прошивка системи забезпечує сумісний пристрій наведення, користувачі можуть вибирати та запускати записи за допомогою миші, сенсорної панелі або сенсорного екрану. Також доступне текстове меню як резервний варіант у разі недоступності графічного рендеринга.

Завантаження Linux та інших операційних систем

Visor може завантажувати Linux, використовуючи EFI stub kernels або Unified Kernel Images, поєднуючи ядро, initramfs і параметри командного рядка в єдиному EFI виконуваному файлі. Проект рекомендує розташовувати UKIs на FAT-форматованому EFI-системному розділі для простої та портативної установки.

Традиційні налаштування зі звичайними файлами vmlinuz та initramfs також підтримуються. Проте, доступ до файлів на файлових системах Linux, таких як ext4 або Btrfs, вимагає, щоб користувачі надали відповідний драйвер EFI файлової системи. Visor не містить цих драйверів, але може завантажувати сумісні .efi драйвери, що знаходяться в його директорії drivers.

Крім Linux, Visor може виконувати чейнзавантаження інших EFI виконуваних файлів, включаючи Microsoft Windows Boot Manager. Таким чином, він підходить для систем, що працюють в двох системах (dual-boot), з встановленими Linux і Windows.

Автоматичне виявлення завантажувальних записів

Інша корисна функція – автоматичне виявлення завантажувальних записів. Коли файл boot.conf відсутній, Visor шукає загальновживані завантажники Linux і Windows і намагається автоматично створити меню. Користувачі, які надають перевагу повному контролю, можуть визначити записи вручну через конфігураційний файл.

Visor також підтримує записи Boot Loader Specification, які використовуються системами Linux на базі OSTree та образами, включаючи Fedora Silverblue, Fedora Kinoite, Fedora CoreOS та bootc deployments. Множинні розгортання, що належать до однієї операційної системи, можна згрупувати під однією іконкою, а користувачі можуть переглядати поточні, попередні та версії для відкату прямо з меню завантаження.

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

Безпека та діагностика

Поддержка Secure Boot також реалізована. Коли Visor запускається через shim, він використовує протокол верифікації shim для перевірки Linux ядер, UKIs, Windows Boot Manager і інших EFI зображень формату PE перед виконанням. Якщо верифікація не проходить, коли Secure Boot активний, Visor не запустить зображення.

Крім того, сам завантажувач, а також всі окремо встановлені драйвери файлових систем, повинні бути підписані або запущені через належним чином довірений ланцюг для повноцінного сумісного налаштування Secure Boot.

Для усунення несправностей Visor записує файл boot.log на EFI-системному розділі. Журнал зберігає інформацію з трьох найостанніших завантажень та фіксує парсинг конфігурації, завантаження зображень, декодування PNG, ініціалізацію драйверів та помилки передачі.

Установка та вимоги

Установка управляється скриптом проекту, який будує Visor, копіює необхідні файли на EFI-системий розділ і необов’язково створює запис прошивки за допомогою efibootmgr. Встановник також надає команду visor на стороні хоста для побудови, установки, оновлення, підписання, перевірки конфігурацій, перевірки стану та видалення завантажувача.

Visor наразі націлений на системи x86_64 UEFI і вимагає файлів розробки GNU-EFI, GCC та binutils під час складання з виходу. Проект розповсюджується під ліцензією BSD 2-Clause.

Більше інформації, вихідний код та інструкції з установки можна знайти на GitHub репозиторії проекту.