読み取り専用EFIシステムパーティションを回復する方法は?

読み取り専用EFIシステムパーティションを回復する方法は?

GRUBをインストールし、問題なくefibootmgrを使用して起動順序を変更することができたEFIパーティション/ dev / sda1がありますが、残念ながら、現在はgrub-installで "読み取り専用ファイルシステム"エラーを取得できません(特に、/boot / efiとefibootmgrにインストールするときは、grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda次のように消去しようとしました。

sudo mkfs.vfat /dev/sda1

しかし、まだこのエラーが発生します。具体的にはgrub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda次のようになります。

Installing for x86_64-efi platform.
Could not delete variable: Read-only file system
efibootmgr: ** Warning ** : Boot0002 has same label gentoo
Could not prepare Boot variable: Read-only file system
Installation finished. No error reported.

私は見たUSB読み取り専用ファイルシステムの回復wipefsただし、複数のディストリビューションがインストールおよび設定されており、これらの削除から回復するのに時間がかかるため、このディスクを削除することはできません。奇妙なことは、grub-installがまだ/dev/sda1にファイルを追加していることです。ただ起動順序が変わらないようです。

答え1

エラーメッセージは「変数を削除できません:読み取り専用ファイルシステムです。実際にUEFIブート変数を操作しようとしましたが、失敗しました。

efivarfsこれらのエラーは、実際には通常インストールする必要があるUEFIブート変数にアクセスするために使用されるファイルシステムを指します/sys/firmware/efi/efivars。また、以前のバージョンのUEFI変数アクセスメカニズムがあるかもしれません/sys/firmware/efi/vars

CONFIG_EFIVAR_FSカーネル設定オプションを見逃すと、対応する仮想ファイルシステム用のドライバがカーネル(またはモジュールにコンパイルされている場合はその名前efivarfs)にない可能性があります。ドライバが利用可能な場合は、このファイルシステムが次にリストされていることを確認してください/etc/fstab。システムのブートスクリプトが具体的に処理しない場合は、/ etc / fstabファイルに次の行を追加する必要があります。

efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0

アップデート:誰かがそれを実行すると、元の実装によってefivarfs一部のコンピュータが機能しない可能性がありますrm -rf /sys/firmware/efi/efivarfs

この状況に対する保護が新しいカーネルに追加され、安全であることが知られている項目を除くすべての変数項目はデフォルトで変更できず、(efivarfsと同様chattr +i)正当なUEFI変数操作ツール(変更する前にファイル属性を変更するなど)があります。efibootmgr

ローリングリリースシステムでは、efivarfsユーザースペースツール(つまり、grub-install処理に必要な修正を受け取る)の前にカーネルアップデートが実行され、システムに変更が適用される可能性があります。この場合、これが発生する可能性があります。

関連情報