Per la distro Linux servono bash, curl, make, gcc, cpio, gzip, xorriso, grub-mkrescue e qemu-system-x86_64. Per il prototipo Zlang servono inoltre python3, binutils e il repository Zlang affiancato oppure la variabile ZLANGC.
./distro/build.sh
Il processo scarica un kernel Linux bootstrap e BusyBox, crea un root filesystem, copia init, account e gruppi, genera un initramfs e costruisce lâISO GRUB in distro/build/zdos-linux-x86_64.iso.
Il kernel bootstrap è deliberatamente esplicito nello script. Per una release riproducibile, fornire un kernel costruito localmente:
ZDOS_KERNEL=/path/to/bzImage ./distro/build.sh
./distro/test-qemu.sh
Il test cerca il marker ZDOS_READY. Per una sessione interattiva:
qemu-system-x86_64 \
-cdrom distro/build/zdos-linux-x86_64.iso \
-serial stdio -display none -no-reboot
Per provare il disco dati opzionale:
qemu-img create -f raw distro/build/zdos-data.img 128M
qemu-system-x86_64 \
-cdrom distro/build/zdos-linux-x86_64.iso \
-drive file=distro/build/zdos-data.img,format=raw,if=virtio \
-serial stdio -display none
Il supporto /dev/vda1 richiede una partizione e un filesystem validi; un file raw vuoto viene documentato come esempio di laboratorio, non come installer completo.
git clone https://github.com/high-cde/Zlang.git ../Zlang
cd os/x86_64
make clean
make verify
sh tools/verify_qemu.sh
Con un compilatore in un percorso diverso:
ZLANGC=/path/to/zlangc.py sh tools/verify_qemu.sh
Il workflow validate-x86_64.yml esegue due controlli separati. Il job bare-metal fa checkout di ZDOS e Zlang, verifica il contratto ZLB2 v2.5, controlla Multiboot2, crea la ISO e controlla lâoutput seriale in QEMU. Il job web-contract verifica shell, PHP e risposta HTTP della telemetria locale. Un fallimento va diagnosticato distinguendo tra dipendenze, compilazione, packaging GRUB, marker runtime e contratto web.
| Sintomo | Causa probabile | Azione |
|---|---|---|
zlangc.py not found |
Zlang non è affiancato o ZLANGC è errato |
Clonare Zlang in ../Zlang o impostare ZLANGC |
grub-mkrescue: command not found |
Mancano GRUB/xorriso | Installare grub-pc-bin, grub-common e xorriso |
ZDOS: output di boot incompleto |
Programma Zlang o runtime non emette il marker | Confrontare boot.zlang, kernel.c e il log QEMU |
| ISO non avviabile | Packaging GRUB o immagine incompleta | Eseguire make clean, ricostruire e verificare Multiboot2 |
Network: not configured |
QEMU non ha una NIC disponibile o DHCP non risponde | Controllare eth0, udhcpc e la rete del guest |
Persistence: live-only |
/dev/vda1 assente o non montabile |
Collegare un disco con partizione e filesystem validi |
LOCAL_STATUS_ONLY |
Il backend web non verifica Tor o cifratura | Ă lo stato corretto del laboratorio; configurare e testare il deployment prima di dichiarare sicurezza |
php -l fallisce |
PHP CLI assente o errore nel backend | Installare php-cli e correggere prima di pubblicare |
Prima di pubblicare una release, eseguire git diff --check, la build Linux, il test QEMU, la verifica bare-metal, il workflow CI e un controllo manuale dei link Markdown. Non includere distro/build/, ISO, initramfs o file generati nel commit: gli artefatti devono essere prodotti dalla pipeline, non trattati come sorgenti.
La documentazione deve usare verbi proporzionati alla prova: âimplementatoâ quando il codice esiste, âverificatoâ quando un test riproducibile passa, âsperimentaleâ quando il percorso è incompleto e âroadmapâ quando non è ancora disponibile. Questa policy è parte dellâarchitettura ZDOS.