"Змінні EFI не підтримуються в цій системі"


19

Я намагаюся встановити Arch Linux на новий (і дуже хитрий) ноутбук HP Pavillion 15.

Це машина на базі UEFI. Після кількох розмаху на цьому мені вдалося дістатися досить далеко. Старий режим відключений у налаштуваннях системи, і я завантажив EFI на DVD-диск Arch, який я записав, і просунувся через Посібник для початківців 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? Як у світі я можу встановити сумісну з UEFI GRUB на своїй USB-накопичувачі, щоб встановити Arch на новий комп'ютер UEFI, якщо мій робочий комп'ютер не підтримує UEFI? Повинен бути спосіб це зробити!
trusktr

6
Модуль efivars зараз замінено на "efivarfs" ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero

1
Поки modprobe efivarfsпрацює, питання, описане ОП, зберігається. можливо, ця відповідь потребує оновлення? Мені зовсім не вистачає ідей.
Афр

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) просто прив’язкою-монтажем / sys / прошивка / efi / efivars


0

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

Що, нарешті, спрацювало, було використати grub з живого середовища, перейти до оболонки та увійти 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, але не на обох, якщо ваше обладнання використовує старі біоси.


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