「このシステムではEFI変数はサポートされていません」


18

私はArch Linuxを新しい(そして非常にくだらない)HP Pavillion 15 Notebookにインストールしようとしています。

これはUEFIベースのマシンです。何度か振り回した後、私はかなり遠くまで到達することができました。システムセットアップでレガシーモードが無効になっているため、作成したArch DVDをEFIで起動し、Arch 初心者ガイドとより高度なインストールガイド両方で、grubをインストールするところまで進みました。

一方でchrootエド、私が実行します。

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

これにより、次のような大量の出力が生成されます。

EFI変数はこのシステムではサポートされていません

初めてこのポイントに到達したとき、実際の問題であるかどうかを知らずにインストールを続行しました。マシンを再起動したときに、起動可能なメディアが見つからず、マシンが起動を拒否したため、それが判明しました。その時点で、UEFIセットアップメニューに移動し、ブートするEFIファイルを選択することができました。ArchLinuxがブートします。

しかし、私は今、戻って再度インストールし、上記の問題を修正しようとしています。

GRUBを正しくインストールするにはどうすればよいですか?

回答:


19

問題は、単に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をサポートしていない場合、新しいUEFIコンピューターにArchをインストールするために、USBスティックにUEFI対応GRUBをどのようにインストールしますか?それを行う方法があります!
trusktr

6
efivarsモジュールは "efivarfs"に置き換えられました(wiki.debian.org/UEFI#efibootmgr_and_efivar)。
-pedroapero

1
一方でmodprobe efivarfs作品、問題はOPの持続するで説明しました。多分この答えは更新が必要ですか?私は完全にアイデアを使い果たしています。
17

2
悲しいことmodprobe efivarsmodprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(新しくインストールされたライブUSB)
-jozxyqk

5

UEFIメソッドではなくレガシーを使用して起動した場合、このエラーが発生します。BIOSメニューでUEFIブート項目を選択するか、デフォルトのブート方法としてUEFIを選択してください。


4

それは非常に古いスレッドですが、誰かの助けになるかもしれません。ほとんどのガイドは、chrootの前に仮想ファイルシステムをマウントするための同じソリューションを提案しています:

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

しかし今(おそらくefivars / efivarfsの変更に関連する)このループは非常に特別なサブマウントポイントを1つスキップします- /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

実際のサクセスストーリー:4.19.0-1-ARCH(efivarfs)でbind-mounting / sysを使用して、Arch Linuxライブcdで保存された4.9.0-5(efivars)のDebian(そのままでUEFIを起動できるため選ばれた) / firmware / efi / efivars


0

Fedora 27を実行して、をマウントする必要がありましたefivarfs。chrootfs内でこれを行いましたが、ブートエントリが次のように表示されるため、これはまだ機能していませんでした。efibootmgr

最終的に機能したのは、ライブメディアからgrubを使用してシェルにドロップし、 linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot 起動した通常のOSから起動する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

できません!ビルドとインストールは2つの異なるもので、ビルドするマシンはuefi対応でなければなりません。uefi対応ハードウェアでLinuxを使用/インストールする場合は、gptがすでに存在している必要があります。ハードウェアが古いbiosを使用している場合、uefiでgpt / mbrをビルドできますが、両方はビルドできません。


投稿をより注意深く読んでください。
ジョンダイブリング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.