Почему запись UEFI в Linux исчезает при каждом перезагрузке?

Вопрос или проблема

На этом компьютере Acer, после установки любой системы Linux с любым загрузчиком, я могу загрузить ее один раз, но после перезагрузки записи UEFI Linux исчезают.

Файл системы Linux в EFI-разделе загрузки, похоже, все еще здесь.

Я пробовал это с Ubuntu и ArchLinux, с GRUB и systemd-boot.

Почему эта запись исчезает просто после загрузки системы?

Из вики ArchLinux:

На определенных материнских платах UEFI, таких как некоторые платы с чипсетом Intel Z77, добавление записей с помощью efibootmgr или bcfg из EFI Shell не сработает, потому что они не отображаются в списке загрузочного меню после добавления в NVRAM.

Эта проблема возникает потому, что материнские платы могут загружать только Microsoft Windows. Чтобы решить эту проблему, вам нужно поместить файл .efi в местоположение, которое использует Windows.

Скопируйте файл bootx64.efi с установочного носителя Arch Linux (FSO:) в каталог Microsoft вашего UEFI-раздела на жестком диске (FS1:). Для этого загрузитесь в EFI shell и введите:

FS1:
cd EFI
mkdir Microsoft
cd Microsoft
mkdir Boot
cp FS0:\EFI\BOOT\bootx64.efi FS1:\EFI\Microsoft\Boot\bootmgfw.efi

После перезагрузки любые записи, добавленные в NVRAM, должны появиться в загрузочном меню.

Если у вас нет установленного UEFI shell, вы, конечно, можете сделать это из оболочки вашей операционной системы.

Надеюсь, это поможет.

Может быть, стоит ознакомиться с вики Arch о UEFI.

Упомянуты известные проблемы с загрузчиками, их решения и обходные пути.

Я восстанавливал EFI-раздел и использовал efibootmgr для добавления загрузчика Grub, перейдя в chroot с флешки Debian Live.

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --removable
update-grub
sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 --label 'GrubMenu' --loader '\EFI\debian\grubx64.efi' --unicode -e 3

Загрузчик, похоже, был там, когда я это сделал:

efibootmgr --verbose

Но после перезагрузки он не отображался в меню BIOS.

Я воспользовался решением выше от @ea7ababe. Это позволило мне загрузиться в Debian «нормально». После этого я снова выполнил команды grub-install и efibootmgr, и на этот раз все сработало. Теперь у меня есть запись загрузчика GrubMenu в меню BIOS UEFI.

.

Ответ или решение

Каждый раз, когда вы reboot’ите ваш компьютер на базе UEFI, и запись о Linux исчезает из меню, это может вызывать множество вопросов. Давайте подробно разберём возможные причины данной ситуации, особенно в контексте работы с загрузчиками, такими как GRUB и systemd-boot, а также особенностей материнских плат, таких как те, что установлены на некоторых ПК Acer.

Причины исчезновения записи UEFI о Linux

  1. Чтение и запись UEFI NVRAM:

    • UEFI хранит информацию о загрузке в специальной области памяти, называемой NVRAM (Non-Volatile Random Access Memory). Когда вы устанавливаете систему, она добавляет записи о загрузчиках в NVRAM. Иногда из-за особенностей материнских плат, которые ориентированы на поддержку Windows, может возникнуть конфликт с добавлением этих записей. Например, некоторые материнские платы Intel Z77 не позволяют добавлять новые записи с помощью утилит, таких как efibootmgr или bcfg, что приводит к исчезновению записей о Linux после перезагрузки.
  2. Загрузка по умолчанию:

    • Если ваша система настроена на загрузку с привязкой к определённому устройству или записи, и эта запись не соответствует требованиям UEFI, система может игнорировать её. Это может происходить, если при установке Linux загрузчик был установлен некорректно или находится в неправильной части EFI-раздела.
  3. Конфликты с Windows:

    • Наличие Windows на вашем ПК может привести к конфликтам. Windows иногда может перезаписывать загрузочные записи в NVRAM, игнорируя записи, созданные другими системами. Если вы переустановите Windows или обновите её, это может затереть записи о Linux.
  4. Физическое отсутствие файлов:

    • Хотя вы упомянули, что файл загрузчика всё ещё присутствует на разделе EFI, иногда в процессе установки могут происходить ошибки. Убедитесь, что файл загрузчика действительно находится в правильном каталоге и доступен для чтения.

Решения для устранения проблемы

  1. Ручное создание записи UEFI:

    • Как упомянуто в вашем запросе, ручное копирование загрузочного файла (bootx64.efi) из Linux в папку, используемую Windows, может помочь. Например, можно поместить его в EFI/Microsoft/Boot/bootmgfw.efi. Это создаст возможность для BIOS увидеть и загрузить вашу запись.
  2. Использование UEFI-оболочки:

    • Используя UEFI Shell, вы можете вручную добавлять записи в NVRAM, что может помочь избежать исчезновения записей во время перезагрузки. Это может быть особенно полезно для пользователей, у которых есть доступ к UEFI Shell через установочный носитель.
  3. Обновление настроек загрузки:

    • После установки или обновления системы Linux, запуск команд, таких как grub-install и update-grub должен помочь создать корректные ссылки в NVRAM. Обязательно проверьте настройку efibootmgr для подтверждения наличия записи, а также используйте efibootmgr --verbose для проверки статуса.
  4. Обращение к документации:

    • Знакомьтесь с официальными руководствами и вики-сайтами (например, ArchWiki), где могут быть указаны известные проблемы и решения, касающиеся вашего оборудования или операционной системы.

Подводя итоги

Многие проблемы с исчезновением UEFI-записей могут быть следствием взаимодействия между BIOS, NVRAM и установленными операционными системами. Применяя вышеописанные решения и следуя рекомендациям, вы можете значительно повысить вероятность стабильной работы ваших загрузчиков в окружении UEFI. Не забывайте также проверять доступные обновления для вашего BIOS/UEFI и операционных систем, так как производители иногда выпускают патчи для исправления подобных проблем.

Оцените материал
Добавить комментарий

Капча загружается...