![UEFI TuxããŽ](https://habrastorage.org/getpro/habr/post_images/05f/fbd/07e/05ffbd07ef263e029c186751e3b89ac5.png)
ã¯ããã«
æè¿ã®èšäºã ããŒãããŒããŒã䜿çšããã«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ãŠãŒãã£ãªãã£ã¯ã眲åã«éåžžã«æºè¶³ããŠããããã¡ã€ã«ã«ã€ããŠç¥ã£ãŠããããšããã¹ãŠäŒããŸãã
![PEãªãã·ã³ãã³ãããŒ](https://habrastorage.org/getpro/habr/post_images/bd9/7ba/f46/bd97baf469786eea5159754c5a0c75de.png)
![ç»å](https://habrastorage.org/getpro/habr/post_images/897/f17/611/897f17611adf49c446413ab4aa7af058.png)
æ§é
äžè¬ã«ããã¹ãŠã¯éåžžã®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ã¢ããªã±ãŒã·ã§ã³ã§ãã
åºæ¬çãªèŠä»¶
![ç»å](https://habrastorage.org/getpro/habr/post_images/8e2/6c9/d7a/8e26c9d7ae886e24b968aa3dfff32fd0.jpg)
ãã¶ãŒããŒãã«ã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ã¯ããã«æ©ãŸãããŸããïŒ
# parted /dev/sda -l : ATA ST3750330AS (scsi) /dev/sda: 750GB (./.): 512B/512B : gpt Disk Flags: 1 1049kB 135MB 134MB fat32 EFI System 2 135MB 269MB 134MB ext2 Linux filesystem 3 269MB 8859MB 8590MB linux-swap(v1) Linux swap 4 8859MB 30,3GB 21,5GB ext4 Linux filesystem 5 30,3GB 46,4GB 16,1GB ext4 Linux filesystem 6 46,4GB 67,9GB 21,5GB ext4 Linux filesystem 7 67,9GB 750GB 682GB xfs Linux filesystem
gdisk
# gdisk /dev/sda -l GPT fdisk (gdisk) version 0.8.7 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sda: 1465149168 sectors, 698.6 GiB Logical sector size: 512 bytes Disk identifier (GUID): 02D11900-D331-4114-A3D7-8493969EF533 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 1465149134 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 264191 128.0 MiB EF00 EFI System 2 264192 526335 128.0 MiB 8300 Linux filesystem 3 526336 17303551 8.0 GiB 8200 Linux swap 4 17303552 59246591 20.0 GiB 8300 Linux filesystem 5 59246592 90703871 15.0 GiB 8300 Linux filesystem 6 90703872 132646911 20.0 GiB 8300 Linux filesystem 7 132646912 1465149134 635.4 GiB 8300 Linux filesystem
çµè«ïŒ 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ãŠãŒãã£ãªãã£ã䜿çšã§ããŸãã çŸåšã®ãšã³ããªã衚瀺ããŠã¿ãŸãããã
# efibootmgr -v
äžéšã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããã®ãŠãŒãã£ãªãã£ãæ©èœããããã«å«ãŸããã«ãŒãã«ãªãã·ã§ã³CONFIG_EFI_VARSãå¿ èŠã§ãã
éãã
![ç»å](https://habrastorage.org/getpro/habr/post_images/2ec/5ea/f83/2ec5eaf834a57abdfb4e25f367543111.png)
EFIããŒãSTUBããµããŒãããã«ãŒãã«ã/ bootã«æ¢ã«ãããŸãã
確èªãã
ã«ãŒãã«ã®æ§ç¯æã«ãªãã·ã§ã³ãæå¹ã«ãªã£ãŠãããã©ããã確èªããã«ã¯ã次ãå®è¡ããŸãã
CONFIG_EFI_STUB = yã¯ããªãã·ã§ã³ãã¢ã¯ãã£ãã§ããããšãæå³ããŸãã
ã©ã¡ãã$ 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ããŒãããµããŒãããæåã®ã©ã€ã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ä»æ§