From dad1b1b3cb82bcbee146781a92ae96fbf41d05f5 Mon Sep 17 00:00:00 2001 From: shibedrill Date: Wed, 5 Mar 2025 21:53:03 -0500 Subject: [PATCH] Tiny fixes --- Dockerfile | 10 ---------- README.md | 38 ++++++++++++++++++++++++++++---------- src/arch/x86_64/display.rs | 1 - src/boot.rs | 2 -- src/main.rs | 6 +----- 5 files changed, 29 insertions(+), 28 deletions(-) delete mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index dbee23b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM rust:latest as builder -WORKDIR /usr/src/gila -COPY . . -RUN rustup default nightly -RUN rustup target add x86_64-unknown-none - -FROM alpine:3.21 -RUN apk add bash xorriso make limine qemu-system-x86_64 -CMD ["/bin/bash"] - diff --git a/README.md b/README.md index c963a2e..159f180 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,35 @@ Gila is a Rust microkernel OS, inspired by the Xinu embedded OS, as well as Linu ## Features +### Complete + +- Builds for multiple architectures +- Valid Limine kernel +- Boots on `x86_64` - Kernel command line parameters -- Display console (work in progress) -- Serial console (unstarted) -- Multi-architecture support: - - `aarch64`: in progress - - `loongarch64`: in progress - - `riscv64`: in progress - - `x86_64`: mostly complete +- Logging + +### In-Progress + +- Multi-architecture feature support +- Display console +- Serial console + +### Future/Desired + +- Code execution +- Interrupts and timers +- Context switching +- Process scheduling +- Shell and CLI +- System calls (multi-convention?) +- Multi-user support and access control +- Simultaneous multiprocessing support +- ACPI, USB, PCI(e), SATA +- Filesystem support (FAT32) +- Application sandboxing/permissions control +- Graphical desktop environment +- Networking support ## Licensing @@ -22,7 +43,6 @@ Licensed under the GNU Public License v3. See [LICENSE](LICENSE) for details. - [arch/](src/arch/): Architecture specific features like the display, serial, and interrupts. Each architecture is a subfolder, containing a file or module for each feature. - [boot.rs](src/boot.rs): Handles bootloader-managed data structures. Gila uses Limine. Other bootloaders are NOT supported. -- [lib.rs](src/lib.rs): Glue to make all files accessible from [main.rs](src/main.rs). - [log.rs](src/log.rs): Logging structures and singletons for logging to serial or the display. - [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. @@ -56,8 +76,6 @@ By supplying `TARGET=(rustc target triple)` as an additional argument, you can c You can install all these dependencies automatically by using `nix-shell` and supplying [shell.nix](shell.nix) as an argument. -TODO: The dockerfile is kinda broken and display forwarding does not work. - ## Kernel Parameters Kernel parameters are passed as part of the `cmdline` through [limine.conf](limine.conf). The parameters are passed as a space-delimited list of keys and values. Keys begin with a hyphen (`-`), and keys are separated from their values with equals signs (`=`). Keys can have a set of multiple values, separated by a comma (`,`). Gila does not currently support parameter values with spaces. That would require an *actual* parser. diff --git a/src/arch/x86_64/display.rs b/src/arch/x86_64/display.rs index 2a953b1..bd3d3ea 100644 --- a/src/arch/x86_64/display.rs +++ b/src/arch/x86_64/display.rs @@ -2,7 +2,6 @@ #![allow(unused_variables)] use vga; -pub use vga::writers::TextWriter; pub struct TextDisplay { writer: vga::writers::Text80x25, diff --git a/src/boot.rs b/src/boot.rs index 4d60a91..1caa1bc 100644 --- a/src/boot.rs +++ b/src/boot.rs @@ -1,5 +1,3 @@ -#![allow(dead_code)] - use limine::{BaseRevision, request::*}; #[used] diff --git a/src/main.rs b/src/main.rs index 76e2b46..1fc1e82 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,6 @@ #![no_std] #![no_main] #![feature(allocator_api)] -#![allow(unused_imports)] mod arch; mod boot; @@ -12,14 +11,11 @@ mod params; mod process; mod resources; -use crate::arch::current; use crate::boot::*; use crate::log::*; -use crate::memory::alloc::{self, format, string::String, vec}; +use crate::memory::alloc::{format, string::String, vec}; use crate::params::*; -use acpi::{AcpiResult, AcpiTable}; - #[unsafe(no_mangle)] unsafe extern "C" fn main() -> ! { // Assert supported bootloader version