====== part ======
Schreibt einen MBR-Partitionseintrag auf ein Laufwerk.
→ [[lyxos:shell|Shell-Übersicht]] · [[lyxos:cmd:diskinfo|diskinfo]] · [[lyxos:cmd:mkfat32|mkfat32]]
----
===== Syntax =====
part
^ Parameter ^ Typ ^ Beschreibung ^
| ''disk-id'' | int | Laufwerksnummer (0-basiert, aus ''diskinfo'') |
| ''lba-start'' | int | Erster Sektor der Partition |
| ''lba-end'' | int | Letzter Sektor der Partition (inklusive) |
Die Shell berechnet ''sector_count = lba_end − lba_start + 1'' und übergibt diese Zahl an den Kernel.
----
===== Beschreibung =====
''part'' schreibt einen FAT32-Partitionseintrag in **MBR-Slot 0** (Byte-Offset 446 im MBR-Sektor, LBA 0). Es werden immer Slot 0 und Partitionstyp ''0x0C'' (FAT32 LBA) verwendet.
Der Befehl überschreibt einen eventuell vorhandenen Eintrag in Slot 0 ohne Rückfrage.
**Ausgabe-Format:**
Partitioning disk LBA .. ( sectors)... OK
Schlägt der Kernel-Schreibzugriff fehl, erscheint stattdessen ''FAIL''.
**Beispiel:**
lyx> part 1 2048 524287
Partitioning disk 1 LBA 2048..524287 (522240 sectors)... OK
----
===== Syscall-Details =====
^ Feld ^ Wert ^
| Syscall nr | 83 |
| Kernel-Funktion | ''VfsMkPart(disk_id, lba_start, sector_count)'' |
| a0 | disk_id |
| a1 | lba_start |
| a2 | sector_count (= lba_end − lba_start + 1) |
| Rückgabe | 0 = Erfolg, −1 = Fehler |
| Partitionstyp | 0x0C (FAT32 LBA) |
| MBR-Slot | immer Slot 0 (Offset 446) |
**Shell-Implementierung** (''shell/shell.lyx''):
fn cmd_part(b: int64, offset: int64): void {
var disk_id: int64 := token_int(b, offset, 1);
var lba_start: int64 := token_int(b, offset, 2);
var lba_end: int64 := token_int(b, offset, 3);
var sectors: int64 := lba_end - lba_start + 1;
r3_puts("Partitioning disk ");
r3_puti(disk_id);
r3_puts(" LBA ");
r3_puti(lba_start);
r3_puts("..");
r3_puti(lba_end);
r3_puts(" (");
r3_puti(sectors);
r3_puts(" sectors)... ");
var res: int64 := lyx_mkpart(disk_id, lba_start, sectors);
if (res == 0) { r3_puts("OK\n"); } else { r3_puts("FAIL\n"); }
}
----
===== Hinweise =====
* **Nur Slot 0**: LyxOS unterstützt aktuell nur einen MBR-Partition-Eintrag. Slot 1–3 werden nicht geschrieben.
* **Partitionstyp fest**: Der Typ ist immer 0x0C (FAT32 mit LBA). Andere Typen lassen sich nicht über ''part'' setzen.
* **Kein Überschreibschutz**: Vorhandene MBR-Einträge in Slot 0 werden ohne Warnung überschrieben.
* **GPT-Disks**: Auf GPT-formatierten Laufwerken macht ein MBR-Eintrag keinen Sinn — ''partinfo'' zeigt danach inkonsistente Ergebnisse. GPT-Partitionen werden über ''gpt'' gemountet, nicht über ''part''.
* **Typischer Workflow**:
1. part 1 2048 524287 → MBR-Eintrag schreiben
2. mkfat32 1 1 → Partition #1 als FAT32 formatieren (nutzt part-Eintrag)
3. vol 1 → zu Volume 1 wechseln
----
===== Verwandte Befehle =====
| [[lyxos:cmd:mkfat32|mkfat32]] | Partition als FAT32 formatieren |
| [[lyxos:cmd:partinfo|partinfo]] | Partitionstabelle anzeigen (prüft Ergebnis) |
| [[lyxos:cmd:mountp|mountp]] | Partition per Nummer mounten |
| [[lyxos:cmd:diskinfo|diskinfo]] | Laufwerke auflisten |