====== 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 |