Jak to działa
Firmware UEFI identyfikuje za pomocą GUID-ów niemal wszystko, czym zarządza: protokoły udostępniane przez sterowniki, moduły DXE, PEI i SMM, woluminy firmware'u oraz przestrzenie nazw zmiennych, np. przestrzeń globalnych zmiennych rozruchowych czy baz sygnatur Secure Boot. Sam GUID niczego nie mówi; to narzędzie wyszukuje jego nazwę symboliczną w katalogu tysięcy GUID-ów z EDK2 i od głównych producentów firmware'u.
Ścieżka urządzenia (device path) to droga, której firmware używa, aby dotrzeć do urządzenia lub pliku: od korzenia magistrali PCI po kontroler, dysk, partycję i program ładujący .efi. Wpisy rozruchowe Boot#### przechowują ścieżkę urządzenia w postaci binarnej; narzędzie tłumaczy ją na postać tekstową i objaśnia każdy węzeł wraz z jego polami.
Przykłady
8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuidPrzestrzeń nazw zmiennych globalnych ze specyfikacji, takich jak BootOrder, Boot#### czy SecureBoot.db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuidNazwa pliku z /sys/firmware/efi/efivars: zmienna db Secure Boot. Narzędzie wyodrębnia GUID z nazwy.Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShellWpis rozruchowy UEFI Shell wbudowanej w firmware: plik jest wyszukiwany po GUID w woluminie firmware'u.01 00 00 00 20 00 55 00 45 00 46 00 49 00 20 00 4F 00 53 00 00 00 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 02 1F 03 12 0A 00 00 00 FF FF 00 00 7F FF 04 00UEFI OS — PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0xFFFF,0x0)Binarna zawartość zmiennej Boot####: atrybuty, opis i ścieżka urządzenia. Jeśli wkleisz plik z efivarfs, cztery bajty atrybutów zmiennej znajdujące się na początku zostaną rozpoznane automatycznie.Przypadki użycia
- Zrozum, co uruchamia każdy wpis wyświetlany przez efibootmgr -v, zanim zmienisz kolejność rozruchu lub usuniesz któryś z nich.
- Zidentyfikuj GUID-y pojawiające się w dzienniku rozruchu, zrzucie zmiennych lub kodzie EDK2.
- Sprawdź, której zmiennej odpowiada każdy plik w /sys/firmware/efi/efivars, np. bazy sygnatur Secure Boot.
- Ustal, jakiego dysku, partycji i pliku używa wpis rozruchowy, który przestał działać po sklonowaniu lub wymianie dysku.
- Przejrzyj moduły obrazu firmware'u otwartego w UEFITool lub innych narzędziach analitycznych.
Najczęstsze pytania
Skąd wziąć ścieżkę urządzenia wpisu rozruchowego?
W systemie Linux efibootmgr -v pokazuje każdy wpis wraz ze ścieżką urządzenia w postaci tekstowej, a pliki Boot#### w /sys/firmware/efi/efivars zawierają pełne dane binarne, które można zrzucić za pomocą xxd lub hexdump -C. W UEFI Shell polecenie bcfg boot dump -v pokazuje wpisy, a map -v ścieżki urządzeń dysków.
Dlaczego jakiegoś GUID-a nie ma w katalogu?
Każdy producent może tworzyć GUID-y dla własnych modułów, nigdzie ich nie rejestrując. Katalog zbiera GUID-y z EDK2 oraz te, które społeczność zidentyfikowała w firmware'ach głównych producentów, ale zawsze pozostaną własne GUID-y bez nazwy. GUID-y partycji pojawiające się w węzłach HD są unikatowe dla każdego dysku i nigdy nie ma ich w katalogu.
Jakie formaty ścieżek urządzeń są akceptowane?
Postać tekstowa ze specyfikacji, taka jak wyświetlają UEFI Shell i EDK2, pełny wiersz z efibootmgr -v oraz dane binarne w zapisie szesnastkowym, rozdzielone spacjami lub nie, także jako wynik xxd lub hexdump -C. Dane binarne mogą być samą ścieżką urządzenia, zawartością zmiennej Boot#### lub plikiem z efivarfs z atrybutami na początku.
Czy ścieżka urządzenia jest wysyłana na jakiś serwer?
Nie. Ścieżka urządzenia jest dekodowana w Twojej przeglądarce. Serwer jest odpytywany tylko o GUID-y firmware'u występujące w węzłach, aby wyświetlić ich nazwy; GUID-y partycji i pozostałe dane nie opuszczają Twojego komputera.
Co oznaczają dane, które efibootmgr pokazuje po ścieżce pliku?
To dane opcjonalne wpisu, które firmware przekazuje programowi ładującemu. Menedżer rozruchu systemu Windows zapisuje tam na przykład odwołanie do swojego magazynu BCD. Nie są częścią ścieżki urządzenia; jeśli wkleisz dane binarne zmiennej, narzędzie pokaże je osobno.