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 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 "server" processes. A server is a process that provides a specific
@ -54,3 +54,4 @@ Device driver assignment is performed like so:
into the process's memory space, and returns information on the new mappings into the process's memory space, and returns information on the new mappings
to the process. 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] [env.development]
PROFILE = "dev" PROFILE = "dev"
TARGETDIR = "debug" PROFILEDIR = "debug"
ARTIFACTDIR = "target/${TARGET}/${TARGETDIR}" ARTIFACTDIR = "target/${TARGET}/${PROFILEDIR}"
[env.release] [env.release]
PROFILE = "release" PROFILE = "release"
TARGETDIR = "release" PROFILEDIR = "release"
ARTIFACTDIR = "target/${TARGET}/${TARGETDIR}" ARTIFACTDIR = "target/${TARGET}/${PROFILEDIR}"
[tasks.default] [tasks.default]
alias = "run" alias = "run"
@ -77,9 +77,14 @@ args = ["build", "--profile", "${PROFILE}", "--bin", "kernel"]
[tasks.bins] [tasks.bins]
dependencies = [] dependencies = []
[tasks.initramfs] [tasks.initramfs]
condition = { files_modified = { input = [ 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)" } ], output = ["build/initramfs.tar.lzma"] }, fail_message = "(inputs unchanged)" }
dependencies = ["bins"] dependencies = ["bins"]
script = ''' script = '''
@ -97,24 +102,24 @@ script = '''
[tasks.iso] [tasks.iso]
condition = { files_modified = { input = [ condition = { files_modified = { input = [
"./target/${TARGET}/${TARGETDIR}/kernel", "${ARTIFACTDIR}/kernel",
"./limine.conf", "limine.conf",
"${LIMINEDIR}/limine-bios.sys", "${LIMINEDIR}/limine-bios.sys",
"${LIMINEDIR}/limine-bios-cd.bin", "${LIMINEDIR}/limine-bios-cd.bin",
"${LIMINEDIR}/limine-uefi-cd.bin", "${LIMINEDIR}/limine-uefi-cd.bin",
"${LIMINEDIR}/${LIMINEBIN}" "${LIMINEDIR}/${LIMINEBIN}"
], output = ["./build/gila.iso"] }, fail_message = "(inputs unchanged)" } ], output = ["build/gila.iso"] }, fail_message = "(inputs unchanged)" }
dependencies = ["kernel", "initramfs"] dependencies = ["kernel", "initramfs"]
script = ''' script = '''
mkdir -p build/iso/boot/limine mkdir -p build/iso/boot/limine
mkdir -p build/iso/EFI/BOOT 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.sys build/iso/boot/limine/
cp -f ${LIMINEDIR}/limine-bios-cd.bin 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}/limine-uefi-cd.bin build/iso/boot/limine/
cp -f ${LIMINEDIR}/${LIMINEBIN} build/iso/EFI/BOOT 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/ 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 - Valid Limine kernel
- Boots on `x86_64` - Boots on `x86_64`
- Kernel command line parameters - Kernel command line parameters
- initramfs loading
- Logging - Logging
- Serial output
### In-Progress ### 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). Then run `cargo make` to invoke the [Makefile.toml](Makefile.toml).
- `cargo make prepare`: Installs needed Rust toolchain. - `cargo make prepare`: Installs needed Rust toolchain.
- `cargo make clean`: Cleans all built binaries, libraries, and ISOs. - `cargo make clean`: Cleans all built binaries, libraries, initramfs files, and ISOs.
- `cargo make cleaniso`: Clean only files involved in building the ISO, leave the kernel and library. - `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 lib`: Builds `libgila`, the library that the kernel and user code are linked against.
- `cargo make kernel`: Builds the kernel ELF file. - `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 iso`: Builds the bootable ISO with Limine installed.
- `cargo make run`: Builds the ISO and boots it in QEMU. - `cargo make run`: Builds the ISO and boots it in QEMU.