A microkernel OS, written in Rust, and based on Xinu.
Go to file
2025-02-10 14:22:53 -05:00
.cargo It boots! 2025-02-10 14:14:17 -05:00
.vscode Initial commit 2025-02-07 10:20:46 -05:00
iso build tool stuff 2025-02-10 14:22:53 -05:00
linker-scripts It boots! 2025-02-10 14:14:17 -05:00
src It boots! 2025-02-10 14:14:17 -05:00
.envrc It boots! 2025-02-10 14:14:17 -05:00
.gitignore It boots! 2025-02-10 14:14:17 -05:00
build_iso.sh build tool stuff 2025-02-10 14:22:53 -05:00
build.rs It boots! 2025-02-10 14:14:17 -05:00
Cargo.lock build tool stuff 2025-02-10 14:22:53 -05:00
Cargo.toml build tool stuff 2025-02-10 14:22:53 -05:00
gila.iso build tool stuff 2025-02-10 14:22:53 -05:00
LICENSE Added README and LICENSE 2025-02-09 20:59:44 -05:00
limine.conf It boots! 2025-02-10 14:14:17 -05:00
README.md build tool stuff 2025-02-10 14:22:53 -05:00
rust-toolchain.toml build tool stuff 2025-02-10 14:22:53 -05:00
shell.nix build tool stuff 2025-02-10 14:22:53 -05:00

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 for details.

Navigating

  • boot.rs: Handles bootloader handoff. Gila uses Limine. Other bootloaders are NOT supported.
  • display.rs: Handles text-mode display via the VGA buffer.
  • lib.rs: Glue to make all files accessible from main.rs.
  • main.rs: The entry point that gets called by the bootloader.
  • memory.rs: Types relating to memory regions and allocation.
  • panic.rs: The panic handler and associated functionality.
  • process.rs: Process types and functions.
  • 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 script. It will generate gila.iso.

Running the kernel requires qemu-system-{ARCH}.

You can install all these dependencies automatically by using nix-shell and supplying shell.nix as an argument.

Credits

The linker script stuff is from limine-rust-template, which is available under the BSD 0-Clause License.