यह कैसे काम करता है
UEFI फ़र्मवेयर अपने द्वारा संभाली जाने वाली लगभग हर चीज़ की पहचान GUID से करता है: ड्राइवरों द्वारा दिए जाने वाले प्रोटोकॉल, DXE, PEI और SMM मॉड्यूल, फ़र्मवेयर वॉल्यूम और वेरिएबल के नेमस्पेस, जैसे ग्लोबल बूट वेरिएबल का नेमस्पेस या Secure Boot के सिग्नेचर डेटाबेस का नेमस्पेस। अकेला GUID कुछ नहीं बताता; यह टूल EDK2 और प्रमुख फ़र्मवेयर निर्माताओं के हज़ारों GUID वाले कैटलॉग में उसका प्रतीकात्मक नाम खोजता है।
device path वह पाथ है जिससे फ़र्मवेयर किसी डिवाइस या फ़ाइल तक पहुँचता है: PCI बस के रूट से कंट्रोलर, डिस्क, पार्टिशन और .efi लोडर तक। Boot#### बूट एंट्री device path को बाइनरी में सहेजती हैं; यह टूल उसे टेक्स्ट रूप में बदलता है और हर नोड को उसके फ़ील्ड के साथ समझाता है।
उदाहरण
8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuidविनिर्देश के ग्लोबल वेरिएबल का नेमस्पेस, जैसे BootOrder, Boot#### या SecureBoot।db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuid/sys/firmware/efi/efivars का एक फ़ाइल नाम: Secure Boot का db वेरिएबल। यह टूल नाम से GUID निकालता है।Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShellफ़र्मवेयर में इंटीग्रेटेड UEFI Shell की बूट एंट्री: फ़ाइल को फ़र्मवेयर वॉल्यूम के भीतर GUID से खोजा जाता है।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)किसी Boot#### वेरिएबल का बाइनरी डेटा: एट्रिब्यूट, विवरण और device path। अगर efivarfs की फ़ाइल चिपकाई जाए, तो शुरुआत में आने वाले वेरिएबल एट्रिब्यूट के चार बाइट अपने आप पहचान लिए जाते हैं।उपयोग के मामले
- बूट क्रम बदलने या कोई एंट्री हटाने से पहले समझें कि efibootmgr -v में सूचीबद्ध हर एंट्री क्या बूट करती है।
- बूट लॉग, वेरिएबल डंप या EDK2 कोड में दिखने वाले GUID पहचानें।
- जानें कि /sys/firmware/efi/efivars की हर फ़ाइल किस वेरिएबल से संबंधित है, उदाहरण के लिए Secure Boot के सिग्नेचर डेटाबेस।
- पता लगाएँ कि डिस्क क्लोन करने या बदलने के बाद काम करना बंद कर चुकी बूट एंट्री कौन-सी डिस्क, पार्टिशन और फ़ाइल इस्तेमाल करती है।
- UEFITool या अन्य विश्लेषण टूल में खोली गई फ़र्मवेयर इमेज के मॉड्यूल की समीक्षा करें।
अक्सर पूछे जाने वाले प्रश्न
किसी बूट एंट्री का device path कहाँ से मिलता है?
Linux में, efibootmgr -v हर एंट्री को उसके device path के साथ टेक्स्ट में दिखाता है, और /sys/firmware/efi/efivars की Boot#### फ़ाइलों में पूरा बाइनरी डेटा होता है, जिसे xxd या hexdump -C से डंप किया जा सकता है। UEFI Shell में, bcfg boot dump -v एंट्री दिखाता है और map -v डिस्कों के device path।
कोई GUID कैटलॉग में क्यों नहीं है?
कोई भी निर्माता अपने मॉड्यूल के लिए GUID बना सकता है और उन्हें कहीं पंजीकृत करने की ज़रूरत नहीं होती। कैटलॉग में EDK2 के GUID और वे GUID शामिल हैं जिन्हें समुदाय ने प्रमुख निर्माताओं के फ़र्मवेयर में पहचाना है, लेकिन बिना नाम वाले निजी GUID हमेशा रहेंगे। HD नोड में दिखने वाले पार्टिशन GUID हर डिस्क के लिए अद्वितीय होते हैं और कैटलॉग में कभी नहीं होते।
यह device path के कौन-से फ़ॉर्मैट स्वीकार करता है?
विनिर्देश का टेक्स्ट रूप, जैसा UEFI Shell और EDK2 दिखाते हैं, efibootmgr -v की पूरी पंक्ति, और हेक्साडेसिमल में बाइनरी, स्पेस के साथ या बिना, और xxd या hexdump -C के आउटपुट के रूप में भी। बाइनरी केवल device path, किसी Boot#### वेरिएबल का डेटा, या शुरुआत में एट्रिब्यूट वाली efivarfs फ़ाइल हो सकती है।
क्या device path किसी सर्वर पर भेजा जाता है?
नहीं। device path आपके ब्राउज़र में डिकोड होता है। सर्वर से केवल नोड में दिखने वाले फ़र्मवेयर GUID के नाम दिखाने के लिए क्वेरी की जाती है; पार्टिशन GUID और बाकी डेटा आपके कंप्यूटर से बाहर नहीं जाता।
efibootmgr फ़ाइल पाथ के बाद जो डेटा दिखाता है, उसका क्या अर्थ है?
यह एंट्री का वैकल्पिक डेटा है, जिसे फ़र्मवेयर लोडर को पास करता है। उदाहरण के लिए, Windows बूट मैनेजर इसमें अपने BCD स्टोर का संदर्भ सहेजता है। यह device path का हिस्सा नहीं है; अगर वेरिएबल का बाइनरी चिपकाया जाए, तो टूल इसे अलग से दिखाता है।