Questo percorso costruisce un’immagine ISO bootabile in QEMU. L’immagine contiene un kernel bare-metal x86_64, una console seriale COM1 e un runtime Zlang minimo che esegue un programma incorporato durante il boot.

Sono necessari gcc, ld, make, python3, grub-mkrescue, xorriso e qemu-system-x86_64. Il compilatore Zlang viene cercato, per impostazione predefinita, nel clone affiancato ../../../../Zlang/tools/zlangc.py rispetto a questa directory; il percorso può essere sovrascritto con la variabile ZLANGC.
Dalla directory os/x86_64:
make clean
make all
La sequenza costruisce il seguente percorso:
| Passaggio | Input | Output |
|---|---|---|
| Compilazione Zlang | programs/boot.zlang |
build/programs/boot.zlb e header C incorporato |
| Compilazione kernel | bootstrap assembly e C freestanding | build/zdos.elf |
| Packaging bootabile | kernel ELF e configurazione GRUB | build/zdos-x86_64.iso |
Per verificare che il kernel sia caricato da GRUB con Multiboot2:
make verify
Per avviare manualmente l’ISO in QEMU e osservare COM1 sulla console:
make run
Per eseguire la prova end-to-end automatica:
sh tools/verify_qemu.sh
L’esito positivo deve contenere ZDOS x86_64 bootstrap, Zlang runtime ZLB2 v2.5 ready, ZDOS: native Zlang program executed e ZDOS: Zlang halted cleanly.
Per comprendere il flusso, il formato bytecode e i confini tra programma, runtime e kernel, segui il Laboratorio ZDOS x86_64 + Zlang. La guida include esercizi riproducibili, esempi negativi e la progressione teorica verso capacità future.
Il profilo corrente è ZLB2 v2.5. Il compilatore accetta emit, let, if, label e wait; il runtime bootstrap esegue emit, valida tutti i record riconosciuti e attraversa in sicurezza le istruzioni non ancora eseguite.
emit Testo da inviare alla console seriale
let node_id = 2026
if node_id == 2026 jump secure
secure:
wait
Righe vuote e commenti con # sono ignorati. Ogni altra sintassi viene rifiutata dal compilatore con exit status non-zero. Il runtime nel kernel convalida magic, versione, opcode, lunghezze e terminazione; non esegue bytecode sconosciuto.
Questo è un prototipo di distribuzione bare-metal avviabile, non un sistema operativo generale. Non include ancora processo utente, scheduling, filesystem, driver, rete, multitasking, isolamento di memoria, caricamento ELF, package manager o syscall pubbliche. Il programma Zlang è incorporato nel kernel per dimostrare una catena nativa verificabile; un loader di programmi esterni è un passo futuro, non una funzionalità già disponibile.
I tag v* attivano il workflow release-x86_64.yml. Il workflow ricostruisce l’ISO da zero, verifica il formato Multiboot2, esegue il boot end-to-end in QEMU e pubblica ISO, checksum SHA-256 e manifest nella release GitHub. Per uso locale, il checksum può essere generato con:
cd build
sha256sum zdos-x86_64.iso > zdos-x86_64.iso.sha256
L’immagine è adatta a QEMU e a prove hardware x86_64 compatibili con GRUB/Multiboot2. Non contiene un installer, non modifica dischi e non esegue azioni di rete o telemetria.