Ошибка efibootmgr: EFI variables are not supported on this system появляется, когда ядру недоступен интерфейс efivarfs — либо модуль не загружен, либо система стартовала в режиме BIOS/CSM, либо прошивка просто кривая. В большинстве случаев проблема решается за пять минут: загрузкой в UEFI-режим или ручным монтированием efivarfs.
UEFI-прошивка хранит переменные: порядок загрузки, ключи Secure Boot, настройки железа. Ядро Linux получает доступ к ним через файловую систему efivarfs, смонтированную в /sys/firmware/efi/efivars. Утилита efibootmgr работает именно через этот интерфейс.
Когда ядро не видит efivarfs, efibootmgr честно говорит: «переменные недоступны». Причины три:
efivarfs не загружен или файловая система не смонтирована.Прежде всего проверь, в каком режиме ты загружаешься. Это основная причина.
Если /sys/firmware/efi существует — система в UEFI-режиме. Если нет — загрузилась через BIOS/CSM:
ls /sys/firmware/efi
Ошибка No such file or directory означает, что ты в Legacy-режиме. Тут нечего чинить из-под работающей системы — перезагрузись и выбери UEFI-вариант в boot menu.
Разрядность прошивки:
cat /sys/firmware/efi/fw_platform_size
Вернёт 64 для 64-бит UEFI или 32 для 32-бит.
Допустим, /sys/firmware/efi на месте. Убедись, что efivarfs смонтирован:
mount | grep efivarfs
Пустой вывод — efivarfs не смонтирован. Монтируй вручную:
sudo mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Если модуль ядра не загружен:
sudo modprobe efivarfs
После этого попробуй снова:
efibootmgr
Если ошибки нет и виден список записей — всё работает. Если пишет Function not implemented, добавь параметр ядра efi=runtime и перезагрузись.
Для проверки доступности переменных есть пакет efivar:
efivar --list
Список переменных без ошибок — всё в порядке.
Бывает, что UEFI есть, efivarfs смонтирован, а efibootmgr всё равно не может записать новую загрузочную запись. Прошивка игнорирует NVRAM или отклоняет запись. На старых платах (примерно до 2013 года) это встречается регулярно.
После загрузки live проверь:
ls /sys/firmware/efi
Каталог должен быть доступен. Если нет — проблема в способе загрузки.
Когда прошивка не принимает записи через efibootmgr, есть обходной путь — поставить загрузчик в стандартный fallback-каталог EFI/BOOT/bootx64.efi. Спецификация требует, чтобы прошивка загружала этот файл, если других записей нет.
С GRUB это делается так:
sudo grub-install --removable --target=x86_64-efi
Флаг --removable ставит GRUB в EFI/BOOT/bootx64.efi на EFI-разделе без обращения к NVRAM. Прошивка подхватит его автоматически. Минус — нельзя держать несколько загрузчиков через efibootmgr, но для одиночной установки Arch это нормально.
Если Secure Boot включён, прошивка загружает только подписанные EFI-приложения. Неподписанный GRUB будет отклонён. Варианты:
sbctl.Проверка текущего состояния:
mokutil --sb-state
Частая проблема на realtime-ядрах. Решение — параметр efi=runtime в cmdline:
sudo nano /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet efi=runtime"
sudo grub-mkconfig -o /boot/grub/grub.cfg
Проверь, не закончилось ли место в NVRAM. Удали мусорные записи:
efibootmgr --unicode
sudo efibootmgr --delete-bootnum --bootnum XXXX
Если не помогает — fallback-путь через --removable.
Смонтируй EFI-раздел и убедись, что файлы на месте:
ls /boot/EFI/arch/
ls /boot/EFI/BOOT/
Если загрузчик пропал из меню прошивки, поможет статья не грузится после установки: чёрный экран.
В большинстве случаев systemd монтирует efivarfs автоматически при загрузке. Если mount | grep efivarfs пуст — монтируй вручную или добавь запись в /etc/fstab:
efivarfs /sys/firmware/efi/efivars efivarfs nosuid,nodev,noexec,ro 0 0
Учти: ro делает переменные доступными только для чтения. Для efibootmgr нужно rw.
Нет. efibootmgr работает только с UEFI. Если материнская плата не поддерживает UEFI, загрузчик ставится через MBR (GRUB в legacy-режиме). Подробнее — в чек-листе по установке Arch.
Подписание безопаснее — Secure Boot защищает от подмены загрузчика. Но если цель — просто поставить Arch, отключение тоже вариант. Опция в BIOS/UEFI Setup, раздел «Security».
Некоторые прошивки (особенно ноутбуки Lenovo с «OS Optimized Defaults») сбрасывают NVRAM. Решение — fallback-путь EFI/BOOT/bootx64.efi или отключение опции сброса в BIOS.
Ошибка EFI variables are not supported почти всегда означает одно из двух: система загружена в Legacy-режиме или efivarfs не смонтирован. Проверь наличие /sys/firmware/efi, смонтируй efivarfs, убедись, что Secure Boot не блокирует загрузчик. Если прошивка кривая — grub-install --removable решит проблему без записи в NVRAM. Пошаговую установку с нуля смотри в руководстве по установке Arch и быстрой установке за 15 минут.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии