Efivarfs
Az efivarfs egy fájlrendszer a Linux kernelben, amely lehetővé teszi a felhasználók számára az (U)EFI változók létrehozását, törlését és módosítását. Az efivarfs általában (és automatikusan) a /sys/firmware/efi/efivars helyre van felcsatolva a fájlrendszerben. Ha kézzel kell felcsatolni, akkor a következő parancs használható:
root #
mount -t efivarfs none /sys/firmware/efi/efivars
Bevezetés
Az efivarfs azért jött létre, hogy kezelje a sysfs bejegyzések használatának hiányosságait az EFI változók kezelésében: a régi sysfs EFI változók kódja csak legfeljebb 1024 bájt méretű változókat támogatott. Ez eredetileg az EFI specifikáció 0.99-es verziójának egy korlátja volt, amelyet eltávolítottak, mielőtt bármilyen teljes kiadás megjelent volna[1].
Számos firmware hibák miatt, ahol a nem szabványos UEFI változók eltávolítása a rendszer firmware-jét POST hibához vezeti, az efivarfs fájlok, amelyek nem jól ismert szabványosított változók, immutable fájlként jönnek létre.
Amikor egy UEFI változó tartalmát a /sys/firmware/efi/efivars útvonalon megtekintjük, figyeljünk az output első 4 bájtjára - ezek little-endian formátumban az UEFI változó attribútumait képviselik. Gyakorlatilag minden efivar a következő formátumú:
4_bytes_of_attributes + efivar_data
.Kernel
Szükséges az CONFIG_EFIVAR_FS támogatás engedélyezése:
Device Drivers --->
Firmware Drivers --->
[ ] Disable EFI runtime services support by default
File systems --->
Pseudo filesystems --->
<*> EFI Variable filesystem
Hibaelhárítás
EFI-CSM: BIOS mód
Az x86 esetében az UEFI szoftver felváltotta a hagyományos BIOS szoftvert, hogy lehetővé tegye a visszafelé kompatibilitást az átmeneti időszakban. Az UEFI az x86 architektúrán egy BIOS-emulációt, az úgynevezett Compatibility Support Module (CSM) lehetőséget is tartalmazott. Amikor az EFI-CSM aktiválva van és használatban van, úgy viselkedik, mint egy hagyományos BIOS, beleértve az UEFI eszközök elrejtését az operációs rendszer elől.
Ha ez a fájlrendszer nem létezik UEFI-kompatibilis hardveren, akkor valószínűleg azt jelenti, hogy a hardvert Örökölt (BIOS) módban van, azaz EFI-CSM módban indították el.
A legtöbb esetben biztonságosan feltételezhető, hogy egy 2020 után gyártott számítógép vagy laptop tisztán UEFI rendszerű, amely nem lehet BIOS módban. További érdekességként említjük, hogy amikor a Secure Boot engedélyezve van, az EFI-CSM automatikusan deaktiválódik.
Vagyis "EFI futásidejű szolgáltatás nem érhető el". Minden (U)EFI funkció letiltható az efi=noruntime
kernel paraméterrel, vagy aktiválható az efi=runtime
paraméterrel. Az EFI futásidejű funkciók nélkül indított kernel nem lesz képes semmilyen EFI beállítást vagy változót módosítani, beleértve a rendszerindítási beállítást is.
További olvasnivaló a témában
- Efibootmgr — egy eszköz az UEFI rendszerindító bejegyzések kezelésére.