====== vol ======
Wechselt das aktive VFS-Volume und setzt das Arbeitsverzeichnis auf ''/''.
→ [[lyxos:shell|Shell-Übersicht]] · [[lyxos:cmd:mount|mount]] · [[lyxos:cmd:mountp|mountp]] · [[lyxos:cmd:diskinfo|diskinfo]]
----
===== Syntax =====
vol
^ 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 ... 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 '' 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 =====
| [[lyxos:cmd:mount|mount]] | Volume manuell per LBA mounten |
| [[lyxos:cmd:mountp|mountp]] | Volume per Partitionsnummer mounten |
| [[lyxos:cmd:gpt|gpt]] | Alle GPT-Partitionen auf einmal mounten |
| [[lyxos:cmd:diskinfo|diskinfo]] | Verfügbare Laufwerke anzeigen |