Update README.

This commit is contained in:
Drew Galbraith 2023-12-05 17:02:16 -08:00
parent f1c67d88ed
commit 594a6aac54
1 changed files with 21 additions and 10 deletions

View File

@ -8,33 +8,44 @@ memory management, process scheduling, and hardware access.
## Directory Structure
The subdirectories of the project are as follows:
- **zion**: Contains kernel code as well as a couple headers that user space uses to interface with the kernel.
- **zion**: Contains kernel code as well as a couple headers that user space uses to interface with
the kernel.
- **lib**: Library code used by the kernel and user space.
- **sys**: System services.
- **sysroot**: Files that are copied to the root filesystem.
- **toolchain** and **scripts**: Contain tooling for the cross-compile environment.
- **yunq**: Contains the El Yunque IDL used for IPC between processes in userspace.
Where available, further documentation about each of these components can be found in the README files in each respective subdirectory.
Where available, further documentation about each of these components can be found in the README fi
les in each respective subdirectory.
## Building AcadiaOS
Run `./scripts/build_toolchain.sh` to build a gcc cross-compile toolchain for the project. (Takes a long time.)
Run `./scripts/build_toolchain.sh` to build a gcc cross-compile toolchain for the project. This
step may take a long time (~5 mins on my new laptop, ~45 mins on my 2013 laptop).
Change into the `build-dbg` directory.
Run `./init-dbg.sh` to initialize the CMake project.
Run `ninja qemu` to build and run AcadiaOS in a VM.
Run `./scripts/qemu.sh` to build and run AcadiaOS in a VM. I usually run this from the `builddbg`
directory so it is easier to run `ninja clean` when necessary (for instance when updating yunq
files).
### System Dependencies
TODO
On arch linux I require the following packages to build this project:
`base-devel limine dosfstools parted cmake ninja qemu-desktop qemu-system-x86`
## Boot Process
AcadiaOS uses the limine bootloader to enter into a 64-bit kernel in the negative 2GB address space (mcmodel kernel).
AcadiaOS uses the limine bootloader to enter into a 64-bit kernel in the negative 2GB address space
(mcmodel kernel).
The Zion kernel then sets up interrupts, scheduling, and memory management before passing off control to the Yellowstone process.
The Zion kernel then sets up interrupts, scheduling, and memory management before passing off
control to the Yellowstone process.
The kernel passes capabilities to the Denali and VictoriaFalls binaries to the Yellowstone process to allow it to manage the rest of the boot process.
The kernel passes capabilities to the Denali and VictoriaFalls binaries to the Yellowstone process
to allow it to manage the rest of the boot process.
The Yellowstone, Denali, and VictoriaFalls processes are all passed at boot using limine modules, however any subsequent processes will be loaded off disk.
The Yellowstone, Denali, and VictoriaFalls processes are all passed at boot using limine modules,
however any subsequent processes are loaded off disk.