内郚からのモバむルデバむス。 GPTずは䜕ですか

GPTずは䜕ですか



内容
1.はじめに

2. GPT構造

3. Intel GPTパヌティションずは䜕ですか

3.1。 新しいGPTセクションのヘッダヌ構造

3.2。 新しいGPTパヌティション蚘述゚ントリ構造

4.結論。

5.情報​​源



1.はじめに



モバむルデバむス MU の゜フトりェア郚分の構造を匕き続き怜蚎したす。 今日は、デバむスのGPTパヌティションメモリに぀いお説明したす。 これに぀いおコメントを曞く代わりに、MBRずGPTの構造を調べるこずで、このこずに぀いお曞くこずを勧められたした。 著者をscったり蚂正したりするのではなく、 MUのバむアスで䞊蚘の出版物を補いたす。









したがっお、GPTGUID Partition Tableは次のずおりです。





MBRずGPTの 2぀のメモリマヌクアップスキヌムがありたす。 各回路は、それぞれMBRたたはGPTず呌ばれる個別のメモリセクションに含たれおいたす。



MBRレむアりトのレむアりトは[1]にありたす。GPTは、メモリレむアりトを蚘述するためのもう1぀の圢匏、GUIDGUIDパヌティションテヌブルです。 BIOSの代わりにパヌティションをロヌドするために䜿甚されるUEFI暙準であるEFIExtensible Firmware Interfaceの䞀郚です。



別の圢匏に切り替えるず、MBR圢匏の最も重倧な欠点である少数のパヌティションがなくなりたした。 これらのパラメヌタヌが32ビットの数倀で蚘述されおいるためにパヌティションの長さずそのオフセットに制限があるMBRに 4぀のレコヌドのみが配眮された堎合、128個のパヌティションをGPTに配眮できたす。 さらに、それらのパラメヌタヌはすでに64ビットの数倀システムで説明されおいたす...



叀いブヌト暙準BIOSずの互換性のため、およびGPTメモリパヌティション蚘述テヌブル自䜓を保護するために、 GPTパヌティションはMBRで始たりたす。これは、1぀のパヌティションのみ、぀たりすべおのMUメモリを蚘述したす。 MBR自䜓は、珟圚「保護」保護ず呌ばれおいたす。 PMBR たた、アドレス0x0000-0x01FF 512バむトのメモリの最初のセクタにありたす。 [ オフセット]フィヌルドはGPTヘッダヌの始たりを瀺し、パヌティションサむズはデバむスメモリ党䜓の長さに等しく蚭定されたす。 パヌティションの皮類は0xEE GPTパヌティションです。



GPTセクションずMUのメモリ党䜓を保護する本質は次のずおりです。 そのようなセクションがMBRマヌクアップ図を操䜜するためのツヌルを開く堎合、マヌクアップ説明セクションのみで構成される空の未割り圓おメモリが衚瀺されたす。 したがっお、圌はこの蚘憶で䜕もするこずに成功したせん。



PMBRのPMBRの䟋を次に瀺したす。



PMBR






図1 「保護」MBR、すなわち PMBR



0x01FEでは、眲名MBR 0xAA55が衚瀺されたす。



GPTセクションの構造を盎接怜蚎したす。



2. GPT構造



GPTセクションは、 PMBR 、ヘッダヌ、およびメモリパヌティションを蚘述するセクションテヌブルで構成されたす。



PMBRの盎埌、぀たり アドレス0x0200から、長さが0x5C92バむトのGPTヘッダヌがありたすが、セクタヌ党䜓512バむトを占めおいたす。 同じMUでの倖芳は次のずおりです。



GPTヘッダヌ




図2 GPTヘッダヌ



次の構造になっおいたす。



=============================================================================== |  |  |  |  | |  |  |  |  | |==========|=================|=======|==========================================| | 0x00 | Magic | 8 |   | | 0x08 | Revision | 4 |  GPT- | | 0x0C | HeaderSize | 4 |     | | 0x10 | HeaderCRC32 | 4 | CRC32  | | 0x14 | Reserved1 | 4 | ;   0 | | 0x18 | MyLBA | 8 | LBA  GPT- | | 0x20 | AlternateLBA | 8 | LBA  GPT- | | 0x28 | FirstUsableLBA | 8 | LBA     | | 0x30 | LastUsableLBA | 8 | LBA     | | 0x38 | DiskGUID | 16 | GUID  () | | 0x48 | PartitionsLBA | 8 | LBA   GPT | | 0x50 | NumberParts | 4 |     | | 0x54 | PartitionSize | 4 |       | | 0x58 | PartitionsCRC32 | 4 | CRC32     | | 0x5C | Reserved2 | * |  | ===============================================================================
      
      





Magicフィヌルドには、文字列「EFI PART」-45h 46h 49h 20h 50h 41h 52h 54hが含たれたす。これは、図2で青緑色で匷調衚瀺され、GPTセクションを䞀意に識別したす。



緑色で匷調衚瀺されおいる[ リビゞョン]フィヌルドには、GPTパヌティション構造のバヌゞョン番号0x00010000が含たれおいたす。 たずえば、GPTバヌゞョン1.0の堎合、00h 00h 01h 00hである必芁がありたす



オレンゞ色で匷調衚瀺されたHeaderSizeフィヌルドには、ヘッダヌのサむズがバむト単䜍で衚瀺されたす。 これたでのずころ、これは92バむトを意味する0x0000005Chです。



ピンクで匷調衚瀺されおいるHeaderCRC32フィヌルドには、CRC32アルゎリズムを䜿甚しお蚈算されたヘッダヌチェックサム0x09BE8E1Fが含たれおいたす。 蚈算を盎接実行する堎合、92バむトのみが考慮され、蚈算前にこのフィヌルドに0が入力されたす。



次のフィヌルドReserved1は遞択されおいたせん。予玄枈みであり、0が含たれおいたす。



濃い青色で匷調衚瀺されおいるMyLBAフィヌルドには、プラむマリGPTセクションの配眮ブロックのオフセットが含たれおいたす0x00000001。



AlternateLBAフィヌルドには、バックアップGPTセクションの配眮ブロックのオフセットが含たれたす。 瀺されおいたせん。



赀で匷調衚瀺されおいるFirstUsableLBAフィヌルドには、䜿甚が蚱可されおいる最初のメモリセクタの配眮ブロックのオフセットが含たれおいたす0x00000022。 プラむマリGPTパヌティションが占める最埌のセクタヌのLBA + 1。



LastUsableLBAフィヌルドには、䜿甚が蚱可されおいる最埌のメモリセクタの䜍眮オフセットが含たれたす。 次のように蚈算されたす。バックアップGPTパヌティションの最初のセクタヌのLBA-1.指定されおいたせん。



青で匷調衚瀺されたDiskGUIDフィヌルドには、ファヌムりェアGUIDが含たれおいたす。



赀で匷調衚瀺されおいるPartitionsLBAフィヌルドには、GPTの開始のオフセットが含たれおいたす。 プラむマリは垞に2で、バックアップはLastUsableLBAです。



明るい緑色で匷調衚瀺されたNumberPartsフィヌルドには、セクションの説明テヌブルのサむズが含たれおいたす。 パヌティション゚ントリの数0x00000018。



ピンクで匷調衚瀺されたPartitionSizeフィヌルドには、1぀のセクションレコヌドのサむズがバむト単䜍で含たれおいたす。 UEFI仕様によるず、レコヌドサむズは128バむトたたは0x00000080に固定されおいたす。



赀で匷調衚瀺されたPartitionsCRCフィヌルドには、CRC32アルゎリズムを䜿甚しお蚈算されたパヌティション蚘述テヌブル0x93D54D33のチェックサムが含たれおいたす。 蚈算では、PartitionsLBAからFirstUsableLBAたでのすべおのバむトが考慮されたす。



Reserved2フィヌルドには、バックアップフィヌルドが含たれおいたす。 0からセクタヌの終わりたで、぀たり 512バむトのセクタヌの堎合は420バむト。



アドレス0x400から始たる芋出しの盎埌に、マヌクアップセクション自䜓を含む各メモリセクションに関するレコヌドを含むセクション蚘述テヌブルがありたす。 これは次のようなものです。





図3セクションの説明衚



各128バむトのレコヌドの構造は次のずおりです。



  ==================================================================================== |  | , |  |  | |  |  |  |  | |===========|========|=====================|=========================================| | 0 | 0x00 | 16 | PartitionTypeGUID | GUID   | | 16 | 0x10 | 16 | UniquePartitionGUID | GUID  | | 32 | 0x20 | 8 | StartingLBA | LBA     | | 40 | 0x24 | 8 | EndingLBA |  LBA    | | 48 | 0x30 | 8 | Attributes |   | | 56 | 0x38 | 72 | PartitionName |     | ====================================================================================
      
      





赀で匷調衚瀺されおいるPartitionTypeGUIDフィヌルドには、このパヌティションにデヌタを保存するために䜿甚されるファむルシステムを定矩するパヌティションタむプGUIDが含たれおいたす。 各ファむルシステムは、それを䞀意に識別する独自のGUIDを受け取りたす。 UEFI暙準では、次のパヌティションタむプGUIDのみが厳密に定矩されおいたす。



  ============================================================================= |  GUID |  | |======================================|======================================| | 00000000-0000-0000-0000-000000000000 |   | | C12A7328-F81F-11d2-BA4B-00A0C93EC93B |   UEFI | | 024DEE41-33E7-11d3-9D69-0008C781F39F | ,   MBR | =============================================================================
      
      





OSベンダヌは、独自のパヌティションタむプGUIDを生成しおそれらを識別する必芁がありたす。 いく぀かの有名なGUIDは[3]にありたす。



メモリたたはむメヌゞファむルに曞き蟌む堎合、GUID倀は異なる順序で曞き蟌たれたす。 たずえば、EFIシステムパヌティションのGUIDは次のずおりですC12A7328-F81F-11D2-BA4B-00A0C93EC93B。 GUIDのスペルのバむト順はリトル゚ンディアンであり、バむトは最初の3ブロックにのみ逆方向に曞き蟌たれたす。 䞊蚘のGUIDの堎合、パヌティションテヌブルの゚ントリは次のようになりたす。



 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B
      
      





青で匷調衚瀺されおいるUniquePartitionGUIDフィヌルドには、セクションのGUIDが含たれおいたす。 これはセクションの䞀意の識別子であるため、セクションが䜜成されるたびに䜜成されたす。



緑色で匷調衚瀺されおいるStartingLBAフィヌルドには、セクションの最初のセクタヌ0x00020000によるブロック単䜍のオフセットが含たれおいたす。



オレンゞで匷調衚瀺されたEndingLBAフィヌルドには、セクションの最埌のセクタヌ0x0003FFFFによるオフセットが含たれおいたす。 パヌティションのサむズPartitionSizeは、匏によっお決定されたす



  PartitionSize = EndingLBA - StartingLBA + 1
      
      





玫色で匷調衚瀺されおいる属性フィヌルドには、セクションの属性フラグが含たれおいたす。 8バむト64ビットのフラグは次のように割り圓おられたす。 ビット0〜4748個は、パヌティションタむプの䞀般的な属性甚に予玄されおおり、残りの16ビット48〜63は特定のパヌティションを衚したす。



これらのビットの簡単な説明を次に瀺したす。



  ================================================ |  |  | |======|=========================================| | 0 |   | | 1 | EFI     | | 2-47 |    UEFI | | ---- | | | 60 | Read-only (  ) | | 61 |     | | 62 | Hidden () | | 63 |    | ================================================
      
      





青で匷調衚瀺されたPartitionNameフィヌルドには、UTF-16LE゚ンコヌディングで衚された、36文字以䞋の終端れロを持぀テキスト行を含むセクションラベル「モデム」が含たれたす。



GPTがすべおであるずいうこずは既に知っおいたすが、これがGPTセクションの暙準構造です。 倉曎があるこずがわかりたす...



なぜなら IntelベヌスのMUで䜜業しおいるずきに、異なる構造のGPTセクションを発芋したした。Intelの ようなGPTセクションず呌びたした。



3. Intel GPTパヌティションずは䜕ですか



Intelチップに基づく新しいLenovoモバむルデバむスMUのファヌムりェアにはGptメモリレむアりトがありたすが、 Gptファむル自䜓の構造は[1]で説明されおいる暙準のものずは異なりたす。 これは、たずえばYOGA BOOK YB1-X90デバむスに適甚されたす。



暙準のIntel構造䜓ず比范しお、タむプは最倧たで削枛されたす。





なぜなら このタむプのGpt-ファむルの構造は暙準構造ずは異なるため、そのファヌムりェアにはIntelの特別なフラッシャヌであるPhoneFlashTool_5.3.2.0を䜿甚する必芁がありたす。



GPTセクションは、暙準のセクションず同様に、次のもので構成されたす。







図4 Intelタむプの.ptファむルの構造



ヘッダヌの構造を考慮しおください。



3.1。 新しいGPTセクションのヘッダヌ構造。



ヘッダヌのサむズはわずか12 0x0C バむトです暙準バヌゞョンでは512に察しお。





図5 Intelタむプのgptファむルのヘッダヌ



次のフィヌルドが含たれたす。



  ============================================================= | № |  |  |  |   | | / |  |  |  | | |=============================================================| | 1 | 0x00 | Magic | 4 |   | | 2 | 0x04 | StartLba | 4 |    | | 3 | 0x08 | Number | 4 |    | =============================================================
      
      





青色でマヌクされたマゞックフィヌルドには、Intel GPTセクションの画像を識別する番号0x6A8B0DA1が含たれおいたす。



赀でマヌクされたStartLbaフィヌルドには、最初のメモリパヌティションの配眮のオフセット倀が含たれおいたす。



緑色でマヌクされた[ 数倀]フィヌルドには、メモリパヌティションの合蚈数が含たれたす。 セクション蚘述テヌブルの゚ントリの数。 テヌブル自䜓はヘッダヌの盎埌にありたす。



3.2。 新しいGPTパヌティション蚘述゚ントリ構造



セクションの説明テヌブルには、各メモリセクションのパラメヌタを含む゚ントリが含たれおいたす。 レコヌドの数はセクションの数ず等しく、テヌブルの終わりには䜕もマヌクされおいたせん。



各レコヌドのサむズは108 0x6C バむトですが、 UEFIでは128バむトが含たれおいたす。 新しいセクションの説明゚ントリは次のようになりたす。





図6セクションの説明の蚘録



セクションのパラメヌタを説明する次のフィヌルドが含たれたす。



  ============================================================= | № |  |  |  |   | | / |  |  |  | | |=============================================================| | 1 | 0x00 | Size | 4 |   | | 2 | 0x04 | Label | 72 |   | | 3 | 0x4C | GuidType | 16 | GUID   | | 3 | 0x5C | GuidPartition | 16 | GUID  | =============================================================
      
      





図6で青色で匷調衚瀺されおいる[ サむズ]フィヌルドには、パヌティションのサむズがMBで衚されおいたす1024 * 1024 = 1048576バむト。



図6で赀く匷調衚瀺された[ ラベル]フィヌルドには、セクションラベルが含たれおいたす。 UTF-16゚ンコヌディングで衚珟されたセクション名。



図 6で緑色で匷調衚瀺されおいるGuidTypeフィヌルドには、セクションタむプGUIDが含たれおいたす。



図 6で黄色で匷調衚瀺されおいるGuidPartitionフィヌルドには、セクション自䜓のGUIDが含たれおいたす。



4.結論



MUのメモリレむアりトのGPTセクションの構造を孊習したら、実践的な挔習を開始できたす。



以䞋の出版物では、 GPTスキヌムに埓っお実行されたMUのメモリの再マヌキングの経隓を共有したす。



5.情報​​源



1. 「MBRずは」

2. UEFI仕様、バヌゞョン2.7゚ラッタA

3. GUIDパヌティションテヌブル。



All Articles