noxos (docs): merged 'Build Instructions' docs from .wiki
This commit is contained in:
parent
90fb3069fb
commit
937c472656
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
title: "Build Instructions"
|
||||||
|
summary: "Instructions for setting up the workspace and building noxos"
|
||||||
|
---
|
||||||
|
|
||||||
|
**DISCLAIMER:** To build this project you need a linux system (WSL could work for windows users, but I haven't tested it)
|
||||||
|
|
||||||
|
First you need to clone the repository:
|
||||||
|
|
||||||
|
`git clone https://git.nerdcult.net/noxos/kernel`
|
||||||
|
|
||||||
|
then there are a few tools required, that need to be installed:
|
||||||
|
* **gcc** - compiler
|
||||||
|
* **ld** - linker
|
||||||
|
* **nasm** - assembler
|
||||||
|
* **cmake** - build system
|
||||||
|
* **xorriso** - ISO creation tools
|
||||||
|
* **qemu** - emulator
|
||||||
|
* **ovmf** - UEFI firmware
|
||||||
|
|
||||||
|
you can check if you have all tools installed, with `./build.sh check`.
|
||||||
|
|
||||||
|
There is a shell script to setup the workspace and compile.
|
||||||
|
Just run it using the following commands:
|
||||||
|
```bash
|
||||||
|
cd noxos
|
||||||
|
./build.sh
|
||||||
|
```
|
||||||
|
If the Bootloader ([limine](https://github.com/limine-bootloader/limine)) isn't downloaded yet, the script will download it.
|
||||||
|
|
||||||
|
The final ISO file will be written to the *build* directory.
|
||||||
|
|
||||||
|
To launch the ISO, run the `run.sh` script.
|
||||||
|
|
||||||
|
# BIOS Emulation
|
||||||
|
To emulate a BIOS system, you can run `./run.sh bios`.
|
||||||
|
|
||||||
|
# Debugging
|
||||||
|
## Logs
|
||||||
|
When running through the script, qemu is configured to write the kernels logs to *STDOUT* and a file called *noxos.log*.
|
||||||
|
|
||||||
|
## GDB
|
||||||
|
You can connect GDB to qemu.
|
||||||
|
To achieve this, run `./run.sh debug`.
|
||||||
|
QEMU will wait until you connect GDB to it as a 'remote' target on `localhost:1234`.
|
||||||
|
```bash
|
||||||
|
gdb build/cmake/kernel/kernel
|
||||||
|
target remote localhost:1234
|
||||||
|
c
|
||||||
|
```
|
||||||
|
(note, that the last to commands have to be 'executed' in gdb not in your shell)
|
Reference in New Issue