EFI rendszerpartíció
Az EFI rendszerpartíció ( EFI system partition (ESP) ) tulajdonképpen egy közönséges FAT fájlrendszertípusra megformázott partíció. Az elsődleges EFI rendszerbetöltő(ke)t (boot loader programkódokat), valamint, ezeknek a rendszerbetöltőknek a konfigurációs fájljait tartalmazza a számítógépre telepített operációs rendszerek számára.
Kernel
Engedélyezni kell a speciális partícióválasztást (CONFIG_PARTITION_ADVANCED) és az EFI GUID partíciók támogatását (CONFIG_EFI_PARTITION):
-*- Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
[*] EFI GUID Partition support
Az ISO8859-1 kódlapot is engedélyezni kell a FAT EFI partíció csatlakoztatásához:
-*- File Systems --->
DOS/FAT/EXFAT/NT Filesystems --->
<*> VFAT (Windows-95) fs support
(437) Default codepage for FAT
(iso8859-1) Default iocharset for FAT
Native Language support --->
[*] NLS ISO 8859-1 (Latin 1; Western European Languages)
Jellemzők
A létrehozáshoz szükséges utasításokért, kérjük, tekintse meg a Kézikönyvet.
A parted parancs (amely a sys-block/parted programcsomagban található) megmutatja a fájlrendszeren lévő boot, esp két jelzőt. (Fordítói megjegyzés: Ez a két jelző bekapcsolása nagyon fontos, ugyanis, ezek hiányában nem fog be bootolni a rendszerünk.):
root #
parted /dev/sda print
Model: ATA SAMSUNG SSD SM84 (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB fat32 EFI System Partition boot, esp
A gdisk parancs (sys-apps/gptfdisk programcsomagból) az EF00 partíciókóddal jeleníti meg a két jelző meglétét:
root #
gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sda: 500118192 sectors, 238.5 GiB Logical sector size: 512 bytes Disk identifier (GUID): 1B59C2C8-8795-4625-9718-4D636B005AC1 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 500118158 Partitions will be aligned on 2048-sector boundaries Total free space is 2669 sectors (1.3 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 194559 94.0 MiB EF00 EFI System Partition
A partíció fájlrendszere az mkfs.fat parancs használatával hozható létre:
root #
mkfs.fat -F 32 /dev/sda1
Mérethez kötődő megfontolások
A Gentoo kézikönyv azt javasolja, hogy 1 GiB nagyságú tárterületet rendeljen hozzá az ESP-hez, ami több mint elegendő minden rendszerbetöltő payload (például EFI stub kernelek vagy M$ Window$ rendszerbetöltő) számára.
Opcionális: Felcsatolási pont
An entry in /etc/fstab might be useful for manually mounting the ESP but is not needed for booting.
Optional: autofs
Nem ajánlott az ESP partíciót a /boot/efi/ könyvtárba felcsatolni, mint ahogyan azt hagyományosan tették régebben. A beágyazott setup megnehezíti a bevált gyakorlatú autofs-stílusú felcsatolások megvalósítását, mivel a belső autofs létrehozása kiváltja a külsőt. A VFAT fájlrendszerek adatintegritása és biztonsági jellemzői miatt a VFAT fájlrendszerek adatintegritása és biztonsági jellemzői miatt javasolt ezeknek a partícióknak az autofs-en keresztüli felcsatolása (és kibővítve a felcsatolatlan tartásuk, amikor csak lehetséges).
Ahol elérhető a rendszerbetöltő támogatás, ott használja a /boot könyvtárat az XBOOTLDR partícióhoz, és az /efi könyvtárat az ESP partícióhoz. Ha ez nem lehetséges, akkor egy monolithic ESP partíciót kell felcsatolni a /boot könyvtárba. Továbbra is az autofs-style felcsatolásokat kell használni.
A systemd esetében, ha a partíciók a Felderíthető partíciók specifikációja szerint vannak beállítva, akkor automatikusan fel tudja csatolni az aktuális rendszerindításhoz használt ESP partíciót a /boot vagy a /efi könyvtárba, hacsak nincs ott másik partíció felcsatolva [esetleg az /etc/fstab fájlon keresztül], vagy a felcsatolási pont könyvtára nem üres. Ha az ESP és az XBOOTLDR is létezik, akkor az /efi felcsatolási pont kerül felhasználásra.
A systemd esetén (ha nem használja a GPT auto generátort):
UUID=56FE-81E0 /efi vfat defaults,noatime,uid=0,gid=0,umask=0077,x-systemd.automount,x-systemd.idle-timeout=600 0 2
Az OpenRC esetében használja az AutoFS parancsot az igény szerinti csatlakoztatáshoz:
root #
emerge --ask net-fs/autofs
Állítson be egy közvetlen AutoFS felcsatolást az ESP partícióhoz.
/- /etc/autofs/auto.boot --timeout=600,sync,nodev
Mondja meg az AutoFS programnak, hogy figyelje a /boot és /efi elérési utakat, és csatolja fel őket az device-ről származó options-al.
/boot -fstype=vfat,uid=0,gid=0,umask=0077 UUID=AB12-CD34
/efi -fstype=vfat,uid=0,gid=0,umask=0077 UUID=EF00-000A
Az AutoFS programnak futnia kell a felcsatolási pontok figyeléséhez:
root #
rc-update add autofs default
Ha még újraindítás előtt használni szeretné az automatikus felcsatlakoztatót, akkor indítsa azt el manuálisan:
root #
/etc/init.d/autofs start
Ezeket a partíciókat nem kell hozzáadni az /etc/fstab fájlhoz.
Szabványos elrendezés
Van egy szabványos elrendezése az ESP-nek. A szállítóknak és a forgalmazóknak a saját dolgaikat a gyártóspecifikus "saját" könyvtárakba kell elhelyezniük.
user $
tree -L 3 /efi
/efi └── EFI ├── BOOT │ └── BOOTX64.EFI ├── Gentoo │ ├── grubx64.efi │ ├── initramfs-x.y.z.img │ ├── kernel-x.y.z.efi │ ├── mmx64.efi │ └── shimx64.efi ├── Linux │ └── gentoo-x.y.z.efi ├── Microsoft │ ├── Boot │ └── Recovery ├── refind │ └── refind_x64.efi └── systemd └── systemd-bootx64.efi
Itt a Micro$oft részfát – és a rendszerindító részfát is[1] – az M$ Window$ 10 korábbi telepítése hozta létre. A Boot részfa a tartalék könyvtár. Ha az UEFI nem talál egyetlen gyártóspecifikus könyvtárat sem, akkor innen boot-ol. Egy multiboot környezetben megfelelően beállított gyártóspecifikus részfákkal a Boot részfa törölhető.
UEFI boot elemek
Az UEFI-vel rendelkező számítógépek rendszerindítási menüt biztosítanak az ESP rendszerbetöltői számára. Ez a rendszerindító menü a firmware függvénye, és alapértelmezés szerint nem jelenik meg. Sőt, nincs szabvány a rendszerindító menü eléréséhez, de a legáltalánosabb módja az, hogy lenyomva tartjuk (vagy folyamatosan nyomjuk) a billentyűt az UEFI firmware inicializálása során (szintén POST, bekapcsolási önteszt). A legtöbb UEFI firmware-gyártó megjeleníti a rendszerindító menüt, ha a csatlakoztatott billentyűzet valamelyik funkcióbillentyűjét megnyomják. A rendszerindító menü a firmware-beállításból ("BIOS-beállítás") is elérhető lehet, amely egy előre meghatározott billentyű megnyomásával is elérhető. Leggyakrabban Esc, Del, F1, F2, F10, F11 és F12, táblagépeken pedig a Hangerő fel/Le billentyűket használják a firmware beállításába való belépéshez vagy a rendszerindító menü megjelenítéséhez.[2] Kérjük, olvassa el a rendszer vagy az alaplap kézikönyvét a pontos gombjaiért és további részletekért.
A telepítőeszköz nemcsak a rendszerbetöltőt és más szükséges fájlokat kezeli az ESP-n, hanem egy "EFI rendszerindítási bejegyzés" hozzáadását is. Az NVRAM adattárolóban tárolt EFI rendszerindítási bejegyzések olyanok, mint a rendszerbetöltő regisztrációja a firmware-hez. Az EFI általában csak a rendszerindító bejegyzéssel rendelkező rendszerbetöltőket listázza ki a rendszerindító menüben, ezért nem elegendő csak egy rendszertöltőt vagy EFI végrehajtható fájlt másolni az ESP-re. A Linux rendszerbetöltők általában automatikusan hozzáadnak egy EFI rendszerindító bejegyzést egy (U)EFI rendszerbetöltő telepítésekor, mint pl. a GRUB a grub-install paranccsal.
Alternatív megoldásként az UEFI-kompatibilis operációs rendszerek gyakran tartalmaznak konfigurációs eszközt a rendszerindító elemek létrehozására, rendezésére és törlésére. Az ESP tartalma látható ezeknek az eszközöknek, és a rendszerindító elem létrehozása olyan, mintha egy adott kijelölésből kiválasztaná a médiát, majd böngészne az ESP-n és kiválasztaná az elemet, pl. bzImage-4.9.76-r1-gentoo.efi. Linux rendszereken az efibootmgr használható az UEFI rendszerindító (boot) elemek kezelésére.
Abban az esetben, ha egy rendszerbetöltő törlődik az ESP partícióról, az UEFI rendszerint törli az EFI rendszerindító bejegyzést is indításkor, és a rendszerbetöltő a továbbiakban nem lesz elérhető a rendszerindító menüből, még akkor sem, ha a fájlt utólag visszaállítják, azaz ugyanarra az elérési útvonalra visszamásolják az ESP partíción.
Egyetlen kivétel, ahol nincs szükség EFI rendszerindítási bejegyzésre, a cserélhető adathordozó rendszerindítási útvonala. A belső (rögzített) adathordozókon, például a belső HDD-n vagy SDD-n, a legtöbb UEFI rendszeren tartalék rendszerindítási útvonalként is használják.
Cserélhető adathordozó
A cserélhető adathordozón lévő EFI rendszerbetöltők nincsenek rendszerindító bejegyzésként konfigurálva, így nincs szükség olyan eszközökre, mint az efibootmgr. Ehelyett a számítógép firmware azonosítja a cserélhető rendszerindítási lehetőségeket úgy, hogy egy előre meghatározott fájlnevet keres, amely egyedi a használt rendszerarchitektúrára, egy előre meghatározott elérési úton.[3]
A legtöbb (U)EFI implementáció támogatja a cserélhető adathordozó rendszerindítási útvonalának használatát tartalékként a belső meghajtókon.[4] Annak ellenére, hogy ez ellentétes a specifikációkkal, a legtöbb rendszer tartalékként használja, és ez lehet az egyetlen használható rendszerbetöltő a hibás (U)EFI-vel rendelkező rendszereken. Egy adott rendszeren (azaz architektúrán) csak egy ilyen tartalék rendszerbetöltő lehetséges a szabványos rendszerindítási útvonal és a fájlnevek miatt.
Architektúra | Rövidítés | Fájlnév | PE futtatható gép neve |
---|---|---|---|
x86 32-bit | IA-32 | \efi\boot\bootia32.efi | 0x14c |
x86-64 (amd64) | x64 | \efi\boot\bootx64.efi | 0x8664 |
Itanium | IA-64 | \efi\boot\bootia64.efi | 0x200 |
ARM 32-bit | AArch32 | \efi\boot\bootarm.efi | 0x01c2 |
ARM 64-bit | AArch64 | \efi\boot\bootaa64.efi | 0xAA64 |
RISC-V 32-bit | \efi\boot\bootriscv32.efi | 0x5032 | |
RISC-V 64-bit | \efi\boot\bootriscv64.efi | 0x5064 | |
RISC-V 128-bit | \efi\boot\bootriscv128.efi | 0x5128 | |
Loongson 32-bit | LoongArch32 | \efi\boot\bootloongarch32.efi | 0x6232 |
Loongson 64-bit | LoongArch64 | \efi\boot\bootloongarch64.efi | 0x6264 |
A cserélhető adathordozóról történő rendszerindításhoz a firmware-nek kompatibilis rendszertöltőket kell keresnie a támogatott eszközökön, amelyeket a firmware-beállításban lehet konfigurálni. A legtöbb firmware-hez hasonlóan az (U)EFI is biztosít egy gyorsbillentyűt a rendszerindítási kiválasztás megjelenítéséhez (a hivatalos nevén "BIOS Boot Specification" vagy BBS), ellenkező esetben az (U)EFI a beállított alapértelmezett rendszerindítási bejegyzést használja. A hibás (U)EFI azonban alapértelmezés szerint a cserélhető adathordozó rendszerindítási útvonalát használja még a belső meghajtókon is.
A cserélhető adathordozó rendszerindítási útvonalának használatához elegendő az EFI rendszerbetöltőt a kívánt elérési útra és fájlnévre másolni. Ha a firmware ezt a tartalékot használja, akkor ez a konfigurált rendszerindítási bejegyzések közötti választás lehetőségét is megszüntetheti, ami azt jelenti, hogy a rendszerindítási beállítások (az efibootmgr parancsnál felsoroltak szerint) az (U)EFI-n keresztül nem működnek. Bár minden EFI rendszerbetöltő használható tartalékként, tanácsos lehet olyan rendszerindítás-kezelőt használni, amely maga is képes választani a rendszerindítási lehetőségek közül, például a GRUB. Az x64 (amd64) fenti példájából:
root #
cp /efi/EFI/Grub/grubx64.efi /efi/EFI/boot/bootx64.efi
Az EFI System Partition (ESP) FAT fájlrendszere nem különbözteti meg a kis és nagybetűket (tehát nem case-sensitive), hanem karaktermegőrző (case-preserving) (VFAT), míg a Unix a hagyományai szerint szigorúan kis és nagybetűérzékeny, tehát szigorúan megkülönbözteti azokat. A Linux kernelben a
vfat
alapértelmezés szerint a neveket nem különbözteti meg a kis és nagybetűktől (csatlakozási opció check=r
relaxed esetén),[5] így a fenti parancs az ESP-n mindig működni fog. Csak ha a VFAT-ot szigorú kis- és nagybetű-ellenőrzéssel, check=s
-vel csatlakoztatjuk, előfordulhat, hogy az /efi/EFI/boot/bootx64.efi elérési út nem működik, mivel a meglévő fájlok és könyvtárak nagybetűket használnak, pl. /efi/EFI/BOOT vagy /efi/EFI/Boot (amely különböző könyvtárak lennének szigorú kis- és nagybetűk érzékenységgel). Ugyanez vonatkozik a bootx64.efi-re is. A tree -L 3 /efi futtatása (ha az ESP az /efi alá van felcsatolva) megmutatja az egyes rendszeren használatos neveket, amelyekre a fenti parancsot ennek megfelelően módosítani kell.A tartalék rendszerbetöltő nem frissül automatikusan! Minden alkalommal, amikor pl. a GRUB újratelepül (mint egy verziófrissítés után, ami biztonsági javításokat tartalmazhat), akkor ismét át kell másolni a tartalék rendszerindítási útvonalra, felülírva (frissítve) az előző verziót!
A systemd, systemd-boot (formálisan Gummiboot) csomagban található rendszerindítás-kezelő automatikusan települ a cserélhető adathordozó rendszerindítási útvonalára. Amikor a sys-apps/systemd a boot
USE jelölőzászlóval frissül, a bootctl parancsot újra kell futtatni mindkét rendszerbetöltő fájl frissítéséhez.
root #
bootctl update
További olvasnivaló a témában
- Handbook:AMD64/Installation/Disks#What is the EFI System Partition (ESP)?
- UEFI — a firmware standard for boot ROM designed to provide a stable API for interacting with system hardware. On x86 it replaced the legacy BIOS.
- EFI stub — describes EFI stub kernels, i.e. kernels directly executable from UEFI.
- efibootmgr — a tool for managing UEFI boot entries.
- REFInd — a boot manager for UEFI platforms.
Hivatkozások
- ↑ https://wiki.debian.org/UEFI#Force_grub-efi_installation_to_the_removable_media_path
- ↑ https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/boot-to-uefi-mode-or-legacy-bios-mode
- ↑ UEFI 2.10 Specification, 3.5.1.1 Removable Media Boot Behavior
- ↑ Debian Wiki – UEFI: Force grub-efi installation to the removable media path
- ↑ https://www.kernel.org/doc/html/v6.0/filesystems/vfat.html