Почему в UEFI нет загрузки grub?
Я застрял, пытаясь заставить Linux загрузиться на моих компьютерах. Я много пробовал с OpenSUSE и Ubuntu на разных ноутбуках, но ни один из них не работает. Независимо от того, сколько раз я бегу update-grub
никогда не запускается
У них обоих есть подписанные шайбы MS, поэтому UEFI должен их правильно загружать, но на самом деле это не так, хотя update-grub
или же grub2-install
выходы всегда говорят, что grub был успешно установлен.
Я попытался отключить безопасную загрузку и снова установить grub, но все еще не работает. Я также отключил fastboot, быстрый запуск и Intel SRT, но это тоже не помогает.
Я старался boot-repair
и ни разу не появляется ни одной ошибки. В выходном журнале написано:
Если ваш компьютер перезагружается непосредственно в Windows, попробуйте изменить порядок загрузки в BIOS.
Если ваш BIOS не позволяет изменить порядок загрузки, измените загрузочную запись по умолчанию для загрузчика Windows.
Например, вы можете загрузить Windows, а затем ввести в командной строке администратора следующую команду:
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
Так что нет никакой возможности изменить порядок загрузки в настройках UEFI, только порядок загрузочных устройств, как в BIOS, и мне нужно выполнить последнюю команду.
Теперь это работает, но я не хочу загружать grub из загрузчика Windows таким образом. Я хочу загрузить grub напрямую, потому что я хочу запускать Linux самостоятельно на моем новом ПК и запускать Windows только на виртуальной машине. Есть ли решение для этого?
2 ответа
Если у вас есть система UEFI, технически вам не нужен Grub вообще.
Но чтобы ответить на вопрос, похоже, что ваша реализация UEFI очень ограничена, если вы даже не можете изменить цель загрузки из параметров времени загрузки прошивки.
Вы можете редактировать эти параметры из Linux, используя efibootmgr
, Просто установите вашу grub efi в качестве первой цели, и если вы настроили grub правильно, она должна обработать все оттуда.
У меня снова возникли проблемы с неуклюжим UEFI Acer. Каким-то образом, когда я бегуefibootmgr
для редактирования элементов загрузки, изменения не могут быть сохранены. После перезагрузки все было сброшено, поэтому я не могу загрузить Linux. Я нашел этот рабочий ответ , который переименовывает папку Microsoft и добавляет еще одну запись.
su -c 'cd /boot/efi/EFI && gzip /boot/efi/EFI/Microsoft'
su -c 'mkdir /boot/efi/EFI/1Microsoft && mkdir /boot/efi/EFI/1Microsoft/Boot && mv /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/1Microsoft/Boot/bootmgfw.efi'
su -c 'efibootmgr -c -w -L Win7 -d /dev/sda -p 1 -l '\EFI\1Microsoft\Boot\bootmgfw.efi' -b 6'
Это помогает... пока я не обновлю Windows. Поэтому я покопался и нашел другой способ.
Во время запуска нажмите F2, чтобы войти в настройку UEFI и переключиться на вкладку «Безопасность». Там вы можете увидеть опцию «Выбрать файл UEFI как доверенный для выполнения» . Нажмите enterна него и выберите файл efi для загрузчика, который вы хотите использовать. Введите желаемое имя, нажмите «Да» для подтверждения, и этот файл будет добавлен в меню загрузки. Теперь вы можете переключиться на вкладку «Загрузка», чтобы изменить порядок, если хотите. Или просто нажмите F12во время запуска, чтобы загрузить это меню.