«Переменные EFI не поддерживаются в этой системе»


19

Я пытаюсь установить Arch Linux на новый (и очень дрянной) ноутбук HP Pavillion 15.

Это машина на основе UEFI. После нескольких попыток мне удалось продвинуться довольно далеко. Устаревший режим отключен в настройках системы, и я загрузил EFI на Arch DVD, который я записал, и прошел через Руководство для начинающих Arch и более расширенное Руководство по установке до того момента, когда я устанавливаю grub.

В то время как chrootЭд, я выполняю:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

Это излучает тонну продукции, в том числе:

Переменные EFI не поддерживаются в этой системе

В первый раз, когда я добрался до этой точки, я продолжил установку, не зная, действительно ли это было проблемой. Оказалось, что когда я перезагрузил машину, загрузочный носитель не был найден, и машина отказалась загружаться. В тот момент я смог зайти в меню настроек UEFI и выбрать файл EFI для загрузки, и Arch Linux загрузится.

Но сейчас я возвращаюсь и переустанавливаю снова, пытаясь решить проблему выше.

Как я могу заставить GRUB правильно установить?

Ответы:


20

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

Это может быть подтверждено:

sh-4.2# efivar-tester
UEFI variables are not supported on this machine.

Если вы chrootвошли в свою новую установку exit, а затем включите efivars:

exit
modprobe efivars

... а затем chrootобратно. В моем случае это означает:

chroot /mnt

но вы должны сделать chrootто же самое, что и раньше.

Вернувшись, проверьте снова:

efivar-tester

Это больше не будет сообщать об ошибке, и вы можете установить grub так же, как и раньше.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug


5
Но как насчет системы, которая не поддерживает UEFI? Как в мире установить GRUB с поддержкой UEFI на USB-накопитель для установки Arch на новый компьютер UEFI, если мой рабочий компьютер не поддерживает UEFI? Должен быть способ сделать это!
trusktr

6
Модуль efivars теперь заменен на «efivarfs» ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
Pedroapero

1
Пока modprobe efivarfsработает, проблема, описанная ОП, сохраняется. может быть, этот ответ нуждается в обновлении? У меня полностью заканчиваются идеи.
Afr

3
К сожалению, modprobe efivarsдает modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(недавно установленный живой USB)
Jozxyqk

5

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


4

Я знаю, что это очень старая тема, но, возможно, поможет кому-то. Большинство руководств предлагают такое же решение для монтирования виртуальных файловых систем перед chroot:

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

Но теперь (возможно, из-за изменений в efivars / efivarfs) этот цикл пропускает одну очень особую под- /sys/firmware/efi/efivarsточку монтирования - и efibootmgr / grub завершается ошибкой.

Так что используйте эту строку вместо:

for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

Фактическая история успеха: Debian с 4.9.0-5 (efivars), сохраненный Arch Linux live cd (выбран только потому, что может загружать uefi из коробки) с 4.14.9-1-ARCH (efivarfs) просто с помощью bind-mount / sys / прошивки / EFI / efivars


0

Запустив Fedora 27, мне нужно было смонтировать efivarfs. Я сделал это внутри chrootfs, однако это все еще не работало, так как загрузочная запись была показана с efibootmgr- но после перезагрузки она не загружалась ни разу, и не была показана снова в живой ОС.

То, что в итоге сработало, использовало grub из live-среды, переместилось в оболочку и вошло. linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot Из обычной загруженной ОС я мог работать grub2-installбез chroot, и это сработало.

Я не уверен, была ли это просто проблема с моим BIOS, или все же есть что-то более общее неправильное, но именно это заставило grub2-installработать без сообщения об ошибке.

# Open encrypted root partion cryptsetup luksOpen /dev/sda4 a4 mount /dev/mapper/a4 /mnt mount /dev/sda2 /mnt/boot mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts pts /mnt/dev/pts/ mount -o bind /etc/resolv.conf /mnt/etc/resolv.conf chroot /mnt # run inside the chroot: mount /dev/sda1 /boot/efi mount -t efivarfs efivarfs /sys/firmware/efi/efivars grub2-install


-3

Ты не можешь! Сборка и установка - это две разные вещи, машина, на которой вы строите, должна поддерживать UEFI. Если вы хотите использовать / установить linux на оборудовании с поддержкой uefi, gpt должен уже существовать. Вы можете собрать gpt / mbr на uefi, но не на обоих, если ваше оборудование использует старый BIOS.


Пожалуйста, прочитайте пост более внимательно.
Джон Диблинг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.