mountp

Mountet eine Partition per Partitionsnummer als VFS-Volume.

Shell-Übersicht · mount · partinfo · vol


Syntax

mountp <vol-id> <disk-id> <part-nr>

Parameter Typ Beschreibung
vol-id int Volume-ID, unter der die Partition angesprochen wird
disk-id int Laufwerksnummer (0-basiert, aus diskinfo)
part-nr int Partitionsnummer (1-basiert, wie in partinfo angezeigt)

Beschreibung

mountp registriert eine Partition als VFS-Volume, ohne dass der genaue LBA-Startsektor bekannt sein muss. Die Partitionsnummer entspricht der #-Spalte in der partinfo-Ausgabe.

Intern verwendet der Kernel DiskmapFindPart(disk_id, part_nr, out_sectors), das die Partition über die Diskmap sucht — unabhängig davon, ob die Disk MBR oder GPT verwendet. Gefundene LBA-Start- und Sektoranzahl werden an VfsMountDisk weitergegeben.

Ausgabe:

Mount disk <disk_id> part <part_nr> as vol <vol_id>... OK

Schlägt die Suche fehl (Partitionsnummer ungültig oder Disk nicht erkannt), erscheint FAIL.

Beispiel:

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

lyx> mountp 1 1 1
Mount disk 1 part 1 as vol 1... OK

lyx> vol 1
Switch to vol 1... OK


Syscall-Details

Feld Wert
Syscall nr 90
Kernel-Funktion VfsMountByPart(vol_id, disk_id, part_no)
a0 vol_id
a1 disk_id
a2 part_no (1-basiert)
Rückgabe 0 = Erfolg, −1 = Fehler

Kernel-Implementierung (kernel/vfs.lyx):

pub fn VfsMountByPart(vol_id: int64, disk_id: int64, part_no: int64): bool {
    var lba: int64 := DiskmapFindPart(disk_id, part_no, v_part_scratch);
    if (lba < 0) { return false; }
    return VfsMountDisk(vol_id, disk_id, lba);
}

v_part_scratch ist ein 8-Byte-Puffer in vfs.lyx (initialisiert in VfsInit via mmap). DiskmapFindPart schreibt dort die Sektoranzahl hinein — sie wird beim reinen Mount-Vorgang nicht benötigt.

Shell-Implementierung (shell/shell.lyx):

fn lyx_mount_part(vol_id: int64, disk_id: int64, part_no: int64): int64 {
    poke64(g_r3sc + R3_OFF_NR, 90);
    poke64(g_r3sc + R3_OFF_A0, vol_id);
    poke64(g_r3sc + R3_OFF_A1, disk_id);
    poke64(g_r3sc + R3_OFF_A2, part_no);
    return lyx_trigger();
}

fn cmd_mountp(b: int64, offset: int64): void {
    var vol_id:  int64 := token_int(b, offset, 1);
    var disk_id: int64 := token_int(b, offset, 2);
    var part_no: int64 := token_int(b, offset, 3);
    r3_puts("Mount disk "); r3_puti(disk_id);
    r3_puts(" part "); r3_puti(part_no);
    r3_puts(" as vol "); r3_puti(vol_id); r3_puts("... ");
    var res: int64 := lyx_mount_part(vol_id, disk_id, part_no);
    if (res == 0) { r3_puts("OK\n"); } else { r3_puts("FAIL\n"); }
}


Partitionsnummerierung

Die Nummerierung in mountp ist identisch mit der #-Spalte von partinfo. Freie Bereiche und GPT-Metadaten-Bereiche (Typ GPT meta) bekommen keine Nummer und zählen nicht:

#        Start        End    Sectors      MB  Type
---  ----------  ----------  ----------  ------  ---------------
  -           0          33          34       0  free          ← keine Nummer
  -          34        2047        2014       0  GPT meta      ← keine Nummer
  1        2048      206847      204800     100  ESP           ← part-nr 1
  2      206848      524287      317440     155  FAT32/Data    ← part-nr 2
  -      524288      524287           0       0  free          ← keine Nummer

mountp 2 1 2 mountet in diesem Fall die FAT32/Data-Partition als Volume 2.


Hinweise

  • mountp scannt die Partitionstabelle bei jedem Aufruf neu — es gibt keinen Cache.
  • Das gemountete Volume ist nicht automatisch aktiv. vol <vol-id> ist danach nötig.
  • mkfat32 und gpt mounten automatisch. mountp ist für Partitionen, die bereits formatiert sind und die man nach einem Neustart erneut einbinden möchte.

Verwandte Befehle

partinfo Partitionsnummern anzeigen
mount Partition per LBA-Adresse mounten
vol Volume als aktiv setzen
gpt GPT: alle Partitionen automatisch mounten
mkfat32 FAT32 formatieren + auto-mounten