gila/README.md
2025-02-10 14:14:17 -05:00

45 lines
1.6 KiB
Markdown

# Gila v0.1.1 - a Rust Microkernel
Gila is a Rust microkernel OS, inspired by the Xinu embedded OS. It will
hopefully be capable of multitasking some day. I do not intend for Gila to
be POSIX-like or compatible.
## Work In Progress
Gila does nothing at all right now. Check back later. Or contribute.
## Licensing
Licensed under the GNU Public License v3. See [LICENSE](LICENSE) for details.
## Navigating
- [boot.rs](src/boot.rs): Handles bootloader handoff. Gila uses Limine. Other bootloaders are NOT supported.
- [display.rs](src/display.rs): Handles text-mode display via the VGA buffer.
- [lib.rs](src/lib.rs): Glue to make all files accessible from [main.rs](src/main.rs).
- [main.rs](src/main.rs): The entry point that gets called by the bootloader.
- [memory.rs](src/memory.rs): Types relating to memory regions and allocation.
- [panic.rs](src/panic.rs): The panic handler and associated functionality.
- [process.rs](src/process.rs): Process types and functions.
- [resources.rs](src/resources.rs): Resources that are accessible from multiple parts of the code.
## Building and running
To build an ISO image that you can boot, there are several prerequisites:
- `limine` command installed
- `xorriso` command installed
Then run the [build_iso.sh](build_iso.sh) script. It will generate `gila.iso`.
Running the kernel requires qemu.
You can install all these dependencies automatically by using `nix-shell` and
supplying [shell.nix](shell.nix) as an argument.
## Credits
The linker script stuff is from [limine-rust-template](https://github.com/jasondyoungberg/limine-rust-template),
which is available under the BSD 0-Clause License.