vol

Wechselt das aktive VFS-Volume und setzt das Arbeitsverzeichnis auf /.

Shell-Übersicht · mount · mountp · diskinfo


Syntax

vol <vol-id>

Parameter Typ Beschreibung
vol-id int ID des Volumes, das aktiv werden soll

Beschreibung

Alle VFS-Operationen (ls, cat, cd, pwd, Datei-Öffnen) beziehen sich immer auf das aktive Volume. vol wechselt dieses Volume und setzt gleichzeitig das aktuelle Arbeitsverzeichnis auf / zurück.

Das VFS unterstützt mehrere Volumes gleichzeitig (Multi-Volume-Unterstützung ab WP9). Jedes Volume entspricht einer gemounteten FAT32-Partition. vol wechselt nur, welches davon gerade aktiv ist — alle anderen bleiben gemountet.

Ausgabe:

Switch to vol <vol_id>... OK

Wenn das Volume nicht gemountet ist, erscheint FAIL.

Beispiel:

lyx> vol 0
Switch to vol 0... OK
lyx> ls
[FILE] kernel.elf
[FILE] shell.elf

lyx> vol 1
Switch to vol 1... OK
lyx> ls
(Dateien auf Volume 1)

lyx> pwd
/


Syscall-Details

Feld Wert
Syscall nr 86
Kernel-Funktion VfsSwitchVolume(vol_id)
a0 vol_id
Rückgabe 0 = Erfolg, −1 = Fehler
Nebeneffekt CWD wird auf / zurückgesetzt

Shell-Implementierung (shell/shell.lyx):

fn lyx_vol(vol_id: int64): int64 {
    poke64(g_r3sc + R3_OFF_NR, 86);
    poke64(g_r3sc + R3_OFF_A0, vol_id);
    return lyx_trigger();
}

fn cmd_vol(b: int64, offset: int64): void {
    var vol_id: int64 := token_int(b, offset, 1);
    r3_puts("Switch to vol "); r3_puti(vol_id); r3_puts("... ");
    var res: int64 := lyx_vol(vol_id);
    if (res == 0) { r3_puts("OK\n"); } else { r3_puts("FAIL\n"); }
}


CWD-Reset

Der CWD-Reset auf / ist ein bewusstes Design-Entscheid: Beim Volume-Wechsel würde ein gespeicherter Pfad aus dem alten Volume auf dem neuen Volume ins Leere zeigen. VfsSwitchVolume vermeidet dieses Problem, indem es den CWD immer zurücksetzt.

lyx> cd testdir
lyx> pwd
/testdir

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

lyx> pwd
/          ← CWD wurde zurückgesetzt


Hinweise

  • Volume-ID 0 ist typischerweise das Boot-Volume (Disk 0, ab dem der Kernel geladen wurde).
  • gpt <disk> <vol-start> mountet mehrere Partitionen automatisch und startet die IDs bei vol-start. vol muss danach explizit aufgerufen werden.
  • mkfat32 und mountp mounten ein Volume, machen es aber noch nicht aktiv.

Verwandte Befehle

mount Volume manuell per LBA mounten
mountp Volume per Partitionsnummer mounten
gpt Alle GPT-Partitionen auf einmal mounten
diskinfo Verfügbare Laufwerke anzeigen