mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
<div align="center">
|
|
<h1>Filesystem Architecture</h1>
|
|
<p><em>Virtual File System layer and FAT32 abstraction in BoredOS.</em></p>
|
|
</div>
|
|
|
|
---
|
|
|
|
BoredOS implements a rudimentary but functional filesystem layer designed to support reading system assets and user applications during runtime.
|
|
|
|
## 🗂️ Virtual File System (VFS)
|
|
|
|
The Virtual File System acts as an abstraction layer across different underlying storage mechanisms (even if, currently, only one type is fully utilized). System calls targeting files (`SYS_FS`) route through the VFS rather than interacting with the disk directly.
|
|
|
|
Key VFS functionalities include:
|
|
- **File Descriptors**: Mapping integer IDs to internal file structures for userland processes.
|
|
- **Standard Operations**: Standardizing `open()`, `read()`, `write()`, `close()`, `seek()`, and directory listings.
|
|
- **Path Parsing**: Resolving absolute and relative paths.
|
|
|
|
## 💾 FAT32 Implementation
|
|
|
|
The primary filesystem logic in `fat32.c` is currently built as a RAM-based filesystem simulation.
|
|
|
|
### 💿 Booting and the RAMFS
|
|
Since BoredOS boots from a CD-ROM ISO image generated by `xorriso`, it does not read directly off the CD to execute applications.
|
|
|
|
1. **ISO Booting**: During boot, Limine loads necessary files (such as userland `.elf` binaries, fonts, and wallpapers) into memory as standard boot modules.
|
|
2. **RAM Simulation**: The FAT32 filesystem code parses these loaded memory modules and automatically constructs a synthetic FAT32 directory tree inside RAM.
|
|
3. **Root Filesystem**: All active execution of built-in GUI and CLI apps occurs off this read-only, in-memory FAT32 simulation.
|
|
|
|
> [!WARNING]
|
|
> **Limitations:** The current `fat32.c` implementation in BoredOS is strictly a RAM-based filesystem simulation. It **does not support** reading from actual block devices (real disks). Consequently, external disk images are not recognized, and any operations requiring persistent storage are unsupported.
|
|
|
|
---
|