Arch Linuxを新しい(そしてとてもひどい)HP Pavillion 15 Notebookにインストールしようとしています。
これはUEFIベースのマシンです。何度かスイングした後、私はなんとか遠くまで到達することができました。システムセットアップでレガシーモードが無効になっていて、私が書き込んだArch DVDからEFI起動して、Arch Beginner's Guide とより高度な Installation Guide の両方を進めました。 grubをインストールするところまで。
chroot
edしている間、私は実行します:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch_grub --recheck --debug
これにより、次のような大量の出力が生成されます。
EFI変数はこのシステムではサポートされていません
この時点で初めて、インストールが続行され、実際の問題かどうかはわかりませんでした。それは、私がマシンを再起動したときにブート可能なメディアが見つからず、マシンがブートを拒否したためでした。その時点で、UEFIセットアップメニューに移動してEFIファイルを選択し、起動すると、Arch Linuxが起動しました。
しかし、私は戻って再インストールし、上記の問題を修正しようとしています。
GRUBを正しくインストールするにはどうすればよいですか?
問題は、単にefivars
カーネルモジュールがロードされていないことでした。
これは、次の方法で確認できます。
sh-4.2# efivar-tester
UEFI variables are not supported on this machine.
新しいインストールにchroot
edした場合は、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
UEFIメソッドではなくレガシーを使用して起動した場合、このエラーが発生します。 BIOSメニューでUEFIブート項目を選択するか、デフォルトのブート方法としてUEFIを選択する必要があります。
私は知っています、それは非常に古いスレッドですが、多分誰かのために役立つでしょう。ほとんどのガイドは、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
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