efivarfs

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Efivarfs and the translation is 95% complete.
This article is a stub. Please help out by expanding it - how to get started.
Other languages:
Resources

efivarfs は、ユーザが (U)EFI 変数を作成、削除、および変更できるようにする、Linux カーネル内のファイルシステムです。efivarfs は、典型的に (そして自動的に) /sys/firmware/efi/efivars にマウントされます; もし手動でマウントする必要がある場合は、次のコマンドを使用できます:

root #mount -t efivarfs none /sys/firmware/efi/efivars

はじめに

efivarfs は、EFI 変数を保守するために sysfs 内でエントリを使用する際の問題点に対処するために作成されました: 古い sysfs の EFI 変数のコードは 1024 バイト以下の変数のみをサポートしていました。これは元々 EFI 仕様のバージョン 0.99 にあった制限でしたが、完全版のリリース前に削除されたものです[1]

メモ
Due to the presence of numerous firmware bugs where removing non-standard UEFI variables causes the system firmware to fail to POST, efivarfs files that are not well-known standardized variables are created as immutable files. This doesn’t prevent removal—chattr -i will work—but it does prevent this from happening accidentally.
ヒント
/sys/firmware/efi/efivars 内の UEFI 変数の内容を確認するときには、出力の最初の 4 バイトに注目してください - UEFI 変数の属性を、リトルエンディアン形式で表現しています。実際問題としては、各 efivar は以下の形式になります: 4_bytes_of_attributes + efivar_data

カーネル

CONFIG_EFIVAR_FS サポートを有効化する必要があります:

カーネル EFI 変数ファイルシステムサポートを有効化する
Device Drivers  --->
   Firmware Drivers  --->
      [ ] Disable EFI runtime services support by default
File systems  --->
   Pseudo filesystems  --->
       <*> EFI Variable filesystem

トラブルシューティング

EFI-CSM: BIOS モード

x86 では、UEFI がレガシーな BIOS を置き換えました。移行期間中の後方互換性を有効化するために、x86 上の UEFI には Compatibility Support Module (CSM) と呼ばれる BIOS エミュレーションが含まれています。EFI-CSM が有効化されて使用されている場合、OS からの UEFI の機能の隠蔽を含め、レガシー BIOS のように振る舞うでしょう。

ヒント
UEFI 対応ハードウェアでこのファイルシステムが存在しない場合、それはおそらくそのハードウェアがレガシー (BIOS) モード、つまり EFI-CSM でブートされていることを意味するでしょう。

多くの場合、2020 年以降に製造されたコンピュータは、BIOS モードで起動できない純粋な UEFI システムであると見てよいでしょう; また別の重要な点として、セキュアブートが有効化されている場合、EFI-CSM は自動的に無効化されます。

EFI ランタイムが利用可能でない

すべての (U)EFI 関数は、カーネル引数 efi=noruntime で無効化、または efi=runtime で有効化することができます。EFI ランタイム関数を使用せずにブートされたカーネルは、ブート構成設定も含め、どんな EFI 設定および変数も変更することはできないでしょう。

関連項目

  • EfibootmgrUEFI ブートエントリを管理するためのツールです。

参照