gpt

Scannt eine GPT-Disk und mountet alle FAT-kompatiblen Partitionen automatisch.

Shell-Übersicht · partinfo · vol · mountp


Syntax

gpt <disk-id> <vol-start>

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 <vol-start> oder vol <vol-start+1> 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

partinfo Partition-Layout mit freien Bereichen anzeigen
vol Ein gemountetes Volume als aktiv setzen
mountp Einzelne Partition per Nummer mounten
mount Partition per LBA-Adresse mounten
diskinfo Verfügbare Laufwerke auflisten