Inhaltsverzeichnis

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


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