Scannt eine GPT-Disk und mountet alle FAT-kompatiblen Partitionen automatisch.
→ Shell-Übersicht · partinfo · vol · mountp
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 |
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 ü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:
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).
| 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 (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 |
vol-start bis vol-start + n − 1 werden belegt. Vorhandene Volumes an diesen IDs werden überschrieben.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).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.