ã¯ããã«
èšäºã®ãã®éšåã§ã¯ãããŒãžã§ã³2ã®ãã¡ã€ã«åœ¢åŒã«ã€ããŠèª¬æããŸãã æ¢åã®ãã¹ãŠã®BIOSã§äœ¿çšãããŸãã PIèŠæ Œã®ææ°ããŒãžã§ã³ã§ã¯ãããŒãžã§ã³3ã®åœ¢åŒã®èª¬æãè¿œå ãããŸãããã16 MBãè¶ ãããã¡ã€ã«ã«ã¯ãŸã å¿ èŠã§ããGigabyteã¯Z87ããŒãã§ãã§ã«ãã®ç¹ã«è¿ã¥ããŠããŸããããŸã ããŒãã«ã¯ãããŸããã ææ°ã®ãã¹ãŠã®Intelãã¶ãŒããŒãã®èšè¿°åé åã¯ã16 MB以äžã®å®¹éã§2ããã以äžããµããŒãããŠãããããããŒãžã§ã³3ãã©ãŒãããã®äœ¿çšã¯ãå°ãªããšãIntelãããã»ããã®æ¬¡äžä»£ã®å€æŽãŸã§å»¶æãããŸãã
äŸãšããŠãZotac Z77-ITX WiFiã®ãã¡ã€ã«ããŒãžã§ã³229ããBIOSé åãååŸããŸãã
次ã®ããã°ã©ã ãå¿ èŠã«ãªããŸãã
- ããªãã®å¥œã¿ã«åãããŠ16é²ãšãã£ã¿ãç§ã¯HxDã䜿çšããŸã
- ãŠãŒãã£ãªãã£PhoenixToolv2.xxãMDL ãã©ãŒã©ã ã®ãããã¯ããããŠã³ããŒãã§ããŸãã
ãã¡ãŒã ãŠã§ã¢é³é
ãã¡ãŒã ãŠã§ã¢ããªã¥ãŒã ã®æ§é ãšPI FFS圢åŒã«ã€ããŠã¯ãUEFIãã©ãããã©ãŒã åæåããã¥ã¡ã³ãã®ããªã¥ãŒã 3ã§èª¬æãããŠããŸãã
ãã¡ãŒã ãŠã§ã¢ããªã¥ãŒã ã¯ã次ã®å±æ§ãæã€ãã©ãã·ã¥ã³ã³ãã³ãã®è«çè¡šçŸã§ãã
- ååïŒFVãšãã®ãã¹ãŠã®éšåã®ååã¯GUIDã§ã
- ãµã€ãºïŒãã¹ãŠã®ããŒã¿ãããããŒãããã³ç©ºãé åãå«ãŸããŸã
- 圢åŒïŒFVå ã®ãã¡ã€ã«ã·ã¹ãã ã¿ã€ããç°ãªãã¿ã€ãã«ã¯ç°ãªãGUIDããããŸã
- AllignmentïŒFVã®æåã®ãã€ãã¯ãæå®ãããå¢çïŒæ¬¡æ°2ã®åæ°ïŒã«äœçœ®åãããããå¿
èŠããããŸã
EFI_FVB_WEAK_ALIGNMENT
ã®äœçœ®åããã¯ãããããŒã«EFI_FVB_WEAK_ALIGNMENT
ãã©ã°ãèšå®ãããŠããªãéãããã®äžã®ãã¹ãŠã®ãã¡ã€ã«ã®äœçœ®åããããã匱ãã¯ãªããŸããã ãã®å Žåã2ã®çŽ¯ä¹ã§ã¢ã©ã€ã¡ã³ããå®è¡ã§ããŸããããã®FVã¯ç§»åã§ããªããªããŸã - èªã¿åããæžã蟌ã¿ä¿è·ãèªå·±ç¡å¹åèªã¿åããŸãã¯æžã蟌ã¿ä¿è·ã®å±æ§
- OEMã®è£éãªãã·ã§ã³
FVå ã§äœ¿çšããããã¡ã€ã«ã·ã¹ãã ã«é¢ä¿ãªããFVããããŒã¯æšæºåããã次ã®ããã«ãªããŸãã
typedef struct { UINT8 ZeroVector[16]; UINT8 FileSystemGuid[16]; UINT64 FvLength; UINT32 Signature; UINT32 Attributes; UINT16 HeaderLength; UINT16 Checksum; UINT16 ExtHeaderOffset; UINT8 Reserved[1]; UINT8 Revision; EFI_FV_BLOCK_MAP BlockMap[]; } EFI_FIRMWARE_VOLUME_HEADER; typedef struct { UINT32 NumBlocks; UINT32 Length; } EFI_FV_BLOCK_MAP
ZeroVector ïŒFVã®å é ã§ã¯ããªã»ãããã¯ãã«ããŒãã¢ãã¬ã¹ã«ããããã»ããµãšã®äºææ§ã®ããã«16ãã€ããäºçŽãããŠããŸãã ãã®ãããã¯ã«ãŒã以å€ã®äœããååšããããšã§ãããŒããã¡ãŒã ãŠã§ã¢ããªã¥ãŒã ãä»ã®ããªã¥ãŒã ãšééããªãåºå¥ã§ããŸãã
FileSystemGuid ïŒãã®FVå ã§äœ¿çšããããã¡ã€ã«ã·ã¹ãã ãå®çŸ©ããŸãã
FvLength ïŒãã¹ãŠã®ããããŒã®FVãµã€ãºã
眲å ïŒFVã®æ€çŽ¢ã«äœ¿çšãããæšæºã§ã¯åžžã«0x4856465Fã§ãã
{'_','F','V','H'}
ã
å±æ§ ïŒäžèšã§èª¬æããã®ãšåãå±æ§ã ããã«ã¯ãããããããŸãããç§ãã¡ã«ãšã£ãŠæãéèŠãªã®ã¯åè¿°ã®
EFI_FVB_WEAK_ALIGNMENT
ãããã¯ãFVãã€ã³ã¹ããŒã«ãããŠããå Žåã
EFI_FVB_ALIGNMENT
ãã
EFI_FVB_ALIGNMENT_1
ãã
EFI_FVB_ALIGNMENT_2G
ããã³
EFI_FVB_ERASE_POLARITY
ã®ã»ããã®1ã€ã§ãã æ®ãã¯ãã¡ã¢ãªé åãšããŠFVã§åäœããã³ãŒãã«å¿ èŠã§ãããç§ãã¡ã«ãšã£ãŠã¯åœ¹ã«ç«ããªãã®ã§ããããããªã¹ãããŸããã
HeaderLength ïŒæ¡åŒµããããŒãé€ãããããŒã®ãµã€ãºãçŽä»¥äžã
ãã§ãã¯ãµã ïŒ16ãããããããŒãã§ãã¯ãµã ã æ£ããããããŒã®åèšã¯0x0000ã«ãªããŸãã
ExtHeaderOffset ïŒæ¡åŒµããããŒã®å é ã®ãªãã»ããã èšè¿°ãããFVã®GUIDãGUIDãšãšãã«OEMãã¡ã€ã«ã¿ã€ãã®ãªã¹ããããã³é»å眲åãå«ããããšãã§ããŸãã çŸæç¹ã§ã¯ãæ¡åŒµããããŒãåã蟌ãŸããåäžã®FVã¯èŠãããšããããŸããããã®ãããèæ ®ããŸããã FVã«è¿œå ã®ããããŒããªãå Žåããã®ãã£ãŒã«ãã«ã¯0x0000ããããŸãã
äºçŽæžã¿ïŒäºçŽæžã¿ãã£ãŒã«ããåžžã«0x00ã
ãªããžã§ã³ ïŒPIæšæºã§ã¯ã1ã€ã®ãªããžã§ã³ïŒ2çªç®ã®ãªããžã§ã³ïŒã®æ§é ã®ã¿ãèšè¿°ãããŠããããããã®ãã£ãŒã«ãã¯åžžã«0x02ã§ãã
BlockMap ïŒäž¡æ¹ã®ãã£ãŒã«ãã«ãŒããããåãæ§é ã§çµãã
EFI_FV_BLOCK_MAP
æ§é ã®ãªã¹ããšããŠä¿åããããããã¯ãããã ãªããªã ææ°ã®ãã©ãã·ã¥ãã€ã¯ããµãŒãããã¯ãã¹ãŠåçš®ã§ããïŒã€ãŸããåããµã€ãºã®ãããã¯ãæã£ãŠããïŒããããªã¹ãå šäœã¯éåžž2ã€ã®ãšã³ããªã®ã¿ã§æ§æãããŠããŸãã
äžèšã®ã³ã³ãã©ã€ã¢ã³ã¹ã®äŸã確èªããŸãããã
16é²ãšãã£ã¿ã§BIOSãã¡ã€ã«ãéããBIOSé åã®å é ãŸã§ã®ãªãã»ãã0x500000ã«ç§»åããŸãã

å é ã«16åã®ãŒããããããã¡ã€ã«ã·ã¹ãã GUIDãããããã®FVã®ãµã€ãºã0x020000ã§ããã眲åãé 眮ãããå±æ§ãèšå®ãããããããŒã®ãµã€ãºã0x48ãã€ãã§ããããã§ãã¯ãµã ãèšç®ãããæ¡åŒµããããŒããªããäºçŽãã£ãŒã«ããé 眮ããããã®äžã«ããããšãããããŸãFVã«ã¯ãããã0x1000ã®ãããã¯ã20åãããåèšã§FvLengthãã£ãŒã«ãã«ç€ºããããµã€ãºãæ£ç¢ºã«äžããŸãã
ã»ãšãã©ã®å ŽåãBIOSã«ã¯ããŸããŸãªç®çã®ããã«èšèšãããããã€ãã®ç°ãªãFVããããŸãããããã¯å¿ é ã§ã¯ãªãããã¹ãŠã1ã€ã«ãŸãšããããšãã§ããŸãã UEFI BIOSã®ãã¹ãŠã®ã¡ãŒã«ãŒéã§ã®FVãšãã¡ã€ã«ã®ãã¹ãã®åºŠåãã®ãã£ã³ããªã³ã¯Intelã§ãæ倧12ã¬ãã«ã®ãã¹ãããããŸãã
çè«çã«ã¯ç°ãªããã¡ã€ã«ã·ã¹ãã ãFVã«äœ¿çšã§ããŸãããå®éã«ã¯1ã€ã ãã䜿çšãããŸããPIFFSã«ã€ããŠã¯ããããã説æããŸãã
ãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ã·ã¹ãã
ããã¯ããã£ã¬ã¯ããªãšéå±€ã®ãªããã©ãããã¡ã€ã«ã·ã¹ãã ã§ããããã®ãã¡ã€ã«ã¯ãã¹ãŠhorseãã£ã¬ã¯ããªã«ãããŸãã ãã¡ã€ã«ã®ãªã¹ããååŸããã«ã¯ãFSãæåããæåŸãŸã§å®è¡ããå¿ èŠããããŸãã ãã¹ãŠã®ãã¡ã€ã«ã«ã¯ãæšæºã§å®çŸ©ãããããããŒãå¿ èŠã§ãã ãã¡ã€ã«ã¯ããã¡ã€ã«ã·ã¹ãã ã®å é ãã8ãã€ãã®å¢çç·äžã«é 眮ããå¿ èŠããããŸãã倧ããªå¢çç·äžã«é 眮ããã«ã¯ãç¹å¥ãªãã¡ã€ã«ãã¬ãŒã¹ãã«ããŒãæäŸãããŸãã
ãã®èŠæ Œã§ã¯ãåFVã®æåŸã«ååšããå¿ èŠãããç¹å¥ãªVTFãã¡ã€ã«ã«ã€ããŠã説æããŠããŸãããå®éã«ã¯ãBIOSã€ã¡ãŒãžã®æåŸã®FVã®æåŸã«ã®ã¿ååšãããã®æåŸã®ãã€ãããããå šäœã®æåŸã«ãªãããã«é 眮ãããŠããŸãã SECãã§ãŒãºã«å¿ èŠãªããŒãã¹ãã©ããã³ãŒããå«ãŸããŠããŸãã
ãã¡ã€ã«ããããŒ
FFSãã¡ã€ã«ããããŒã¯æ¬¡ã®ããã«æ§æãããŠããŸãã
typedef struct { UINT8 Name[16]; UINT8 HeaderChecksum; UINT8 DataChecksum; UINT8 Type; UINT8 Attributes; UINT8 Size[3]; UINT8 State; } EFI_FFS_FILE_HEADER;
åå ïŒ ååãšããŠæ©èœãããã¡ã€ã«ã®GUIDã 1ã€ã®FVã«ã以äžã§èª¬æããPADãã¡ã€ã«ã§ãªãå ŽåãåãGUIDãæã€2ã€ã®ãã¡ã€ã«ã¯ååšã§ããŸããã
HeaderChecksum ïŒDataChecksumãã£ãŒã«ããé€ã8ãããã®ããããŒãã§ãã¯ãµã ã æ£ããããããŒã¯ãåèšã§0x00ã«ãªããŸãã
DataChecksum ïŒããããŒãé€ãããã¡ã€ã«ã®å 容ã®8ããããã§ãã¯ãµã ã åžžã«èšç®ããå¿ èŠã¯ãããŸãããã
FFS_ATTRIB_CHECKSUM
å±æ§ã
FFS_ATTRIB_CHECKSUM
å Žåã®ã¿ã§ãããã以å€ã®å Žåããã®ãã£ãŒã«ãã¯
FFS_ATTRIB_CHECKSUM
èšå®ãããŸãã
ã¿ã€ã ïŒãã¡ã€ã«ã¿ã€ãã æšæºã§ã¯ã13ã®æšæºãã¡ã€ã«ã¿ã€ãïŒ0x01-0x0DïŒãOEMãã¡ã€ã«çšã®32ãŠãŒã¶ãŒã¿ã€ãïŒ0xC0-0xDFïŒããããã°çšã®16ãŠãŒã¶ãŒã¿ã€ãïŒ0xE0-0xEFïŒãããã³çŸåšã®ããŒãžã§ã³ã®FFSã«åºæã®16ã¿ã€ãïŒ0xF0-0xFFïŒãå®çŸ©ããŠããŸãçŸåš0xF0ã®ã¿ã䜿çšãããŠããŸã-ãã¬ãŒã¹ãã«ããŒãã¡ã€ã«ã«ã¯
EFI_FV_FILETYPE_FFS_PAD
ã
ãã®ç¹æ®ãã¡ã€ã«ã«ã¯ãnull GUIDãnullå±æ§ãæšæºç¶æ ãããã³ä»»æã®ãµã€ãºãªã©ãä»»æã®ãã®ãå«ããããšãã§ããŸãã æšæºã«ãããšããã¡ã€ã«ã¯ç©ºã§ãªããã°ãªããŸããã ããããŒããããé€ããã¹ãŠã®ãããã
EFI_FVB_ERASE_POLARITY
ã«èšå®ããå¿ èŠããããŸãã ããã¯ãæšæºã®8ãã€ããã倧ããå¢çã«æ²¿ã£ãŠãããã«ç¶ããã¡ã€ã«ãäœçœ®åããããããã«äœ¿çšãããŸãã PADãã¡ã€ã«ã®æå°ãµã€ãºã¯ãããããŒã®ãµã€ãº-24ãã€ãã§ãã
æšæºã®ãã¡ã€ã«ã¿ã€ãã«æ»ããŸãã
å±æ§ ïŒç§ãã¡ã«ãšã£ãŠéèŠãªå±æ§ã¯
FFS_ATTRIB_FIXED
ãããã¯ããã¡ã€ã«ãFVå ã«
FFS_ATTRIB_FIXED
ã§ããªãããšã瀺ããFFS_ATTRIB_DATA_ALIGNMENTã®ã»ããã¯ããã¡ã€ã«ã®ããŒã¿ïŒããããŒã§ã¯ãªãïŒãå¢çã«æŽåããŠããããšã瀺ããŸãã
ãµã€ãº ïŒ24ãããUINTãšããŠä¿åãããããããŒãšå ±ã«ãã¡ã€ã«ãµã€ãºã
ç¶æ ïŒãã¡ã€ã«ã®ç¶æ ã ãã®ãã£ãŒã«ãã¯ãFVãã¡ã¢ãªã«ããŒãããåŸãããã³FVå ã®ãã¡ã€ã«ã®æäœäžã«äœ¿çšãããŸãã BIOSã€ã¡ãŒãžå ã®ãã¹ãŠã®æå¹ãªãã¡ã€ã«ã®ã¹ããŒã¿ã¹ã¯0xF8ã§ãã
ãã¡ã€ã«ã®çš®é¡ã«æ»ããŸãã ãã®èšäºã®1.5éšããŸã èªãã§ããªã人ã¯ããèªãã§èªãããšããå§ãããŸããããããªããš ãäœãç解ã§ããªãå±éºããããŸãã
æ¢ã«ç¥ã£ãŠããããã«ã13ã®æšæºãã¡ã€ã«ã¿ã€ããå®çŸ©ãããŠããŸãã
| | |
---|---|---|
| | ãã®ãããªãã¡ã€ã«ã®æ§é ã¯ããŠãŒã¶ãŒã«ãã£ãŠå®å šã«æ±ºå®ãããäºåã«äœãç¥ãããŠããªã |
| | ãã®ãããªãã¡ã€ã«ã«ã¯ã»ã¯ã·ã§ã³æ§é ããããŸãããã»ã¯ã·ã§ã³ã®å 容ã«ã€ããŠã¯äºåã«äœãããããŸããã |
| | SECãã§ãŒãºã§ã³ãŒããå®è¡ããã»ãã¥ãªãã£ã«ãŒãã« |
| | PEIã³ã¢ãå¥åPEI Foundation |
| | DXEã®ã³ã¢ãå¥åDXE Foundation |
| | PEIã¢ãžã¥ãŒã« |
| | DXEãã©ã€ã㌠|
| | ãã€ããªããPEI / DXEã¢ãžã¥ãŒã« |
| | ã¢ããªã±ãŒã·ã§ã³ã èµ·åããã®ã¯DXEãããŒãžã£ãŒã§ã¯ãªãããŠãŒã¶ãŒã§ãããšããç¹ã§DXEãã©ã€ããŒãšã¯ç°ãªããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãUEFIã»ããã¢ãããUEFIã·ã§ã«ãBIOSã¢ããããŒããªã©ã§ãã |
| | SMMã¢ãžã¥ãŒã« |
| | ç»åFVã ããã¯ãããFVãå¥ã®FVã«åã蟌ãããšãã§ããç¹å¥ãªãã¡ã€ã«ã§ã |
| | SMM / DXEãã€ããªããã¢ãžã¥ãŒã« |
| | ã«ãŒãã«SMMãå¥åSMM Init |
ãã¡ã€ã«ã§äžèšã確èªããŠãã ããã

FVããããŒã®æåã®0x48ãã€ãã¯ããèå³ããããŸããããããåŸã«ç¶ããã®ãèå³ãæã¡ãŸãã GUID CEF5B9A3-476D-497F-9FDC-E98143E0422CãããããŒãã§ãã¯ãµã 0x36ãåé€ãããå±æ§
FFS_ATTRIB_CHECKSUM
ã瀺ãããŒã¿ãã§ãã¯ãµã 0xAAãå±æ§ãªãããµã€ãº0x1FFB8æšæºã®ãã¡ã€ã«ãããããšãããããŸãã ã çå®ã®ããã«èãããŸãã
次ã«ã»ã¯ã·ã§ã³ã«ã€ããŠã RAWãé€ããã¹ãŠã®FFSãã¡ã€ã«ã¯ããã¡ã€ã«ããŒã¿é åã®å é ãã4ãã€ãã®å¢çã§æŽåããã»ã¯ã·ã§ã³ã«åå²ããå¿ èŠããããŸãã åã¿ã€ãã®ãã¡ã€ã«ã«ã¯ãã»ã¯ã·ã§ã³ã®æ°ãšã¿ã€ãã«é¢ããç¬èªã®èŠä»¶ããããŸããããã®èšäºã«ã¯èŠä»¶ã®ãªã¹ãã¯ãããŸãããé·ãããŠéå±ãããŸãã ããããã»ã¯ã·ã§ã³ã®èŠåºãããããã®ç®çãšçš®é¡ã«ã€ããŠã¯ãçŸåšæ€èšããŠããŸãã
ã»ã¯ã·ã§ã³ããããŒ
æå°ã»ã¯ã·ã§ã³ããããŒã¯æ¬¡ã®ããã«ãªããŸãã
typedef struct { UINT8 Size[3]; UINT8 Type; } EFI_COMMON_SECTION_HEADER;
ãµã€ãº ïŒãã¡ã€ã«ããããŒãšåã圢åŒã®ã»ã¯ã·ã§ã³ãµã€ãºã
ã¿ã€ã ïŒã»ã¯ã·ã§ã³ã®ã¿ã€ãã
ã»ã¯ã·ã§ã³ã¯ãã«ãã»ã«åãšãªãŒãã®2ã€ã®ãµãã¯ã©ã¹ã«åããããŸãã åè ã«ã¯ä»ã®ã¿ã€ãã®ã»ã¯ã·ã§ã³ãå«ãŸããåŸè ã«ã¯çŽæ¥ããŒã¿ãå«ãŸããŸãã äžéšã®ã¿ã€ãã®ã»ã¯ã·ã§ã³ã«ã¯æ¡åŒµããããŒããããŸãããå é ã¯åžžã«äžè¬çãªããããŒãšäžèŽããŸãã
ã«ãã»ã«åã»ã¯ã·ã§ã³ã«ã¯ã次ã®3çš®é¡ã®ã³ã³ãã³ããå®çŸ©ãããŠããŸãã
0x01-
EFI_SECTION_COMPRESSION
ã¯ãã»ã¯ã·ã§ã³ãäœããã®ã¢ã«ãŽãªãºã ã«åŸã£ãŠå§çž®ãããŠããããšã瀺ããŸãã
EFI_COMPRESSION_SECTIONã®å®å šãªèŠåºãïŒã¿ã€ãã«ã®åèªãæ··åãããŠããªããããã ãã§ãïŒã¯æ¬¡ã®ããã«ãªããŸãã
typedef struct { UINT8 Size[3]; UINT8 Type; UINT32 UncompressedSize; UINT8 CompressionType; } EFI_COMPRESSION_SECTION;
UncompressedSize ïŒè§£åãããããŒã¿ã®ãµã€ãºã
CompressionType ïŒé©çšãããå§çž®ã¢ã«ãŽãªãºã ã
çŸæç¹ã§ã¯ãTianoïŒ0x01ïŒãšLZMAïŒ0x02ïŒã®2ã€ã®å§çž®ã¢ã«ãŽãªãºã ããããŸãã æ§é ãå€æŽããã«ã»ã¯ã·ã§ã³ãã¢ã³ããã¯ãããå Žåãå§çž®ã¿ã€ããšããŠ0x00ãèšå®ãããã»ã¯ã·ã§ã³ãµã€ãºã¯ããã¯ãããããŒã¿ã®ãµã€ãºãšäžèŽããŸãã Tianoã¢ã«ãŽãªãºã ã¯LZ77ãšIntelã®ãããã³ã³ãŒãã®çµã¿åããã§ãããå§çž®ããã³è§£åã³ãŒãã¯BSDLã®äžã®TianoCoreãããžã§ã¯ããã¡ã€ã«ããååŸã§ããŸãã LZMAã¢ã«ãŽãªãºã ã¯ããŸãã«ãããç¥ãããŠããã®ã§ãå床説æããããšã¯ã§ããŸãããå§çž®ããã³å§çž®è§£é€ã³ãŒãã¯LZMA SDKã«ãããŸãã
ã«ãã»ã«åã»ã¯ã·ã§ã³ã®ã¿ã€ãã«ã€ããŠç¶ããŸãããã
0x02-
EFI_SECTION_GUID_DEFINED
ã¯ãã»ã¯ã·ã§ã³ã«èšé²ãããGUIDã«åŸã£ãŠããã¡ã€ã«ã®ãŠãŒã¶ãŒãã»ã¯ã·ã§ã³ã®å 容ã衚瀺ããå¿ èŠãããããšã瀺ããŸãã ãã®ãããªã»ã¯ã·ã§ã³ã§ã¯ãããŸããŸãªOEMããŒã¿ãããã³ã»ã¯ã·ã§ã³ãŸãã¯ãã¡ã€ã«å šäœã®é»å眲åãä¿åã§ããŸãã
0x03-
EFI_SECTION_DISPOSABLE
ã¯ãããŒã¿ããã¡ã€ã«ã®æäœã«ãšã£ãŠéèŠã§ã¯ãªããã¹ããŒã¹ãç¯çŽããããã«åã¢ã»ã³ããªäžã«åé€ã§ããã»ã¯ã·ã§ã³ã瀺ããŸãã å®éã®ãã¡ã€ã«ã§ã¯ãBIOSã¯èŠã€ãããŸããã
ãªãŒãã»ã¯ã·ã§ã³ã«ã¯ã12ã®ã³ã³ãã³ãã¿ã€ããå®çŸ©ãããŠããŸãã
| | |
---|---|---|
| | ãã¹ãŠã®ããããŒãå«ãPE32 +圢åŒã®64ãããå®è¡å¯èœã³ãŒãã UEFIã®å®è¡å¯èœã³ãŒãã®ã¡ã€ã³åœ¢åŒã |
| | 64ãããã®äœçœ®ã«äŸåããªãå®è¡å¯èœã³ãŒãã äžéšã®PEIã¢ãžã¥ãŒã«ã§ã®ã¿äœ¿çšããã圢åŒã¯PE32 +ãšåãã§ããåé 眮æ å ±ã®ã¿ãåãæšãŠãããŸãã |
| | ã¢ãžã¥ãŒã«ããã³PEIã³ã¢ã§äœ¿çšããã64ãããã®å®è¡å¯èœã³ãŒãã PE32 +ãšã¯ãããã»ããµãã£ãã·ã¥ã®ã¹ããŒã¹ãç¯çŽããããã«åæžãããããããŒãç°ãªããŸãã ãã®èšäºã®1.5éšã®èª¬æãèªãã§ãã ããã |
| | é 眮ãããŠããDXEãã©ã€ããŒã®äŸåé¢ä¿ã説æããã»ã¯ã·ã§ã³ã ãã®ã»ã¯ã·ã§ã³ã®åœ¢åŒã«ã€ããŠã¯ã第2å·»ã§èª¬æããŠããŸã |
| | ãã¡ã€ã«ã®ããŒãžã§ã³ãšããªãã·ã§ã³ã§ãã«ããŒãžã§ã³ã®Unicodeæååãå«ãŸããŸãã éåžžã«ãŸãã§ãã |
| | ãã¡ã€ã«åãæã€unicode-termãå«ãŸããŸãã ãã®ã»ã¯ã·ã§ã³ã®å 容ã§ãã¡ã€ã«ãæ€çŽ¢ãããšéåžžã«äŸ¿å©ã§ãã ããã¯é »ç¹ã«äœ¿çšãããŸããããã®ãããªã»ã¯ã·ã§ã³ãå«ãåäžã®ãã¡ã€ã«ããªãBIOSãèŠã€ãããŸãã |
| | å€ãã·ã¹ãã ãšã®äºææ§ã®ããã®16ãããå®è¡å¯èœã³ãŒãã |
| | FVç»åãå«ãã»ã¯ã·ã§ã³ã ãã®FVå ã«ã¯ããã€ã¯ããµãŒãããå ã®å ŽæããªããªããŸã§ããã®ãããªã»ã¯ã·ã§ã³ãå«ããã¡ã€ã«ãããå ŽåããããŸãã |
| | ã»ã¯ã·ã§ã³ã«ã¯ããŒã¿ãå«ãŸãããã®è§£éã¯èšé²ãããGUIDã®å é ã«äŸåããŸãã ãã£ãã«äœ¿çšãããŸããã |
| | çããŒã¿ãå«ãã»ã¯ã·ã§ã³ã ããããã©ããããã¯ããã®ãã¡ã€ã«ãéãã人ã«ãã£ãŠæ±ºå®ãããŸãã |
| | åžžé§ããPEIã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ã説æããã»ã¯ã·ã§ã³ã ãã®ã»ã¯ã·ã§ã³ã®åœ¢åŒã¯ãããªã¥ãŒã 1ã§èª¬æãããŠããŸãã |
| | é 眮ãããŠããSMMãã©ã€ããŒã®äŸåé¢ä¿ã説æããã»ã¯ã·ã§ã³ã圢åŒã¯DXE_DEPEXãšåãã§ãã |
äžèšã®äŸã§ç¢ºèªããŠãã ããã ååæ€èšããRAWãã¡ã€ã«ã«ã¯ã»ã¯ã·ã§ã³ãå«ãŸããŠããªããããå¥ã®ãã¡ã€ã«ãã€ãŸããªãã»ãã0x7AD210ã«ããPchUsbãšããååã®PEIã¢ãžã¥ãŒã«ãåãäžããŸãã

ããã¯å®éã«ã¯PEIMïŒãã¡ã€ã«ã¿ã€ãã¯0x06ïŒã§ããã2ã€ã®ã»ã¯ã·ã§ã³ãå«ãŸããŠããããšãããããŸãã ãµã€ãº0x3Aããã³ã¿ã€ãPEI_DEPEXïŒ0x1BïŒã®æåã®ã»ã¯ã·ã§ã³ã«ã¯ããã®äŸåé¢ä¿ã«é¢ããæ å ±ãå«ãŸããŠããŸãã 2çªç®ã®ã»ã¯ã·ã§ã³ïŒ4ãã€ãã®å¢çã§æŽåïŒã®ãµã€ãºã¯0x31Aã§ãCOMPRESSED_SECTIONïŒ0x01ïŒåã§ããããã®äžã®ããŒã¿ã¯LZMAã¢ã«ãŽãªãºã ïŒ0x02ïŒã§ããã¯ãããã¢ã³ããã¯åŸã®ãµã€ãºã¯0x558ã§ãã LZMAã解åããæ¹æ³ãå¿åŸãŠããå Žåã¯ããã®ã»ã¯ã·ã§ã³ã®å 容ããã§ã«æšæž¬ããŠããã¯ãã§ããããã§ãªãå Žåã¯ããç¥ããããŸãã ããã«2ã€ã®ã»ã¯ã·ã§ã³ããããŸããã¢ãžã¥ãŒã«ã®å®è¡å¯èœã³ãŒããå«ãPE32ãšããã¡ã€ã«åãå«ãUSER_INTERFACEã§ãã ããªãã¯ãLZMAãç§ã®å¿ã®äžã«è§£åã§ããªããã©ãããã©ããã£ãŠç¥ãã®ã§ããïŒ ãã®ããã®ã¢ããªããããŸãïŒ
PhoenixToolãšçµè«
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯PhoenixToolãšåŒã°ãããã®äž»ãªã¿ã¹ã¯ã¯SLICãUEFI BIOSãã¡ã€ã«ã«è¿œå ããããšã§ãããç§ãã¡ã¯æ³ãé å®ããŠãããBIOSã«SLICãè¿œå ããŸããã ããã°ã©ã ã®ãã¹ãŠã®æ©èœã®äžã§ã䜿çšããBIOSãæå®ããåŸã«äœ¿çšã§ãã[æ§é ]ãã¿ã³ã«æ³šç®ããŸãã æ§é ãå¥ã®ãŠã£ã³ããŠã§éããUEFI BIOSã€ã¡ãŒãžãããªãŒãšããŠè¡šç€ºãããŸãã åã³ã³ããŒãã³ãã«ã€ããŠããã®æ å ±ãšäœ¿çšå¯èœãªã¢ã¯ã·ã§ã³ãå³åŽã«è¡šç€ºãããŸãã ãã®ãŠã£ã³ããŠã®äžèšã®äŸã§æ€èšãããã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã

ãã®ããã°ã©ã ã§ã¯ããã¡ã€ã«æ§é ã®ç·šéãå¶éã§ããŸãããåé¿ããããã«ãã¡ã€ã«æ§é ãå€æŽããªãããšããå§ãããŸãã
UEFIå®è¡å¯èœãã¡ã€ã«ãããé©åã«ç·šéããæ¹æ³ãšãããã§ããããšã«ã€ããŠã¯ã次ã®èšäºãåç §ããŠãã ããã
ãæž èŽããããšãããããŸããã
æåŠ
UEFIãã©ãããã©ãŒã åæåä»æ§1.2.1ãšã©ãã¿AãUEFIãã©ãŒã©ã ã«ããããã¥ã¡ã³ã