Visor — новый менеджер загрузки UEFI для Linux с открытым исходным кодом, написанный преимущественно на языке C. Программа загружает ядра Linux, унифицированные образы ядра, загрузчик Windows и другие EFI-приложения, сочетая скорость GRUB с интерфейсом на основе значков в духе rEFInd. Вместо скриптового движка и множества генерируемых файлов настроек используется единственный файл boot.conf в системном разделе EFI. Проект распространяется под свободной лицензией BSD 2-Clause.

Единый boot.conf вместо скриптового движка
Главное отличие Visor от аналогов — отказ от скриптового движка и множества автоматически создаваемых файлов настроек. Вся конфигурация задаётся в одном файле boot.conf, размещённом в системном разделе EFI. Так настройки проще переносить между системами и править меню вручную.
Графическое меню на Graphics Output Protocol
При запуске Visor отображает графическое меню загрузки средствами UEFI Graphics Output Protocol (GOP). Для уменьшения мерцания применяется двойная буферизация, а переключение между операционными системами и загрузочными записями сопровождается плавной анимацией.
Внешний вид настраивается широко: фон, цвета, размер значков, отступы, заголовки меню, эффекты выделения, а также расположение элементов управления выключением, перезагрузкой и входом в прошивку. Полноценные темы оформления хранятся в отдельных файлах, что позволяет менять облик меню без правки основной конфигурации загрузки.
Управление мышью и сенсорным экраном
Навигация не ограничена клавиатурой. Если прошивка предоставляет совместимое указательное устройство, выбирать и запускать записи можно мышью, тачпадом или через сенсорный экран. Когда графический вывод недоступен, предусмотрен текстовый режим меню как запасной вариант.
Загрузка ядер Linux и унифицированных образов
Для Linux поддерживаются два способа загрузки: через ядра с EFI stub и через унифицированные образы ядра. Второй вариант проект рекомендует размещать в отформатированном под FAT системном разделе EFI — так настройка получается простой и переносимой.
Унифицированный образ ядра (Unified Kernel Image, UKI) — исполняемый файл в формате PE, который объединяет ядро Linux, начальный образ initramfs и параметры командной строки в одном загружаемом из UEFI образе.
Работают и традиционные конфигурации с раздельными файлами vmlinuz и initramfs. Однако для доступа к файлам на разделах ext4 или Btrfs нужен подходящий EFI-драйвер файловой системы. Собственных драйверов Visor не содержит, но загружает совместимые файлы .efi, помещённые в каталог drivers.
Цепная загрузка Windows и автоопределение записей
Помимо Linux, поддерживается цепная загрузка других EFI-приложений, включая загрузчик Windows (Windows Boot Manager). Благодаря этому менеджер подходит и для систем с двойной загрузкой Linux и Windows.
Цепная загрузка (chainloading) — передача управления от одного загрузчика к другому вместо прямого запуска ядра; так менеджер вызывает, например, штатный загрузчик Windows.
Если файл boot.conf отсутствует, выполняется автоматический поиск распространённых загрузчиков Linux и Windows с попыткой самостоятельно построить меню. Тем, кому нужен полный контроль, доступно ручное описание записей в файле настроек.
Поддержка BLS для Fedora Silverblue и bootc
Visor распознаёт записи спецификации загрузочных записей (Boot Loader Specification), применяемой в системах на основе OSTree и образов: Fedora Silverblue, Fedora Kinoite, Fedora CoreOS и развёртываниях bootc. Несколько развёртываний одной операционной системы группируются под одним значком, а текущую, предыдущую и откатную версии можно выбирать прямо из меню загрузки.
В системах с подсчётом попыток загрузки счётчик оставшихся попыток уменьшается перед запуском записи. Если после исчерпания всех попыток обновление так и не загрузилось, автоматически происходит откат к предыдущему развёртыванию.
Проверка образов через shim при Secure Boot
Secure Boot поддерживается. При запуске через shim задействуется протокол проверки shim: перед выполнением проверяются ядра Linux, унифицированные образы, загрузчик Windows и другие EFI-образы в формате PE. Если проверка не проходит при активном Secure Boot, образ не запускается.
Для полностью совместимой с Secure Boot конфигурации сам менеджер загрузки и отдельно установленные драйверы файловых систем также должны быть подписаны или запускаться по доверенной цепочке.
Журнал boot.log и установка через efibootmgr
Для диагностики ведётся файл boot.log в системном разделе EFI. В нём сохраняются сведения о трёх последних загрузках: разбор конфигурации, загрузка образов, декодирование PNG, инициализация драйверов и ошибки передачи управления.
Установку выполняет скрипт проекта: он собирает Visor, копирует нужные файлы в системный раздел EFI и при необходимости создаёт загрузочную запись прошивки через efibootmgr. Дополнительно предоставляется команда visor для сборки, установки, обновления, подписи, проверки конфигураций, контроля состояния и удаления менеджера. Сейчас поддерживаются системы x86_64 с UEFI; для сборки из исходного кода нужны файлы разработки GNU-EFI, компилятор GCC и binutils. В репозитории проекта на GitHub размещены исходный код, примеры настройки и инструкция по установке.
Заключение
Visor объединяет скорость GRUB и наглядность rEFInd в одном менеджере загрузки с единственным файлом настроек. Он пригодится тем, кто держит рядом Linux и Windows, работает с дистрибутивами вроде Fedora Silverblue или переходит на унифицированные образы ядра. Поддержка Secure Boot через shim и откат развёртываний по счётчику попыток расширяют область применения программы вплоть до систем с повышенными требованиями к надёжности загрузки.