Tiny fixes

This commit is contained in:
River 2025-03-05 21:53:03 -05:00
parent d780a72358
commit dad1b1b3cb
Signed by: shibedrill
GPG Key ID: 5FE0CB25945EFAA2
5 changed files with 29 additions and 28 deletions

View File

@ -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"]

View File

@ -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.

View File

@ -2,7 +2,6 @@
#![allow(unused_variables)]
use vga;
pub use vga::writers::TextWriter;
pub struct TextDisplay {
writer: vga::writers::Text80x25,

View File

@ -1,5 +1,3 @@
#![allow(dead_code)]
use limine::{BaseRevision, request::*};
#[used]

View File

@ -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