# Gila v0.2.0 - 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: - `rustup` command installed - `limine` command installed - `xorriso` command installed - `make` command installed - `qemu-system-x86_64` command installed (for running) Then run `make` to invoke the [Makefile](Makefile). - `make prepare`: Installs needed Rust toolchain. - `make clean`: Cleans all built files. - `make gila`: Builds the kernel ELF file. - `make iso`: Builds the bootable ISO with Limine installed. - `make run`: Builds the ISO and boots it in QEMU. TODO: This build setup is not compatible with anything other than `x86_64`. 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.