1.9 KiB
1.9 KiB
Building MontaukOS
Build Dependencies
Toolchain
| Dependency | Purpose |
|---|---|
gcc / g++ |
C/C++ compiler (C++20, GNU11) |
nasm |
x86_64 assembly |
make |
Build system |
git |
Fetching dependencies (Limine, freestanding headers, cc-runtime) |
curl or wget |
Downloading limine.h header |
ISO/Disk Image Creation
| Dependency | Purpose |
|---|---|
xorriso |
Creating bootable ISO images |
mtools |
Creating FAT-formatted HDD images (mformat, mcopy, mmd) |
gdisk |
GPT partitioning for HDD images (sgdisk) |
Running in QEMU
| Dependency | Purpose |
|---|---|
qemu-system-x86-64 |
x86_64 emulation |
ovmf |
UEFI firmware for QEMU |
For other architectures, install the corresponding QEMU system emulator (qemu-system-aarch64, qemu-system-riscv64, etc.).
Ubuntu / Debian
Install all build dependencies with:
sudo apt install build-essential nasm git curl xorriso mtools gdisk qemu-system-x86 ovmf
build-essential provides gcc, g++, and make.
Building
-
Clone the repository:
git clone https://github.com/danihamm/MontaukOS.git cd MontaukOS -
Build the ISO:
makeThis will automatically fetch dependencies (Limine bootloader, freestanding headers, cc-runtime) and produce an ISO image.
-
Run in QEMU:
make run
Other Targets
| Target | Description |
|---|---|
make all-hdd |
Build a raw HDD image instead of ISO |
make run-hdd |
Run the HDD image in QEMU |
make run-bios |
Run in QEMU with legacy BIOS (x86_64 only) |
make clean |
Remove build artifacts |
make distclean |
Remove everything including downloaded dependencies |
Cross-Architecture Builds
To build for a different architecture, pass ARCH=:
make ARCH=aarch64
make ARCH=riscv64
make ARCH=loongarch64