
ã¯ããã«
æè¿ã®èšäºã
ããŒãããŒããŒã䜿çšããã«Linux OSãããŠã³ããŒãããããèªãã åŸã2ã€ã®ããšã«æ°ä»ããŸãããå€ãã¯2011幎ã«é¡ããæ°ãããããšã«èå³ããããŸãã èè
ã¯æãåºæ¬çãªãã®ã説æããŸããã§ããã å¥ã®èšäº
ããããŸãããããã§ã«å€ããªã£ãŠãããããŸãã¯å€ãã®äžå¿
èŠã§åæã«èšãããŠããªããã®ããããŸããã
å
·äœçã«ã¯ãã«ãŒãã«ã¢ã»ã³ããªãªãã·ã§ã³
CONFIG_EFI_STUBã®èŠç¹ãèŠèœãšããŠããŸããã UïŒlu / ku / edu / * etc *ïŒbuntuã®æè¿ã®ããŒãžã§ã³ã§ã¯ããã®ãªãã·ã§ã³ã¯ããã©ã«ãã§ãã§ã«æå¹ã«ãªã£ãŠãããããäœæè
ã«ã¯çãã¯ãããŸããã§ããã
ç§ã®ç¥ãéããçŸåšãæå®ãããããŒãžã§ã³ä»¥äžã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸããŠããŸãïŒArch LinuxãFedora 17ãOpenSUSE 12.2ãUbuntu 12.10ã ã³ã¡ã³ãã§ã¯ã2.6ã«ãŒãã«ãæèŒããDebianã§ãã§ãããšè¿°ã¹ãŸããããããã¯ææ°ããŒãžã§ã³ããã®ããã¯ããŒãã«éããŸããã ãããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãåæ§ç¯ããå¿
èŠã¯ãŸã£ãããããŸããïŒ ããããä»ã®CONFIG_EFI_STUBã§ã¯ãã»ãšãã©ã®å Žåããªãã·ã§ã³ã¯ã«ãŒãã«ããŒãžã§ã³3.3.0以éã§ã®ã¿äœ¿çšå¯èœã§ããããããã©ã«ãã§ãªãã«ãªã£ãŠããããããŸã£ããååšããŸããã ãããã£ãŠãCONFIG_EFI_STUBãªãã·ã§ã³ã䜿çšããŠã³ã³ãã€ã«ãããã«ãŒãã«ã«ã¯ã以äžã§èª¬æãããã¹ãŠã®ããšãåœãŠã¯ãŸããŸãã
ããã§ã¯ãLinux Kernel EFI Boot Stubãšã¯æ£ç¢ºã«ã¯äœã§ããïŒ
äžè¬çãªæ
å ±
ãããŠ... "exeãã¡ã€ã«"以äžã®ãã®ã¯ãããŸããïŒ
ã¯ãã
PE / COFFã ãããæ¢ããããŸãã ãŸãããšãããã
UEFIããŒãããŒããŒãåã°ããããã«ãããããªå€æŽãå ãããã®äžã®zakoã ãã§ãã ããã確èªããã«ã¯ãã«ãŒãã«ã®æåã®2ãã€ããèªã¿åããŸãã
$ od /boot/vmlinuz-linux --address-radix=x --read-bytes=2 -t x1c 0000000 4d 5a MZ 0000002
ããªãã¿ã§ãããïŒ å°ãªããšãäžåºŠã楜ãã¿ã®ããã«ãã¡ã¢åž³ã16é²ãšãã£ã¿ããŸãã¯ã¯ãŒã«ãªãã®ã§MS-DOSãŸãã¯Windowså®è¡å¯èœãã¡ã€ã«ãéãã人ã®ããã«ã ãããã¯ãå®éã«MS-DOSã§ãã®ãã¡ã€ã«åœ¢åŒãéçºãã
Mark Zbikowskiã®é æåã§ãã ãã®ã¹ã¿ãã®çœ²åã¯ãçŸä»£ã®Windowså®è¡å¯èœãã¡ã€ã«ã®åæ®ã®ãŸãŸã§ããããã¡ã€ã«ããšã«æå€§64ãã€ãã®ããããŒãé£ãå°œãããŠããŸãïŒ
DOSããããŒã¯ãã«ãŒãã«ãããŒãã»ã¯ã¿ãŒãšããŠããŒããããšãã«å®è¡ãããPEãã¡ã€ã«ã®å®è¡æã«MS-DOSã®ããã«èªãã¬ã¬ã·ãŒã³ãŒãã«è©²åœããŸãããçŽæ¥ãããããŒããŒãã¯ãµããŒããããŠããŸããã 代ããã«ããŒãããŒããŒããã°ã©ã ã䜿çšããŠãã ããã ãã£ã¹ã¯ãåãåºããä»»æã®ããŒãæŒããŠåèµ·åããŸã... "ã ãããã£ãŠãããã®ãã®ããããŒããã®æ
å ±ã¯ãå®éã«ã¯çœ²åãMZããšæ¬¡ã®ããããŒã®ãªãã»ããã¢ãã¬ã¹ãé€ããŠãŽãã§ãã
ç¶ããŸãããã
PE / COFF仿§ã¯ããªãã»ãã0x3cã«ã眲åãPE \ 0 \ 0ããæã€2çªç®ã®ããããŒã®32ããããªãã»ãããããããšã瀺ããŠããŸãã
$ od /boot/vmlinuz-linux --address-radix=x --read-bytes=4 --skip-bytes=0x3c -t x4 00003c 000000b8 000040
ãã®ããããªãã»ããã¯0xb8ã§ããããã¯ãx86_64ã¢ãŒããã¯ãã£ã®çŸåšã®å®å®ããã«ãŒãã«ã«åœãŠã¯ãŸããŸããx86ã§ã¯0xa8ã«ãªããŸãã ç§ãã¡ã¯èªã¿ãŸãïŒ
$ od /boot/vmlinuz-linux --address-radix=x --read-bytes=4 --skip-bytes=0xb8 -t x1c 0000b8 50 45 00 00 PE \0 \0 0000bc
次ã«ã2çªç®ã®ããããŒã®çœ²åã瀺ããŸãã ãæ³åã®ãšãããããã¯Portable Executableãšãããã¬ãŒãºã®ç¥èªã§ãå®è¡å¯èœãã¡ã€ã«å
ã®ãã€ããŒããéå§ãããŸãã
WindowsããŒãããŒããŒã§ããããã®ããããŒã®ãã£ãŒã«ãã®çŽååãæ°ã«ãããUEFIã§ãããããå¿
èŠãšããªãã£ãããããããã®äžéšã¯éçã«ç»é²ãããŸããããéèŠãªãã®ã¯ã«ãŒãã«ã¢ã»ã³ããªäžã«å
¥åãããŸãã å€ãã®ãäžèŠãªããã£ãŒã«ãããã¹ãŠã®çš®é¡ã®ã¿ã€ã ã¹ã¿ã³ããå¶åŸ¡åèšãªã©ã¯ãåã«ãŒãã®ãŸãŸã§ãã åºæ¬çã«ã寞æ³ããªãã»ããããšã³ããªãã€ã³ããªã©ãå
¥åãããŸãããããã£ãŠããã®PEãã¡ã€ã«ã®ååãå®å
šã«æ¡åŒµã§ããŸãã ãã ããåŸæ¥ã®LordPEãŸãã¯PEToolsãŠãŒãã£ãªãã£ã¯ã眲åã«éåžžã«æºè¶³ããŠããããã¡ã€ã«ã«ã€ããŠç¥ã£ãŠããããšããã¹ãŠäŒããŸãã


Windowsã®ãå®éã®ãå®è¡å¯èœãã¡ã€ã«ãšã®äž»ãªéãã¯ããªãã·ã§ã³ã®ããããŒã®ãµãã·ã¹ãã ãã©ã°ã§ããããã¯ãIMAGE_SUBSYSTEM_EFI_APPLICATIONã§èšå®ãããã°ã©ãã£ã«ã«ã®IMAGE_SUBSYSTEM_WINDOWS_GUIãŸãã¯ã·ã³ããªãã¯ïŒã³ã³ãœãŒã«ïŒã¢ããªã±ãŒã·ã§ã³ã®IMAGE_SUBSYSTEM_WINDOWS_CUIã§ã¯ãããŸããã
æ§é
äžè¬ã«ããã¹ãŠã¯éåžžã®PEãã¡ã€ã«ã®å Žåãšåãã§ãã çŸåšãArch Linuxã«ãŒãã«ã®å®å®ããŒãžã§ã³3.11.4ã¯ãªããžããªããã®ãã®ã§ãããsetupããããrelocããããtextãã®3ã€ã®ã»ã¯ã·ã§ã³ãå«ãŸããŠããŸãã
- .setupã»ã¯ã·ã§ã³ã«ã¯ãäºæã¢ãŒãã§ããŒãããå Žåã®åæåã®ããã®äž»ã«ã¬ã¬ã·ãŒã³ãŒããå«ãŸããŠããŸãã ããã»ããµã®ãã¹ãŠã®ã¹ã€ããã³ã°ã¢ãŒãã§ããUEFIã¢ãŒãã«ããŒãããå Žåãåæåæåã¯ãã¡ãŒã ãŠã§ã¢ã«ãã£ãŠè¡ãããŸãã
- ããŒããŒã«ã¯.relocã»ã¯ã·ã§ã³ãå¿
ãå¿
èŠã§ãããããã«ãŒãã«ãæ§ç¯ãããšãã«ç©ºã®ãã€ãŸããã¹ã¿ããäœæãããŸãã
- å®éãæãè峿·±ã.codeã»ã¯ã·ã§ã³ã«ã¯ãEntryPointãšæ®ãã®ã«ãŒãã«ã®ã¡ã€ã³ã³ãŒããå«ãŸããŠããŸãã EFIã¢ããªã±ãŒã·ã§ã³ãèŠã€ãã£ãåŸãããŒããŒã¯LoadImageããŒããµãŒãã¹ãå®è¡ããããã«ããã€ã¡ãŒãžå
šäœãã¡ã¢ãªã«ããŒãããŸãã åžžé§ã®ã¿ã€ãã¯ããµãã·ã¹ãã ãã£ãŒã«ãã«ãã£ãŠç°ãªããŸããEFI_APPLICATIONã¯ãæ©èœãããšãã«ã¢ã³ããŒããããŸãã EFI_DRIVERã¯ã¢ã³ããŒãå¯èœã§ãããé倧ãªãšã©ãŒãçºçããå Žåã«ã®ã¿ã¢ã³ããŒããããŸãã æ¬¡ã«ãå¶åŸ¡ã¯ãšã³ããªãã€ã³ãã«è»¢éãããŸããéåžžã¯ãefi_mainïŒïŒé¢æ°ã§ããCã®mainïŒïŒã«é¡äŒŒããŠããŸãã
å®éãæåã¯ã«ãŒãã«ãexeãã¡ã€ã«ãšåŒãã§ããŸããã å®éãããã¯PE32 +圢åŒã䜿çšããåçŽãªEFIã¢ããªã±ãŒã·ã§ã³ã§ãã
åºæ¬çãªèŠä»¶

ãŸããEFIã¢ãŒãããŒãã¢ãŒããã¢ã¯ãã£ãã«ããå¿
èŠããããŸãã ã¢ã€ãã ã¯ãã³ããŒãèããããã«åŒã³åºãããšãã§ããéåžžã¯[ããŒããªãã·ã§ã³]ã¿ãã«ãããŸãã ã¬ã¬ã·ãŒã¢ãŒããCSMïŒäºææ§ãµããŒãã¢ãŒãïŒããŸãã¯åã«BOISã¢ãŒãã®ãããªãã®ãããå Žåã¯ãåæ§ã®ïŒUïŒEFIã¢ãŒããæ¡åŒµã¢ãŒãããŸãã¯è©³çްã¢ãŒãã«å€æŽããŸãã
ãã¶ãŒããŒãã«ãWindows 8 ReadyïŒããšããããŽãããå Žåãã»ãšãã©ã®å ŽåãEFIããŒãã¢ãŒãã¯ããã©ã«ãã§ãã§ã«ã¢ã¯ãã£ãã«ãªã£ãŠããŸãã
ã»ãšãã©ã®å ŽåãLinuxã«ãŒãã«ãEFIã¢ãŒãã§èµ·åããã«ã¯ãã»ãã¥ã¢ããŒããªãã·ã§ã³ãç¡å¹ã«ããå¿
èŠããããŸãã
ãã£ã¹ã¯ã¬ã€ã¢ãŠã
å€ãã®ãœãŒã¹ã¯ã
MBRã§ã¯ãªã
GPTããŒãã£ã·ã§ã³ãå¿
èŠã§ããããšã瀺ããŠããŸãããããã§ã¯ãããŸããã UEFIã¯MBRã«å¯Ÿå¿ããŠããŸãã å¥ã®ããšãããšãã°ãWindowsã¯åŒ·å¶çã«ãã£ã¹ã¯ã匷å¶çã«EFIã¢ãŒãã§èµ·åããæ°ããæ¹æ³ã§ãã¬ãŒã¯ãããã¹ã¿ãŒããŒãã¬ã³ãŒãã®å€ããèªããŸãã ãããŠåœç¶ïŒ ãã£ã¹ã¯ã«ææ°ã®ããŒã¯ãä»ããŠãããšãäœã倱ãããšã¯ãªããåã€ã ãã§ãã
第äžã«ããã¹ãŠã®çš®é¡ã®ãã©ã€ããª/è«çããŒãã£ã·ã§ã³ããããã«è¡ããª-ããã«è¡ãããªã©ã®åºæ¬çãªåé¡ã¯ãããŸããã
第äºã«ãSolidStateãã£ã¹ã¯ã¯å€§éã«é²ãã§ããŸããããã®ããªã¥ãŒã ã¯ãã»ã©é©ãããšã§ã¯ãããŸããããæ°ãã©ãã€ãã®éåžžã®ãã¿ãŒã³ããŒãã«ãã®ãµã€ãºã¯èª°ãé©ããªãã§ãããã ãã ããMBRã§ã¯ãæå€§çŽ2TBã®ããŒãã£ã·ã§ã³ãããŒã¯ã¢ããã§ããŸãã äžæ¹ãGPT
ã¯å€ãã®ããšãèŠ
ãŠããŸããæ°ãæå®ããããšããã§ããŸããããã®ãããªãµã€ãºã®ãã£ã¹ã¯ã¯æ¯èŒçããã«ã¯è¡šç€ºãããŸããã
ããã«ããã£ã¹ã¯ã®æåãšæåŸã§GPTã¬ã³ãŒããè€è£œãããæŽåæ§ãã§ãã¯ãµã ãªã©ãããããçš®é¡ã®ããŒãã¹ã远å ããããšã§ãGPTçšã®ãã£ã¹ã¯ãæå®ããããšãããããããšãªãæã¿ãå ããããšãã§ããŸãã
GNU / Linuxã®ããŸããŸãªãŠãŒãã£ãªãã£ã䜿çšããŠãã£ã¹ã¯ãããŒãã£ã·ã§ã³åå²ããæ¹æ³ã«é¢ããèšäºã¯ãããããããŸãã
å¥ã®ã»ã¯ã·ã§ã³
ã»ã¯ã·ã§ã³ã¿ã€ã
nn-tat幎ã«ãããæšæºã®éçºã®åŸããšã³ãžãã¢ã¯ããŒãã³ãŒãã¯è¯ããªããšå€æããŸããã ããŒãããŒãã£ã·ã§ã³ãã©ãã«ãããã¯åé¡ã§ã¯ãããŸãããUEFIããŒãããŒããŒã¯ãããéåžžã«ç°¡åã«å®è¡ããŸãããã¹ãŠã®ããŒãã£ã·ã§ã³ãšãã£ã¹ã¯ãé çªã«èª¿ã¹ã1ã€ã®ç¹å¥ãªããŒãã£ã·ã§ã³ãæ¢ããŸãã ãã®ç¹ç°æ§ã¯ãMBRããŒã¯ã¢ããã®å Žåãã³ãŒãã0xEFïŒEFIããæšæž¬ãããããã«ïŒã®åãæã£ãŠãããšããäºå®ã«ãããŸãã GPTããŒã¯ã¢ããã®å Žåã
GUIDã
C12A7328-F81F-11D2-BA4B-00A0C93EC93Bã«çããã»ã¯ã·ã§ã³ ã
ããã«ã¯ããã€ãã®æé»ããããŸãã ããšãã°ãpartedãªã©ã®ãã¹ãŠã®ããŒã¯ã¢ãããŠãŒãã£ãªãã£ã«ã¯ãããŒãã£ã·ã§ã³ã«é©çšããããããŒãããã©ã°ãèšå®ããã³è¡šç€ºããæ©èœããããŸãã ãããã£ãŠãMBRã®å Žåããã®ãããªå¯èœæ§ã¯å®éã«ååšããŸããã€ãŸããããŒãã£ã·ã§ã³ããããŒãå¯èœãã§ããããšãBIOSã«ç€ºãå®éã®ãã€ãããããŸãã ãã®ãã©ã°ã¯ãMBRãããŠã³ããŒãããBIOSã«ãã£ãŒãããããŒãã£ã·ã§ã³ã«é
眮ã§ããŸãã ããããGPTãæ±ã£ãŠãããšãã«ã¯ãæ¬åœã«ãã©ã°ã¯ãããŸããïŒ ãã®ãã©ã°ã«ããââãpartedã¯äžèšãšçããGUIDã®ã¿ãæå³ããŸãã ã€ãŸããå®éã«ã¯GPTããŒããã©ã°= GPT EFIããŒãã£ã·ã§ã³ã§ãïŒ
gdiskã¯ããã«æ©ãŸãããŸããïŒ
çµè«ïŒ EFIããŒãã£ã·ã§ã³ãMBRäžã«ããå ŽåãããŒãã£ã·ã§ã³ã¿ã€ããEFIããŒãã£ã·ã§ã³
ãšããŒããã©ã°ã«èšå®ããŸãã GPTãEFIããŒãã£ã·ã§ã³ã¿ã€ã
ãŸãã¯ããŒããã©ã°ã®å Žåããããã¯åããã®ã§ãã
ä¿è·çãªMBRã«ã€ã³ã¹ããŒã«ãããGPTã¬ã¬ã·ãŒããŒããã©ã°ãªã©ãããããçš®é¡ã®ãã®ããããŸããããããã¯ãã¹ãŠäºæã¢ãŒãã§ã®ã¿äœ¿çšãããæŸèæã§ãã GPTã¢ãŒãã§ã¯ãUEFIããŒãã¯ç¡èŠããå¿
èŠããããŸãã
ãã¡ã€ã«ã·ã¹ãã
ãœãŒã¹ãç°ãªããšãæžã蟌ã¿ãç°ãªããŸãã 誰ããFAT16ã䜿çšã§ãããšèšãã誰ããFAT12ã§ãæšå¥šããŠããŸãã ããããå
¬åŒä»æ§ã®ã¢ããã€ã¹ã«åŸãã»ããããã®ã§ã¯ãªãã§ããããïŒ ãããŠãã·ã¹ãã ããŒãã£ã·ã§ã³ã¯FAT32ã«ããå¿
èŠããããšåœŒå¥³ã¯èšããŸãã ãªã ãŒããã«ã¡ãã£ã¢ïŒUSB HDDãUSBãã©ãã·ã¥ïŒã®å Žå-FAT32ã«å ããŠFAT12 / FAT16ã
ããŒãã£ã·ã§ã³ã®ãµã€ãºã«ã€ããŠã¯äœãèšãããŠããŸããã ãã ããããŒãããŒããŒãšãã¡ãŒã ãŠã§ã¢ã®åæã®æŸèæãšãã°ã®å®è£
ã«ãããããŸããŸãªãé©ãããåé¿ããããã«
ãå°ãªããšã520MiBïŒ546MBïŒã®ãµã€ãº
ãæšå¥šãããããšãå®éšçã«å€æããŸããã ããã§ã¯ãéãè¯ããã°ã32 MBã®ããŒãã£ã·ã§ã³ã«åé¡ã¯ãªããããããŸããã
ãã£ã¬ã¯ããªæ§é
ããŒããŒã¯ãã©ãã«ä»ããããŒãã£ã·ã§ã³ãèŠã€ããŠãã¡ã€ã«ã·ã¹ãã ããµããŒãããŠããããšã確èªããåŸãããŒãã£ã·ã§ã³ã®ã«ãŒããåºæºã«ãããã¹ã§ãã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®è¡ãå§ããŸãã ããã«ããã®ã»ã¯ã·ã§ã³ã®ãã¹ãŠã®ãã¡ã€ã«ã¯
\ EFI \ãã£ã¬ã¯ããªã«ããå¿
èŠããããŸãããã®ãã£ã¬ã¯ããªã¯ãã»ã¯ã·ã§ã³ã®ã«ãŒãã«ããå¯äžã®ãã¡ã€ã«ã§ãã æ
£äŸã«ãããåãã³ããŒã¯äžæã®ååã®ãã©ã«ããŒãéžæãã\ EFI \ã«é
眮ããããšããå§ãããŸããäŸïŒ
\ EFI \ redhat \ ã
\ EFI \ microsoft \ ã
\ EFI \ archlinux \ ã ãã³ããŒã®ãã£ã¬ã¯ããªã«ã¯ãçŽæ¥å®è¡å¯èœãªefiã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠããŸãã ã¢ãŒããã¯ãã£ããšã«1ã€ã®ãã¡ã€ã«ããå§ãããŸãã ãã¡ã€ã«ã«ã¯æ¡åŒµå
.efiãå¿
èŠã§ãã
ãªã ãŒããã«ããã€ã¹ã®å Žåã
\ EFI \ BOOT \ãã£ã¬ã¯ããªã察象ã§ãã ãŸããã¢ãŒããã¯ãã£ããšã«1ã€ã®ãã¡ã€ã«ã®ã¿ãæšå¥šããŸãã ããã«å ããŠããã¡ã€ã«ã¯
boot {arch} .efiãšåŒã°ããã¹ãã§ãã ããšãã°ã
\ EFI \ BOOT \ bootx64.efiã§ãã å©çšå¯èœãªã¢ãŒããã¯ãã£ïŒ
ia32ãx64ãia64ãarmãaa64 ã
NVRAMã¢ã¯ã»ã¹
ããã©ã«ãã§ã¯ãäžæ®çºæ§UEFIã¡ã¢ãªã«äœãæžã蟌ãŸããªãå Žåã
\ EFI \ BOOT \ bootx64.efiãããŒããããŸãã
NVRAMã«å¿
èŠãªã¢ããªã±ãŒã·ã§ã³ãžã®ãã¹ãæžã蟌ãã«ã¯ãefibootmgrãŠãŒãã£ãªãã£ã䜿çšã§ããŸãã çŸåšã®ãšã³ããªã衚瀺ããŠã¿ãŸãããã
äžéšã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããã®ãŠãŒãã£ãªãã£ãæ©èœããããã«å«ãŸããã«ãŒãã«ãªãã·ã§ã³CONFIG_EFI_VARSãå¿
èŠã§ãã
éãã

ãã®ããã
550 MiB FAT32 EFIã·ã¹ãã ããŒãã£ã·ã§ã³ïŒESPïŒãããŒã¯ããŸããã ãŸãã¯ã2çªç®ã®ã·ã¹ãã ãåããWindowsãããããã§ã«èªåã§äœæããŠããŸãã 確ãã«ã圌女ã¯éåžžãçŽ100MBã®ãµã€ãºã§äœæããŸãããå人çã«ã¯ãåé¡ã¯äžåºŠããããŸããã
EFIããŒãSTUBããµããŒãããã«ãŒãã«ã/ bootã«æ¢ã«ãããŸãã
確èªããã«ãŒãã«ã®æ§ç¯æã«ãªãã·ã§ã³ãæå¹ã«ãªã£ãŠãããã©ããã確èªããã«ã¯ã次ãå®è¡ããŸãã
$ zgrep CONFIG_EFI_STUB /proc/config.gz
ã©ã¡ãã
$ zgrep CONFIG_EFI_STUB /boot/config-`uname -r`
CONFIG_EFI_STUB = yã¯ããªãã·ã§ã³ãã¢ã¯ãã£ãã§ããããšãæå³ããŸãã
次ã«ãããã€ãã®ã·ããªãªããããŸãã
- æåã«å
容ãã³ããŒããããšã«ããã mount --bindãä»ããŠESP \ {vendor} \ on / bootãããŠã³ãã§ã ãŸã ã
äŸå€ãã®ã¢ã€ãã ã¯ã / bootãã£ã¬ã¯ããªã«ã·ã³ããªãã¯ãªã³ã¯ãå«ãŸãªããã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã®ã¿é©ããŠããŸã ã ããšãã°ãã«ãŒãã«èªäœãå«ãããã€ãã®ãªã³ã¯ãå«ãŸããŠãããããopenSUSEã«ããŠã³ãããããšã¯ã§ããŸããã
- ãŸãã¯ãã«ãŒãã«ãæŽæ°ãããšãã«ãæ¯åãã«ãŒãã«ãšRAMãã£ã¹ã¯ãESP \ {vendor} \ã«ã³ããŒããŸã
- EFIãã©ã€ããŒã䜿çšããŠ/ããŒããã¡ã€ã«ã·ã¹ãã ãèªã¿åã£ãŠçŽæ¥ããŒãããã«ãŒãã«ã«æ¡åŒµåã.efiãã远å ããã ãã§æžã¿ãŸãïŒããŒããªã³ã¯ã®æ¹åïŒã
ããã§ãããŒããã€ã³ããäœããã®æ¹æ³ã§NVRAM UEFIã«è¿œå ããå¿
èŠããããŸãã ããã§ããå€ãã®ãªãã·ã§ã³ããããŸãã
ããŒãããŒããŒGRUB2ãrEFIndãªã©ã䜿çšããŠæ¢ã«EFIã¢ãŒãã§ããŒããããŠããå ŽåïŒefibootmgr -vã¯èªããŸããïŒããã¹ãŠæ£åžžã§ãïŒ
- ã«ãŒãã«ãã©ã¡ãŒã¿ãŒãéä¿¡ã§ããefibootmgrã䜿çšããŸãã
- efibootmgrãèµ·åãããã UEFI Shellã䜿çšã§ããŸããããã¯ãã³ã¢ãšåæ§ã«EFIã¢ããªã±ãŒã·ã§ã³ã§ãã 圌ã®bcfgã³ãã³ãã䜿çšããŠãããŒããã€ã³ããç·šéã§ããŸãã
- ãã®ãããªãªãã·ã§ã³ããããããããŸããïŒefibootmgrã¯ãã©ã¡ãŒã¿ãŒã远å ããããšãèªããŸããããã¯ããã¡ãŒã ãŠã§ã¢ããããã®æžã蟌ã¿ããµããŒãããŠããªãããšãæå³ããŸãïŒãŸãã¯åã«æ²ç·ã§ããå¯èœæ§ãé«ãïŒã ååã®èšäºã§ãã³ã¡ã³ãã¯efi_no_storage_paranoiaã«ãŒãã«ãã©ã¡ãŒã¿ãŒã«èšåããŠããŸãã ã ãã ãããã¡ãŒã ãŠã§ã¢ã仿§ã«åŸã£ãŠå®å
šã«å®è£
ãããŠããããšã確å®ãªå Žåã«ã®ã¿äœ¿çšã§ããŸãã éçºè
ã¯ããã³ããŒãå®è£
äžã«æŸèæãšééã远å ããå Žåããã¶ãŒããŒãã®ä»£ããã«ã¬ã³ã¬ãå®çŸããå¯èœæ§ã¯äœããšèŠåããŠããŸãã
- UEFIã·ã§ã«ããèµ·åããããšãã§ããŸãã ç®çã®ã³ãã³ãã©ã€ã³ã§ã«ãŒãã«ããŒãã³ãã³ãã瀺ãstartup.nsh ã¹ã¯ãªãããäœæãããŸãã ãããŠãã·ã§ã«ãããŠã³ããŒããã€ã³ããšããŠè¿œå ãããŸãã
- å¥ã®åé¡ããããŸãã1ã€ã®ã«ãŒãã«ãã¹ã«å¯ŸããŠã®ã¿ã¢ã€ãã ã远å ã§ããŸãããRAMãã£ã¹ã¯ã¯è¡šç€ºãããŸããã ã»ãšãã©ã®èšäºã§ã¯ãçµã¿èŸŒã¿ã®initrdã䜿çšããŠã«ãŒãã«ãåæ§ç¯ããããšãæšå¥šããŠããŸãã ãããã«ãŒãã«ã®åé¡ãªã®ããããŒãããŒããŒãªã®ãã¯ããããŸããã ããããçŸæç¹ã§ã¯ã90ïŒ
ã®ã±ãŒã¹ã§ãã¹ãŠããµããŒããããŠãããã«ãŒãã«ãåæ§ç¯ããå¿
èŠã¯ãããŸããã
ãšã©ãŒã®èããããåå ã«ãŒãã«ã«RAMãã£ã¹ã¯ãåã蟌ãããã®æšå¥šäºé
ã¯ã倧æµããããžã®ãã¹ã誀ã£ãŠæå®ããããã«è¡ãããŸããã EFI Boot Stubã®åæã®å®è£
ã§ã¯ãã«ãŒãã«ã¯RAMãã£ã¹ã¯ãžã®ééã£ããã¹ã«é¢ãããšã©ãŒãåãåºããŸããã§ããããéãã«ããŒããæåŠããŸããã ãããã£ãŠãã©ãããã誰ããã«ãŒãã«ã«å€§éã«å°å
¥ãå§ãããµããŒããããŠããªããšå€æããŸããã ã«ãŒãã«ã«ããŒãã¹ã¿ãæ©èœãç»å ŽããŠä»¥æ¥ãinitrdãã©ã¡ãŒã¿ãŒã®ãµããŒãã¯ååšããŠããŸããã
éèŠïŒRAMãã£ã¹ã¯ãžã®ãã¹ã¯ã ããã¯ã¹ã©ãã·ã¥ã\ããä»ããŠçµ¶å¯Ÿã«è»¢éãããŸãããçŽæ¥ã§ã¯ãããŸããïŒ ããšãã°ã initrd = \ EFI \ archlinux \ initramfs-linux.imgã
ã¢ããã¹ãã®äŸå€å®éã3.8.0-rc5ãããé«ãããŒãžã§ã³ã®ã«ãŒãã«ã§ã¯ããã©ã¯ãŒãã¹ã©ãã·ã¥ãšããã¯ã¹ã©ãã·ã¥ã®éãã¯èŠãããŸãããããããæ©èœããŸãã ããããããŒãžã§ã³3.2.0-rc5ã®ããŒãã¹ã¿ãæ©èœã®ç»å Žä»¥æ¥ãã«ãŒãã«ã¯åã«ã¹ã©ãã·ã¥ã§èšé²ããããã¹ãèªèããããšã©ãŒãªãã§ããŒãããããšãéãã«æåŠããŸããã ããã«é¢ãããšã©ãŒã宣èªããããŒãžã§ã³3.4.0ã§åŠç¿ããŸããã
EFIããŒãã¢ãŒãã«ã€ããŠç¥ããããŒããã€ã³ãã远å ããããã«åãæ¿ãããå Žåã¯ã
æ¢ã«ãã®ã¢ãŒãã§ããå¿
èŠããããŸãããããããäºæã¢ãŒãã®ãŸãŸã§ããäž»ãªè§£æ±ºçã¯2ã€ãããŸãã
- EFIããŒãããµããŒãããæåã®ã©ã€ãCDãããŠã³ããŒãããŸãã ãããŠããããããã§ã«efibootmgrã³ãã³ãã䜿çšããŸãã
- UEFIã·ã§ã«ãããŠã³ããŒãããŸãã ãããããã«ãŒãã«ãšRAMãã£ã¹ã¯ãæå®ããã ãã§EFIã¢ãŒãã§èµ·åããèµ·åãã€ã³ããç·šéã§ããŸãã
ããŒãããŒããŒãªãã®ãã¥ã¢ã«ããŒã
2ã€ã®ã·ã¹ãã ãåæã«ã€ã³ã¹ããŒã«ãããŠããŠããµãŒãããŒãã£ã®ããŒãããŒããŒãã€ã³ã¹ããŒã«ããããªãå Žåã¯ãäž¡æ¹ãUEFIããŒããã€ã³ãã«è¿œå ããŠãåžæããããŒãé åºã調æŽã§ããŸãã WindowsããŒãããŒããŒã¯éåžžã
\ EFI \ Microsoft \ BOOT \ bootmgfw.efiã«ãããŸã ã
åèš
ãã¹ãŠãæ£åžžã«å®äºããããåèµ·åããããŒãã¡ãã¥ãŒãåŒã³åºãã远å ããé
ç®ãéžæããŠãã»ãŒç¬æã®ããŒãã確èªããŸãã SSDãFastBootãReadaheadãããã³Arch Linuxã®å Žå-çŽ3ã4ç§ã EFI Boot STUBã䜿çšãããµãŒãããŒãã£ã®ããŒãããŒããŒãªãã§ã1幎åããããŒã ãµãŒããŒãèªã¿èŸŒãŸããŠããŸãã
ãã¡ãããããã§ã®é床ã®åäžã¯ãããã§ããã
Roderick Smithã®ãããªç¥èã®ããäººãæžããŠããããã«ãEFIããŒãã¢ãŒãã§ã¯äºæã¢ãŒãããããããé©åãªãæ©åšã®åæåãè¡ãããããšããããŸãã
ãããã«
UEFIãã¡ãŒã ãŠã§ã¢ã®çžå¯Ÿçãªæ¹¿æ°ãšå®å
šã«ç°ãªãå®è£
ã®ããã«ãã³ãŒãäŸã瀺ããŸããã§ããã ãããã®å Žåããåé¡ãããå¯èœæ§ããããŸãã ç§ã説æããããšããäžè¬ååãçè§£ããç§ã®äºäŸã«åœãŠã¯ãŸãããšãé¡ã£ãŠããŸãã
ãŸãããã¶ãŒããŒã補é å
ã®Webãµã€ãããUEFIã®ææ°ããŒãžã§ã³ããã©ãã·ã¥ããããšããå§ãããŸãã
æåŠ
UEFIå
¬åŒä»æ§Roderick W. Smithã®WebããŒãžã¯ãEFIãããŒãããŒããŒãããã³ãã£ã¹ã¯ããŒãã£ã·ã§ã³ã«é¢é£ããå€ãã®ãŠãŒãã£ãªãã£ã®èè
ã®äœåã§ãã
ArchWikiïŒUEFIããŒãããŒã㌠-倿ŽãããŠãããããã£ã¹ããªãã¥ãŒã·ã§ã³ã®1ã€ã§æãå®å
šã§æãå®å
šãªGNU / Linux wikiã®1ã€ã
å
¬åŒPE / COFF仿§