Inhaltsverzeichnis

mount

Mountet einen rohen Sektorbereich einer Disk als VFS-Volume.

Shell-Übersicht · mountp · vol · diskinfo


Syntax

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

Beschreibung

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)


Syscall-Details

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 vs. mountp

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.


Warum ist der LBA-Startsektor Pflicht?

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

Superfloppy: FAT32 ohne Partitionstabelle

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.

Hinweise


Verwandte Befehle

mountp Partition per Nummer mounten (einfacher)
vol Gemountetes Volume als aktiv setzen
partinfo LBA-Startsektor einer Partition anzeigen
mkfat32 FAT32 formatieren (inkl. Auto-Mount)
gpt GPT scannen und alle FAT-Partitionen mounten