Mountet einen rohen Sektorbereich einer Disk als VFS-Volume.
→ Shell-Übersicht · mountp · vol · diskinfo
mount <vol-id> <disk-id> <lba-start>
| Parameter | Typ | Beschreibung |
|---|---|---|
vol-id | int | Volume-ID, unter der die Disk angesprochen wird |
disk-id | int | Laufwerksnummer (0-basiert, aus diskinfo) |
lba-start | int | LBA-Sektor, ab dem das FAT32-Dateisystem beginnt |
mount registriert einen FAT32-Bereich auf einer Disk als VFS-Volume. Ab diesem Zeitpunkt ist das Volume unter der angegebenen vol-id ansprechbar. Um es als aktives Arbeits-Volume zu setzen, ist anschließend vol <vol-id> nötig.
Im Gegensatz zu mountp arbeitet mount direkt mit dem LBA-Startsektor — es wird keine Partitionstabelle konsultiert. Das ist nützlich, wenn der genaue LBA-Bereich bekannt ist oder kein MBR/GPT existiert.
Ausgabe:
Mount disk <disk_id> LBA <lba_start> as vol <vol_id>... OK
Schlägt das Mounten fehl (z.B. kein FAT32-Bootsektors an lba_start), erscheint FAIL.
Beispiel:
lyx> mount 1 1 2048
Mount disk 1 LBA 2048 as vol 1... OK
lyx> vol 1
Switch to vol 1... OK
lyx> ls
(Dateien auf Disk 1 ab LBA 2048)
| Feld | Wert |
|---|---|
| Syscall nr | 85 |
| Kernel-Funktion | VfsMountDisk(vol_id, disk_id, lba_start) |
| a0 | vol_id |
| a1 | disk_id |
| a2 | lba_start |
| Rückgabe | 0 = Erfolg, −1 = Fehler |
Shell-Implementierung (shell/shell.lyx):
fn lyx_mount(vol_id: int64, disk_id: int64, lba_start: int64): int64 {
poke64(g_r3sc + R3_OFF_NR, 85);
poke64(g_r3sc + R3_OFF_A0, vol_id);
poke64(g_r3sc + R3_OFF_A1, disk_id);
poke64(g_r3sc + R3_OFF_A2, lba_start);
return lyx_trigger();
}
fn cmd_mount(b: int64, offset: int64): void {
var vol_id: int64 := token_int(b, offset, 1);
var disk_id: int64 := token_int(b, offset, 2);
var lba_start: int64 := token_int(b, offset, 3);
r3_puts("Mount disk "); r3_puti(disk_id);
r3_puts(" LBA "); r3_puti(lba_start);
r3_puts(" as vol "); r3_puti(vol_id); r3_puts("... ");
var res: int64 := lyx_mount(vol_id, disk_id, lba_start);
if (res == 0) { r3_puts("OK\n"); } else { r3_puts("FAIL\n"); }
}
mount | mountp |
|
|---|---|---|
| Adressierung | LBA-Sektor direkt | Partitionsnummer (1-basiert) |
| Partitionstabelle | wird nicht gelesen | wird via DiskmapFindPart konsultiert |
| Flexibilität | mehr Kontrolle | einfacher bei bekannten Partitionen |
| Syscall | 85 | 90 |
Empfehlung: mountp verwenden, wenn die Partitionstabelle bekannt und korrekt ist. mount ist nützlich bei manuell partitionierten Disks oder wenn partinfo noch nicht aufgerufen wurde.
LBA 0 ist der MBR (Master Boot Record) — 512 Bytes Partitionstabelle und Bootcode, kein FAT32-Header. Der Kernel liest die FAT32-BPB (BIOS Parameter Block) genau an lba_start. Gibt man lba_start = 0 an, liest der Kernel den MBR als FAT32-Header — kein gültiges FAT32, der Mount schlägt fehl.
// Falsch: LBA 0 ist der MBR, kein FAT32-Header
lyx> mount 1 1 0
Mount disk 1 LBA 0 as vol 1... FAIL
// Richtig: FAT32 beginnt nach dem MBR, z.B. LBA 2048
lyx> mount 1 1 2048
Mount disk 1 LBA 2048 as vol 1... OK
Den korrekten LBA-Startsektor zeigt partinfo <disk> in der Start-Spalte. Um das Hardcoding zu vermeiden, ist mountp die bequemere Alternative:
// Äquivalent, ohne LBA kennen zu müssen:
lyx> mountp 1 1 1
Mount disk 1 part 1 as vol 1... OK
Auf einer Superfloppy-Disk sitzt die FAT32-BPB direkt bei LBA 0 — keine MBR-Partitionstabelle davor. USB-Sticks unter Windows werden oft so formatiert. In Lyx OS:
lyx> mkfat32 1 0 131072 // FAT32 direkt ab LBA 0 (kein part davor)
Format disk 1 LBA 0 sz=131072... OK
lyx> mount 1 1 0 // lba_start = 0 ist hier korrekt
Mount disk 1 LBA 0 as vol 1... OK
Einschränkung: partinfo erkennt keine MBR-Partition und zeigt die Disk ohne Partitionseinträge. mountp ist nicht möglich, da kein MBR-Eintrag vorhanden ist, aus dem der LBA-Start abgelesen werden könnte — mount 1 1 0 muss bei jedem Start manuell eingegeben werden.
mount liest den FAT32-Bootsektor an lba_start und initialisiert die VFS-Strukturen. Liegt dort kein gültiger FAT32-Bootsektor, schlägt der Befehl fehl.vol-id muss nicht mit der disk-id übereinstimmen — es können mehrere Partitionen einer Disk unter verschiedenen Volume-IDs gemountet werden.vol <vol-id> ist danach nötig.mkfat32 und gpt mounten automatisch — mount explizit zu verwenden ist nur nötig, wenn die Partition bereits existiert und formatiert ist.