====== gpt ====== Scannt eine GPT-Disk und mountet alle FAT-kompatiblen Partitionen automatisch. → [[lyxos:shell|Shell-Übersicht]] · [[lyxos:cmd:partinfo|partinfo]] · [[lyxos:cmd:vol|vol]] · [[lyxos:cmd:mountp|mountp]] ---- ===== Syntax ===== gpt ^ Parameter ^ Typ ^ Beschreibung ^ | ''disk-id'' | int | Laufwerksnummer (0-basiert) | | ''vol-start'' | int | Erste Volume-ID für die gemounteten Partitionen | ---- ===== Beschreibung ===== ''gpt'' liest den GPT-Header (LBA 1) der angegebenen Disk, identifiziert alle FAT-kompatiblen Partitionen (ESP und Microsoft Basic Data) und mountet sie nacheinander als Volumes ''vol-start'', ''vol-start+1'', usw. **Ausgabe:** // Erfolg: 2 volume(s) mounted [0] ESP LBA=2048 sz=204800 sectors [1] Data LBA=206848 sz=317440 sectors // Kein GPT: not a GPT disk **Beispiele:** // GPT-Disk 1 scannen, Volumes ab ID 10 vergeben lyx> gpt 1 10 2 volume(s) mounted [0] ESP LBA=2048 sz=204800 sectors [1] Data LBA=206848 sz=317440 sectors // Volume 11 (zweite Partition) als aktiv setzen lyx> vol 11 Switch to vol 11... OK lyx> ls (Dateien auf der GPT-Data-Partition) // MBR-Disk — kein GPT lyx> gpt 0 0 not a GPT disk ---- ===== GPT-Erkennung ===== ''gpt'' überprüft die ersten 8 Bytes von LBA 1 auf die Signatur ''EFI PART'': Byte 0–7: 69 70 73 32 80 65 82 84 → "EFI PART" E F I ' ' P A R T Stimmt die Signatur überein, liest der Kernel: * **Offset 72** (8 Byte): LBA des Partition-Entry-Arrays * **Offset 80** (4 Byte): Anzahl der Partition-Einträge * **Offset 84** (4 Byte): Größe eines Eintrags — muss 128 Byte sein Jeder Eintrag beginnt mit einem 16-Byte-Typ-GUID. Erkannte Typen: ^ GUID ^ Name ^ ''gpt''-Ausgabe ^ | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | EFI System Partition | ''ESP'' | | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | Microsoft Basic Data | ''Data'' | Alle anderen Einträge werden ignoriert. Leere Einträge (erste 8 Bytes des Typ-GUIDs sind null) werden übersprungen. Maximal 8 FAT-kompatible Partitionen werden erkannt (''GPT_MAX_PARTS = 8''). ---- ===== Syscall-Details ===== ^ Feld ^ Wert ^ | Syscall nr | 87 | | Kernel-Funktion | ''VfsGptMount(disk_id, vol_id_start)'' | | a0 | disk_id | | a1 | vol_id_start | | Rückgabe | Anzahl gemounteter Partitionen, oder −1 wenn kein GPT | Nach erfolgreichem Mount gibt der Kernel ''VfsGptPrintInfoR3()'' aus (über vmm_op41, sichtbar in Ring-3). **Kernel-Implementierung** (''kernel/vfs.lyx''): pub fn VfsGptMount(disk_id: int64, vol_id_start: int64): int64 { var n: int64 := GptScan(disk_id); if (n < 0) { return -1; } var mounted: int64 := 0; var i: int64 := 0; while (i < n) { var lba: int64 := GptPartLbaStart(i); if (VfsMountDisk(vol_id_start + i, disk_id, lba)) { mounted := mounted + 1; } i := i + 1; } return mounted; } **Shell-Implementierung** (''shell/shell.lyx''): fn cmd_gpt(b: int64, offset: int64): void { var disk_id: int64 := token_int(b, offset, 1); var vol_start: int64 := token_int(b, offset, 2); var n: int64 := lyx_gpt(disk_id, vol_start); if (n < 0) { r3_puts("not a GPT disk\n"); } else { r3_puti(n); r3_puts(" volume(s) mounted\n"); } } ---- ===== GPT vs. MBR ===== ^ ^ GPT (''gpt'') ^ MBR (''part'' + ''mountp'') ^ | Partitionsanzahl | bis zu 128 (erkannt: max. 8 FAT) | 4 primäre Slots | | Erkennung | LBA 1, "EFI PART" Signatur | LBA 0, 0x55AA Signatur | | Auto-Mount | alle FAT-Partitionen auf einmal | manuell per ''mountp'' | | Einsatz | moderne Disks, UEFI-Boot | ältere Disks, einfache Setups | ---- ===== Hinweise ===== * Die Volume-IDs ''vol-start'' bis ''vol-start + n − 1'' werden belegt. Vorhandene Volumes an diesen IDs werden überschrieben. * Nach ''gpt'' ist kein explizites ''vol'' mehr nötig, um die Partitionen anzusprechen — allerdings ist das aktive Arbeits-Volume noch nicht gewechselt. ''vol '' oder ''vol '' ist danach nötig. * ''gpt'' und ''partinfo'' scannen unabhängig voneinander: ''partinfo'' nutzt das ''diskmap''-Modul (unterstützt beide MBR und GPT), ''gpt'' nutzt das ''gpt''-Modul (nur GPT). * Wenn ''gpt'' 0 zurückgibt ("0 volume(s) mounted"), wurde zwar eine GPT erkannt, aber keine ESP- oder Data-Partition gefunden. Das passiert z.B. bei Disks, die nur Linux-Partitionen enthalten. ---- ===== Verwandte Befehle ===== | [[lyxos:cmd:partinfo|partinfo]] | Partition-Layout mit freien Bereichen anzeigen | | [[lyxos:cmd:vol|vol]] | Ein gemountetes Volume als aktiv setzen | | [[lyxos:cmd:mountp|mountp]] | Einzelne Partition per Nummer mounten | | [[lyxos:cmd:mount|mount]] | Partition per LBA-Adresse mounten | | [[lyxos:cmd:diskinfo|diskinfo]] | Verfügbare Laufwerke auflisten |