====== mountp ======
Mountet eine Partition per Partitionsnummer als VFS-Volume.
→ [[lyxos:shell|Shell-Übersicht]] · [[lyxos:cmd:mount|mount]] · [[lyxos:cmd:partinfo|partinfo]] · [[lyxos:cmd:vol|vol]]
----
===== Syntax =====
mountp
^ 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 part as vol ... 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 '' 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 =====
| [[lyxos:cmd:partinfo|partinfo]] | Partitionsnummern anzeigen |
| [[lyxos:cmd:mount|mount]] | Partition per LBA-Adresse mounten |
| [[lyxos:cmd:vol|vol]] | Volume als aktiv setzen |
| [[lyxos:cmd:gpt|gpt]] | GPT: alle Partitionen automatisch mounten |
| [[lyxos:cmd:mkfat32|mkfat32]] | FAT32 formatieren + auto-mounten |