web-dev-qa-db-ja.com

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

Arch Linuxを新しい(そしてとてもひどい)HP Pavillion 15 Notebookにインストールしようとしています。

これはUEFIベースのマシンです。何度かスイングした後、私はなんとか遠くまで到達することができました。システムセットアップでレガシーモードが無効になっていて、私が書き込んだArch DVDからEFI起動して、Arch Beginner's Guide とより高度な Installation Guide の両方を進めました。 grubをインストールするところまで。

chrootedしている間、私は実行します:

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

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

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

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

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

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

22
John Dibling

問題は、単にefivarsカーネルモジュールがロードされていないことでした。

これは、次の方法で確認できます。

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

新しいインストールにchrootedした場合は、exit outしてから、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
22
John Dibling

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

11
cengique

私は知っています、それは非常に古いスレッドですが、多分誰かのために役立つでしょう。ほとんどのガイドは、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

実際のサクセスストーリー:Arch LinuxライブCDで保存された4.9.0-5(efivars)を搭載したDebian(uefiを箱から出してすぐに起動できるために選択)4.14.9-1-Arch(efivarfs)を使用してbind-mounting/sys/firmware/efi/efivars

6
sorrytech

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

0
user3384414