ChrisOS Research Project Technical systems documentation

Source reference: docs/getting-started/environment.md

In this chapter

Deterministic source record. The complete textual file is reproduced below; this page does not replace architectural interpretation in the authored chapters.

File identity

Field Value
Path docs/getting-started/environment.md
Lines 109
Bytes 2998
SHA-256 8dc5619876601ab0f2b39d4ce33e128cc8a298ea3a641ffa332c45927c93d61d
ChrisOS revision 92fb561574bd929522ea005b9fd433138bea3236

Detected syntactic dependencies

Line Include
— No preprocessor include detected.

Detected symbols

Line Symbol
— No C-like function definition detected by the scanner.

Complete source

The following block is the complete textual file at the recorded revision. No lines are elided, abbreviated or paraphrased.

# Development environment

This guide describes the reference host environment used to build and test ChrisOS.

## Reference platform

The lowest-friction path is a recent **x86-64 Debian or Ubuntu Linux** installation.

The top-level build assumes GNU-style tools. The interactive <code>make run</code> target explicitly requests KVM. WSL can be useful for compilation, but interactive virtualization depends on KVM availability in that environment.

## Required tools

- GNU Make
- GCC
- GNU ld/binutils
- NASM
- xorriso
- QEMU x86-64
- Python 3
- Git

Debian/Ubuntu baseline:

~~~bash
sudo apt update
sudo apt install \
  build-essential \
  binutils \
  nasm \
  xorriso \
  qemu-system-x86 \
  qemu-utils \
  python3 \
  git
~~~

The installer integration gate also expects OVMF:

~~~bash
sudo apt install ovmf
~~~

RISC-V bring-up additionally needs a package that provides <code>qemu-system-riscv64</code>. Package names vary by distribution.

ChrisVM can use SDL when <code>sdl2-config</code> is present, but the headless tests do not require SDL.

## Verify the environment

~~~bash
./scripts/check-dev-env.sh
~~~

The script separates required tools from optional capabilities and reports whether <code>/dev/kvm</code> is usable.

A missing KVM device does not prevent host tests or normal headless QEMU gates, because those gates use TCG. It does prevent the current <code>make run</code> and <code>make run-virgl</code> recipes from working unchanged.

## Repository checkout

~~~bash
git clone https://github.com/christianrss/ChrisOS.git
cd ChrisOS
git status
~~~

Avoid committing anything under <code>build/</code>.

## Generated artifacts

| Path | Contents |
| --- | --- |
| <code>build/obj/</code> | kernel/compiler object files |
| <code>build/iso/</code> | staged ISO filesystem |
| <code>build/os.iso</code> | bootable ChrisOS image |
| <code>build/disk.img</code> | ChrisFS workspace disk |
| <code>build/host/</code> | host utilities and tests |
| <code>build/user/</code> | user-mode test binaries |
| <code>build/chrisvm/</code> | ChrisVM executable, tests and guest fixtures |

Use <code>make clean</code> to remove generated output.

## Optional capabilities

### KVM

~~~bash
test -r /dev/kvm -a -w /dev/kvm && echo "KVM usable" || echo "KVM unavailable"
~~~

### VirGL/OpenGL

VirGL testing depends on the host QEMU build, an OpenGL-capable display backend and, on some hosts, a usable DRM render node. <code>make test-qemu-virgl</code> detects unsupported hosts and skips instead of treating absence of host VirGL as a guest failure.

### RISC-V

<code>make riscv</code> uses Clang/LLD with a RISC-V target. <code>make run-riscv</code> additionally requires <code>qemu-system-riscv64</code>.

## Before opening a build issue

~~~bash
./scripts/check-dev-env.sh
gcc --version
ld --version | head -n 1
nasm -v
qemu-system-x86_64 --version | head -n 1
git rev-parse HEAD
~~~

Include the exact make target and the first relevant error, not only the final make exit code.

Role of this record

The atlas guarantees file-by-file traceability. Responsibility, invariants, ownership, concurrency, security, performance and subsystem interactions belong in authored chapters and must cite this file when applicable.

Document record
ID: source-8dc5619876601ab0 Reviewed source: 92fb561574bd Class: generated-source-reference