# FoundryOS

## Cloning
```sh
git clone https://git.zxq5.dev/OsDev/FoundryOS.git
```

## Build dependencies

* latest rust nightly release
* all necessary rust components installed
* xorriso: creates ISO images to be booted from.
* (Optional / Recommended) qemu: to run the kernel. (this may be packaged as qemu-desktop)
* (Optional) GDB: for debugging the kernel.

```sh
rustup update
rustup override set nightly
rustup component add rust-src
rustup component add llvm-tools-preview
```

## Building & Running in qemu
```sh
cargo run
```

## Running in GDB
```sh
USE_GDB=1 cargo run
```

## Build errors

If you see a qemu error like this:

```
qemu-system-x86_64: -drive if=pflash,format=raw,readonly=on,file=<...>/OVMF_CODE.fd: Could not open '<...>/OVMF_CODE.fd': No such file or directory
```

Simply delete the ./build directory and try to rebuild the program. Using the runner script or `cargo run` will download the required files for you, this is because the script only checks for the presence of one file and not the VARS file.

Alternatively, you may disable using a UEFI firmware with qemu like so:
```sh
USE_LEGACY_BIOS=1 cargo run
```

## Debugging

See [debugging](docs/Debugging/DEBUGGING.md) for some help with this, including commands to help with disassembly.

If you have any other issues, feel free to create an issue or a PR.