partinfo

Zeigt die vollständige Partitionstabelle einer Disk an, inklusive freier Bereiche.

Shell-Übersicht · diskinfo · mountp · gpt


Syntax

partinfo <disk-id>

Parameter Typ Beschreibung
disk-id int Laufwerksnummer (0-basiert, aus diskinfo)

Beschreibung

partinfo gibt eine tabellarische Übersicht aller Partitionen und freien Bereiche auf disk-id aus. Es erkennt sowohl MBR- als auch GPT-formatierte Disks und zeigt die Partitionsart an.

Im Gegensatz zu diskinfo (nur Laufwerke) oder gpt (nur GPT-FAT-Partitionen) liefert partinfo das vollständige Layout inklusive aller Lücken zwischen Partitionen.

Ausgabe-Format:

Disk <id>: <sektoren> sectors (<MB> MB)  [GPT|MBR]

  #        Start        End    Sectors      MB  Type
---  ----------  ----------  ----------  ------  ---------------
  -           0        2047        2048       1  free
  1        2048      524287      522240     255  FAT32 MBR

Spalten:

Spalte Beschreibung
# Partitionsnummer (1-basiert) für verwendbare Partitionen; - für freie Bereiche und GPT-Metadaten
Start Erster LBA-Sektor
End Letzter LBA-Sektor (inklusive)
Sectors Anzahl der Sektoren
MB Größe in Megabyte (Sektoren ÷ 2048)
Type Partitionstyp (siehe unten)

Partitionstypen:

Typ-String Bedeutung Zählt als Partition?
free Freier, nicht partitionierter Bereich nein
ESP EFI System Partition (GPT GUID C12A7328-…) ja
FAT32/Data Microsoft Basic Data (GPT GUID EBD0A0A2-…) ja
FAT32 MBR MBR-Partition Typ 0x0B oder 0x0C ja
MBR Part Sonstige MBR-Partition (nicht FAT32) ja
GPT Part Unbekannte GPT-Partition ja
GPT meta GPT-Metadaten-Bereich (Header + Partition-Array) nein

Was bedeutet "FAT32 MBR"?

Der Typ-String besteht aus zwei unabhängigen Teilen:

  • FAT32 — der Partitionstyp-Byte im MBR-Eintrag. LyxOS setzt Typ 0x0C (FAT32 LBA). Das ist nur eine Markierung — sie sagt, was erwartet wird, formatiert aber nichts.
  • MBR — das Partitionierungsschema. Die Disk hat einen klassischen MBR (Master Boot Record) bei LBA 0 mit einer 4-Einträge-Partitionstabelle. Das Gegenstück ist GPT.

Der Zusatz „MBR“ bezieht sich also auf die Diskstruktur, nicht auf den Dateisystemtyp. Eine MBR-partitionierte Disk mit einer FAT32-Partition zeigt FAT32 MBR. Eine GPT-Disk mit einer FAT32-Datenpartition zeigt FAT32/Data (GPT-eigene Bezeichnung).

FAT32 ohne MBR (Superfloppy):

Wenn eine Disk mit mkfat32 1 0 <sektoren> ohne vorheriges part formatiert wird, sitzt die FAT32-BPB direkt bei LBA 0 — keine Partitionstabelle. partinfo erkennt dann weder MBR noch GPT und gibt keine Partitionseinträge aus. mountp ist in diesem Fall nicht möglich; der LBA-Start 0 muss für mount manuell angegeben werden.


Beispiel-Ausgaben

MBR-Disk:

lyx> partinfo 1
Disk 1: 524288 sectors (256 MB)  MBR

  #        Start        End    Sectors      MB  Type
---  ----------  ----------  ----------  ------  ---------------
  -           0        2047        2048       1  free
  1        2048      524287      522240     255  FAT32 MBR

GPT-Disk:

lyx> partinfo 1
Disk 1: 1048576 sectors (512 MB)  GPT

  #        Start        End    Sectors      MB  Type
---  ----------  ----------  ----------  ------  ---------------
  -           0          33          34       0  GPT meta
  1           34        2047        2014       0  GPT meta
  2         2048      206847      204800     100  ESP
  3       206848      524287      317440     155  FAT32/Data
  -       524288     1048575      524288     256  free

Disk nicht vorhanden:

lyx> partinfo 9
Disk not present


Syscall-Details

Feld Wert
Syscall nr 88
Kernel-Funktion VfsDiskMap(disk_id)DiskmapPrintR3(disk_id)
a0 disk_id
Rückgabe immer 0
Ausgabe-Kanal vmm_op41 (Framebuffer + COM1)

Kernel-Aufrufkette:

partinfo <disk-id>
    → lyx_partinfo(disk_id)          [shell.lyx, Syscall nr=88]
    → VfsDiskMap(disk_id)            [vfs.lyx]
    → DiskmapPrintR3(disk_id)        [diskmap.lyx]
        → dm_scan(disk_id)           [liest LBA 0 und/oder LBA 1]
        → dm_sort()                  [sortiert nach Start-LBA]
        → dm_print_row(...)          [gibt jede Zeile via vmm_op41 aus]

DiskmapPrintR3 intern (kernel/diskmap.lyx):

pub fn DiskmapPrintR3(disk_id: int64): void {
    dm_total := DiskSectorCount(disk_id);
    if (dm_total <= 0) { dm_puts("Disk not present\n"); return; }
    dm_count := 0;
    dm_scan(disk_id);
    // Header ausgeben ...
    // Für jede Partition + Lücke dm_print_row() aufrufen
    // Lücken (start > prev_end + 1) werden als type=0 (free) eingefügt
}

Der Scan läuft zweistufig:

  1. Prüft LBA 1 auf GPT-Signatur EFI PART → wenn erkannt, GPT-Einträge lesen
  2. Wenn kein GPT: prüft LBA 0 auf MBR-Signatur 0x55AA → MBR-Einträge lesen
  3. Ergebnis-Array wird nach Start-LBA sortiert (dm_sort)
  4. Lücken zwischen Einträgen werden beim Ausgeben als free-Zeilen eingefügt

Shell-Implementierung (shell/shell.lyx):

fn lyx_partinfo(disk_id: int64): int64 {
    poke64(g_r3sc + R3_OFF_NR, 88);
    poke64(g_r3sc + R3_OFF_A0, disk_id);
    return lyx_trigger();
}

fn cmd_partinfo(b: int64, offset: int64): void {
    var disk_id: int64 := token_int(b, offset, 1);
    lyx_partinfo(disk_id);
}


Partitionsnummerierung

Die #-Spalte ist die maßgebliche Nummerierung für mountp und mkfat32 <disk> <part-nr>. Gezählt werden nur echte Partitionen (Typen 1–5 in der internen Diskmap), nicht freie Bereiche (Typ 0) und nicht GPT-Metadaten (Typ 6):

Typ-Konstanten in diskmap.lyx:
  1 = ESP              → zählt als Partition
  2 = FAT32/Data(GPT)  → zählt als Partition
  3 = FAT32 MBR        → zählt als Partition
  4 = MBR Part         → zählt als Partition
  5 = GPT Part         → zählt als Partition
  6 = GPT meta         → KEIN #
  0 = free             → KEIN #

DiskmapFindPart(disk_id, part_no, out_sectors) verwendet dieselbe Nummerierung.


Hinweise

  • partinfo und gpt sind unabhängig: partinfo liest MBR und GPT, gpt liest nur GPT.
  • Die Sectors-Spalte ist für freie Bereiche korrekt (inkl. erster und letzter Sektor), die MB-Spalte rundet ab (sectors ÷ 2048) — ein Bereich von 2047 Sektoren zeigt 0 MB.
  • Maximale Einträge intern: 16 (DM_MAX = 16 in diskmap.lyx). Auf Disks mit sehr vielen Partitionen werden überschüssige Einträge stumm weggelassen.

Verwandte Befehle

diskinfo Laufwerke auflisten
mountp Partition per Nummer (aus partinfo) mounten
mkfat32 Partition per Nummer formatieren
gpt GPT-Disk scannen und alle FAT-Partitionen mounten
part MBR-Partitionseintrag schreiben