Вопрос или проблема
На этом компьютере 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
-
Чтение и запись UEFI NVRAM:
- UEFI хранит информацию о загрузке в специальной области памяти, называемой NVRAM (Non-Volatile Random Access Memory). Когда вы устанавливаете систему, она добавляет записи о загрузчиках в NVRAM. Иногда из-за особенностей материнских плат, которые ориентированы на поддержку Windows, может возникнуть конфликт с добавлением этих записей. Например, некоторые материнские платы Intel Z77 не позволяют добавлять новые записи с помощью утилит, таких как
efibootmgr
илиbcfg
, что приводит к исчезновению записей о Linux после перезагрузки.
- UEFI хранит информацию о загрузке в специальной области памяти, называемой NVRAM (Non-Volatile Random Access Memory). Когда вы устанавливаете систему, она добавляет записи о загрузчиках в NVRAM. Иногда из-за особенностей материнских плат, которые ориентированы на поддержку Windows, может возникнуть конфликт с добавлением этих записей. Например, некоторые материнские платы Intel Z77 не позволяют добавлять новые записи с помощью утилит, таких как
-
Загрузка по умолчанию:
- Если ваша система настроена на загрузку с привязкой к определённому устройству или записи, и эта запись не соответствует требованиям UEFI, система может игнорировать её. Это может происходить, если при установке Linux загрузчик был установлен некорректно или находится в неправильной части EFI-раздела.
-
Конфликты с Windows:
- Наличие Windows на вашем ПК может привести к конфликтам. Windows иногда может перезаписывать загрузочные записи в NVRAM, игнорируя записи, созданные другими системами. Если вы переустановите Windows или обновите её, это может затереть записи о Linux.
-
Физическое отсутствие файлов:
- Хотя вы упомянули, что файл загрузчика всё ещё присутствует на разделе EFI, иногда в процессе установки могут происходить ошибки. Убедитесь, что файл загрузчика действительно находится в правильном каталоге и доступен для чтения.
Решения для устранения проблемы
-
Ручное создание записи UEFI:
- Как упомянуто в вашем запросе, ручное копирование загрузочного файла (
bootx64.efi
) из Linux в папку, используемую Windows, может помочь. Например, можно поместить его вEFI/Microsoft/Boot/bootmgfw.efi
. Это создаст возможность для BIOS увидеть и загрузить вашу запись.
- Как упомянуто в вашем запросе, ручное копирование загрузочного файла (
-
Использование UEFI-оболочки:
- Используя UEFI Shell, вы можете вручную добавлять записи в NVRAM, что может помочь избежать исчезновения записей во время перезагрузки. Это может быть особенно полезно для пользователей, у которых есть доступ к UEFI Shell через установочный носитель.
-
Обновление настроек загрузки:
- После установки или обновления системы Linux, запуск команд, таких как
grub-install
иupdate-grub
должен помочь создать корректные ссылки в NVRAM. Обязательно проверьте настройкуefibootmgr
для подтверждения наличия записи, а также используйтеefibootmgr --verbose
для проверки статуса.
- После установки или обновления системы Linux, запуск команд, таких как
-
Обращение к документации:
- Знакомьтесь с официальными руководствами и вики-сайтами (например, ArchWiki), где могут быть указаны известные проблемы и решения, касающиеся вашего оборудования или операционной системы.
Подводя итоги
Многие проблемы с исчезновением UEFI-записей могут быть следствием взаимодействия между BIOS, NVRAM и установленными операционными системами. Применяя вышеописанные решения и следуя рекомендациям, вы можете значительно повысить вероятность стабильной работы ваших загрузчиков в окружении UEFI. Не забывайте также проверять доступные обновления для вашего BIOS/UEFI и операционных систем, так как производители иногда выпускают патчи для исправления подобных проблем.