Minor doc edits

This commit is contained in:
River 2025-05-16 08:29:59 -04:00
parent af1496f6ea
commit ac8aa25e38
Signed by: shibedrill
GPG Key ID: 5FE0CB25945EFAA2
3 changed files with 25 additions and 14 deletions

View File

@ -1,4 +1,4 @@
# Architecture Outline
# Design Outline
Gila is a microkernel, and almost all functionality of the OS is relegated to
"server" processes. A server is a process that provides a specific
@ -53,4 +53,5 @@ Device driver assignment is performed like so:
kernel about the device. The kernel maps relevant regions of physical memory
into the process's memory space, and returns information on the new mappings
to the process.
- The driver then makes its functions available via IPC and shared memory.
- The driver then makes its functions available via IPC and shared memory.
- The kernel stores information about the driver to avoid spawning duplicates.

View File

@ -27,13 +27,13 @@ BINS = []
[env.development]
PROFILE = "dev"
TARGETDIR = "debug"
ARTIFACTDIR = "target/${TARGET}/${TARGETDIR}"
PROFILEDIR = "debug"
ARTIFACTDIR = "target/${TARGET}/${PROFILEDIR}"
[env.release]
PROFILE = "release"
TARGETDIR = "release"
ARTIFACTDIR = "target/${TARGET}/${TARGETDIR}"
PROFILEDIR = "release"
ARTIFACTDIR = "target/${TARGET}/${PROFILEDIR}"
[tasks.default]
alias = "run"
@ -77,9 +77,14 @@ args = ["build", "--profile", "${PROFILE}", "--bin", "kernel"]
[tasks.bins]
dependencies = []
[tasks.initramfs]
condition = { files_modified = { input = [
# This will not depend on *every* binary we build.
# If we mount a disk later in boot we can store other binaries there.
], output = ["build/initramfs.tar.lzma"] }, fail_message = "(inputs unchanged)" }
dependencies = ["bins"]
script = '''
@ -97,24 +102,24 @@ script = '''
[tasks.iso]
condition = { files_modified = { input = [
"./target/${TARGET}/${TARGETDIR}/kernel",
"./limine.conf",
"${ARTIFACTDIR}/kernel",
"limine.conf",
"${LIMINEDIR}/limine-bios.sys",
"${LIMINEDIR}/limine-bios-cd.bin",
"${LIMINEDIR}/limine-uefi-cd.bin",
"${LIMINEDIR}/${LIMINEBIN}"
], output = ["./build/gila.iso"] }, fail_message = "(inputs unchanged)" }
], output = ["build/gila.iso"] }, fail_message = "(inputs unchanged)" }
dependencies = ["kernel", "initramfs"]
script = '''
mkdir -p build/iso/boot/limine
mkdir -p build/iso/EFI/BOOT
cp -f ./limine.conf build/iso/
cp -f limine.conf build/iso/
cp -f ${LIMINEDIR}/limine-bios.sys build/iso/boot/limine/
cp -f ${LIMINEDIR}/limine-bios-cd.bin build/iso/boot/limine/
cp -f ${LIMINEDIR}/limine-uefi-cd.bin build/iso/boot/limine/
cp -f ${LIMINEDIR}/${LIMINEBIN} build/iso/EFI/BOOT
cp -f ./build/initramfs.tar.lzma build/iso/boot/
cp -f build/initramfs.tar.lzma build/iso/boot/
cp -f ${ARTIFACTDIR}/kernel build/iso/boot/

View File

@ -11,7 +11,9 @@ Gila is a Rust microkernel OS, inspired by the Xinu embedded OS, as well as Linu
- Valid Limine kernel
- Boots on `x86_64`
- Kernel command line parameters
- initramfs loading
- Logging
- Serial output
### In-Progress
@ -70,10 +72,13 @@ This project uses [cargo-make](https://github.com/sagiegurari/cargo-make) to han
Then run `cargo make` to invoke the [Makefile.toml](Makefile.toml).
- `cargo make prepare`: Installs needed Rust toolchain.
- `cargo make clean`: Cleans all built binaries, libraries, and ISOs.
- `cargo make cleaniso`: Clean only files involved in building the ISO, leave the kernel and library.
- `cargo make clean`: Cleans all built binaries, libraries, initramfs files, and ISOs.
- `cargo make clean_iso`: Clean only files involved in building the ISO.
- `cargo make clean_initramfs`: Clean only files involved in building the initramfs.
- `cargo make lib`: Builds `libgila`, the library that the kernel and user code are linked against.
- `cargo make kernel`: Builds the kernel ELF file.
- `cargo make bins`: Builds all binaries included in the system.
- `cargo make initramfs`: Build the init archive.
- `cargo make iso`: Builds the bootable ISO with Limine installed.
- `cargo make run`: Builds the ISO and boots it in QEMU.