Minor doc edits
This commit is contained in:
parent
af1496f6ea
commit
ac8aa25e38
@ -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.
|
@ -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/
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user