web-dev-qa-db-ja.com

Arch Linuxは、すでに起動されているときに/ boot / efiを探します

ArchLinuxとWindowsのデュアルブートがあります。

Windows Updateの後、私のGRUBが失われ、システムは_grub recovery_で起動していました。そこから、GRUBをArchLinuxと起動しますが、次のメッセージで完全に起動できません。

_filed to listen on Load/Save RF Kill Switch Status /dev/rfkill Match
...    
failed to mount /boot/efi
# Enter recovery mode
...
_

GRUBを回復モードから回復しようとしました(wikiは ここ ):

_mount /dev/sda5 /mnt # my Linux system
mount /dev/sda3 /efi # my EFI System partition
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
grub-config -o /boot/grub/grub.cfg
_

これでGRUBに戻り、以前と同じようにArchLinuxまたはWindowsを選択できるようになりました。

ただし、Arch Linuxを選択すると、同じエラーメッセージが_failed to mount /boot/efi_と表示されます。 Windowsは正常に起動します。

_/boot/efi_にあるものを確認しましたが、実際には空です。私の_initramfs-linux.img_、_initramfs-linux-fallback.img_、_intel-ucode.img_および_vmlinux-linux.img_ファイルは_/boot/_にあります。

しかし、my _/boot/grub/grub.cfg_では、initrdは_intel-ucode.img_と_initramfs-linux-lts.img_を_/boot/_で正確に検索し、明らかに見つけます。

それから私はArchフォーラムで私のものと同様の問題をたくさん見つけました(例 this one )。ただし、問題が発生する前に、Linuxカーネルを更新したり、Linuxインストール内で何かを変更したりはしていません。また、参照された投稿とは異なり、_vmlinuz-Arch.efi_でも_/boot/_のようなものはないようです。

また、ArchWikiの閲覧にも時間を費やしました。私が理解している限り、GRUBリカバリーを参照するWikiページは通常、すでに試したものと同じ手順を提案しますが、_Arch-iso_と_Arch-chroot_から私の_/dev/sda5_。

だから私は一番上の質問にいくつか質問があります:Arch Linuxの起動プロセスをどのように回復しますか?

より具体的なもう1つの理由は、systemdが_/boot/efi_を一度だけ検索しようとする理由です(GRUBフェーズが既に渡されました?GRUBブートエントリを探すものではありませんか?そしてGRUBはすでに私のArchLinux initramを取得しているようです(少なくともGRUB正しく実行されましたGRUBエントリ、_/boot/grub/grub.cfg_にエコーメッセージを追加して確認しました)。

さらに奇妙なことに、_/boot/efi_は、私の_/dev/sda2_である_Windows recovery environment_であり、ではない__のため、マウントに失敗します_/dev/sda3_これは_EFI System_です:

_$systemctl status boot-efi.mount
boot-efi.mount --- /boot/efi
Loaded: loaded (/etc/fstab; generated)
Active: Failed (Result: exit-code) ...
Where: /boot/efi
What: /dev/sda2
Docs: man:fstab(5)
      man:systemd-fstab-generator(8)
_
2
foki

これは、Windows UpdateがEFIパーティションに対して非常にいたずらをしたようです。

あなたの質問で私が見る主な問題は、systemdが/ boot/efiを見つけることができないということです

これは、設定ファイル/etc/fstabを使用してマウントされます。

何らかの理由で、/ etc/fstabの/ boot/efiエントリは、存在しなくなったファイルシステムを探しています。これは、EFIパーティションを再フォーマットしたことと一致し、grubを再インストールする必要がある理由を説明します。

コマンドblkid(rootとして実行)を使用して、EFIパーティションのUUIDを見つけることができます。その後、それを/ etc/fstabに編集できます。これで問題が解決します。


EFIは、ユーティリティが実行時にEFIを読み取って更新するためのアクセス権を持つようにマウントされています。

1
Philip Couling