Kapitel 12 von 15nullos.de

Werkzeugkette

Womit nullos heute gebaut wird – bis es sich selbst baut.

Was gebraucht wird

WasWofürVersion¹
Apple clang (Xcode / Command Line Tools)Werkzeuge für den Mac (make host), den Compiler cc und die libc bauen, GNU make21.0.0, make 3.81
llvm (Homebrew)clang für Kernel (ELF) und Bootloader (PE/UEFI)23.1.4
lldld.lld (Kernel, Programme für nullos), lld-link (Bootloader)23.1.4
qemunullos starten; bringt die UEFI-Firmware mit (edk2/OVMF, edk2-x86_64-code.fd)11.1.2
coreutilstimeout für den Boot-Test make check9.12
Rosetta 2Die x86_64-Testprogramme von cc auf dem ARM-Mac ausführen–
bash 5 (Homebrew)Gegenprobe für die Shell-Tests (ohne: gespeicherte Ergebnisse)5.3.20
python3tools/abgleich.py (Stand aller Werkzeuge), Prüfsumme im Boot-Test3.15.2
mtoolsFAT32 für die Download-Abbilder und den Platten-Boot-Test (mformat, mcopy) – bis fs das übernimmt4.0.49
xorrisodie Live-ISO1.5.8
nasmsteht in der Installationsliste, wird bisher nirgends benutzt3.02

¹ So installiert auf Max' Mac (macOS 27.0.1, Apple Silicon), nachgeschaut mit brew info und --version am 28.10.2026. Andere Versionen gehen wahrscheinlich auch – geprüft ist nur diese.

Frischer Mac – von null auf Prompt

xcode-select --install                 # Apple clang, make, git
softwareupdate --install-rosetta       # für die cc-Tests
# Homebrew von brew.sh installieren, dann:
brew install llvm lld qemu nasm mtools xorriso coreutils bash
git clone … nullos && cd nullos         # das Repo ist noch privat
make nullos-tools && make run

Die Pfade stehen oben im Makefile (LLVM, LLD, QEMU, OVMF) und lassen sich überschreiben, z. B. make run LLVM=/pfad/zu/llvm/bin, wenn Homebrew woanders liegt.

Alle make-Ziele

ZielWas
make nullos-toolsWerkzeuge gegen die nullos-libc, landen in /bin
make osBootloader + Kernel + init.img, Startpartition in build/esp
make runbauen + in QEMU starten (Fenster + serielle Konsole im Terminal)
make checkohne Fenster booten, Befehle tippen, Antworten prüfen
make hostalle Werkzeuge für den Mac
make testalle Werkzeug-Tests
make cleanbuild/ löschen
make -C cc …test stage2 stage3 tools as-cmp kernel test-arm64 stage3-arm64 test-qemu-arm64 test-qemu-riscv64 fuzz test-clang check clean
make -C libc …tools test-tools, mit TARGET=nullos für nullos

Später: nur noch eigene Werkzeuge

Der eigene Compiler cc hat Assembler und ELF-Linker eingebaut und baut schon ganz nullos allein – Kernel, libc, 280 Werkzeuge (make -C cc kernel). Er läuft sogar auf nullos und übersetzt sich dort selbst. Nur Archive (.a) schreibt noch llvm-ar. Das eigene mk versteht das Makefile schon (mk -n host = make -n host). Ziel: nullos baut sich auf nullos. kommt noch