Tiny fixes
This commit is contained in:
parent
d780a72358
commit
dad1b1b3cb
10
Dockerfile
10
Dockerfile
@ -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"]
|
|
||||||
|
|
38
README.md
38
README.md
@ -5,14 +5,35 @@ Gila is a Rust microkernel OS, inspired by the Xinu embedded OS, as well as Linu
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
### Complete
|
||||||
|
|
||||||
|
- Builds for multiple architectures
|
||||||
|
- Valid Limine kernel
|
||||||
|
- Boots on `x86_64`
|
||||||
- Kernel command line parameters
|
- Kernel command line parameters
|
||||||
- Display console (work in progress)
|
- Logging
|
||||||
- Serial console (unstarted)
|
|
||||||
- Multi-architecture support:
|
### In-Progress
|
||||||
- `aarch64`: in progress
|
|
||||||
- `loongarch64`: in progress
|
- Multi-architecture feature support
|
||||||
- `riscv64`: in progress
|
- Display console
|
||||||
- `x86_64`: mostly complete
|
- 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
|
## 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.
|
- [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.
|
- [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.
|
- [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.
|
- [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.
|
- [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
|
You can install all these dependencies automatically by using `nix-shell` and
|
||||||
supplying [shell.nix](shell.nix) as an argument.
|
supplying [shell.nix](shell.nix) as an argument.
|
||||||
|
|
||||||
TODO: The dockerfile is kinda broken and display forwarding does not work.
|
|
||||||
|
|
||||||
## Kernel Parameters
|
## 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.
|
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.
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#![allow(unused_variables)]
|
#![allow(unused_variables)]
|
||||||
|
|
||||||
use vga;
|
use vga;
|
||||||
pub use vga::writers::TextWriter;
|
|
||||||
|
|
||||||
pub struct TextDisplay {
|
pub struct TextDisplay {
|
||||||
writer: vga::writers::Text80x25,
|
writer: vga::writers::Text80x25,
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#![allow(dead_code)]
|
|
||||||
|
|
||||||
use limine::{BaseRevision, request::*};
|
use limine::{BaseRevision, request::*};
|
||||||
|
|
||||||
#[used]
|
#[used]
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#![no_std]
|
#![no_std]
|
||||||
#![no_main]
|
#![no_main]
|
||||||
#![feature(allocator_api)]
|
#![feature(allocator_api)]
|
||||||
#![allow(unused_imports)]
|
|
||||||
|
|
||||||
mod arch;
|
mod arch;
|
||||||
mod boot;
|
mod boot;
|
||||||
@ -12,14 +11,11 @@ mod params;
|
|||||||
mod process;
|
mod process;
|
||||||
mod resources;
|
mod resources;
|
||||||
|
|
||||||
use crate::arch::current;
|
|
||||||
use crate::boot::*;
|
use crate::boot::*;
|
||||||
use crate::log::*;
|
use crate::log::*;
|
||||||
use crate::memory::alloc::{self, format, string::String, vec};
|
use crate::memory::alloc::{format, string::String, vec};
|
||||||
use crate::params::*;
|
use crate::params::*;
|
||||||
|
|
||||||
use acpi::{AcpiResult, AcpiTable};
|
|
||||||
|
|
||||||
#[unsafe(no_mangle)]
|
#[unsafe(no_mangle)]
|
||||||
unsafe extern "C" fn main() -> ! {
|
unsafe extern "C" fn main() -> ! {
|
||||||
// Assert supported bootloader version
|
// Assert supported bootloader version
|
||||||
|
Loading…
Reference in New Issue
Block a user