part <disk-id> <lba-start> <lba-end>
| 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.
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 <disk_id> LBA <lba_start>..<lba_end> (<sectors> 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
| 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"); }
}
part setzen.partinfo zeigt danach inkonsistente Ergebnisse. GPT-Partitionen werden über gpt gemountet, nicht über part.
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