Wiki — NATALIZIOOS Personal

Documentazione della linea desktop · pre-alpha · v0.0.6

Introduzione

NATALIZIOOS Personal è un sistema operativo x86 a 32 bit scritto da zero in C e assembly NASM, senza librerie esterne. Nasce come derivazione della linea Server, da cui eredita il kernel, e se ne distacca nella destinazione d'uso: non una macchina da sala macchine, ma una scrivania.

Stato pre-alpha: gira in emulazione (QEMU) e su hardware compatibile, ma non è destinata a un uso reale. Diverse funzionalità sono incomplete e alcune aree — in particolare l'aggiornamento del kernel — hanno problemi noti documentati più sotto.

Architettura

Avvio

  • Bootloader in due stadi (MBR 512 byte + Stage2)
  • Passaggio a modalità protetta 32 bit
  • Rilevamento memoria via mappa E820
  • Kernel caricato a 1 MB, fino a 1152 settori

Nucleo

  • Gestore memoria fisica a frame da 4 KB
  • Paging con identity map dei primi 64 MB
  • Heap del kernel
  • Scheduler preemptivo su timer PIT a 100 Hz
  • Ring 3 e syscall via int 0x60

Archiviazione

  • Driver ATA PIO (lettura e scrittura)
  • VFS con RAMFS in memoria
  • N.A.T. Filesystem persistente su disco
  • Permessi in stile UNIX, utenti e gruppi

Grafica

  • Framebuffer lineare 1024×768 a 32 bpp
  • Rilevamento della scheda video via classe PCI
  • Double buffering per il desktop
  • Font bitmap proprio, icone vettoriali

Interfaccia

Accesso

Login grafico
Login grafico multi-utente. La Personal parte direttamente qui: non c'è il selettore testo/grafica della Server.

Scrivania

Desktop Personal Edition
Desktop a finestre con cartelle tematiche. Palette viola su fondo caldo, distinta dal blu-grigio della Server Edition.

Organizzazione

Le app sono raggruppate in cartelle invece di stare sparse sul desktop. Doppio click sulla cartella apre l'elenco, doppio click sulla voce lancia l'app.

CartellaContenuto
ArchivioDisk Info, NATSmart, Disk Usage, Hex View
StrumentiHardware, MemTest, Monitor, Sensors, Task List, Boot Log
SistemaSys Info, Power, PCI List, Uptime, About, CPU Info, Display, Utenti, Aspetto, Aggiornamenti, Mappa Disco
PersonaleCalendario, Cronometro, Convertitore, Note
FileFile Manager, Calculator, VFS Tree

Fuori dalle cartelle restano Terminal e Notepad, le due usate più spesso.

Le app native

Tutte scritte da zero sopra le capacità del kernel. Non sono port di software esistente: dove un dato non è realmente disponibile viene dichiarato N/A con il motivo, mai inventato.

AppIspirata aLegge davvero
Disk Infolsblk / blkiddriver ATA: settori, capacità
NATSmartsmartmontoolsattributi S.M.A.R.T. del disco
Hardwareinxi / lshwCPUID, bus PCI, tabelle ACPI
MemTestmemtestergestore memoria fisica
Monitorhtop / btopscheduler e heap
Sensorslm-sensorsMSR temperatura CPU, SMART disco
PowerpowertopCPUID leaf 6, MSR, ACPI
PCI Listlspcienumerazione reale del bus
Hex Viewxxd / GHexsettore MBR in esadecimale
Task Listps / toplista task dello scheduler
Boot Logjournalctlstato reale di PMM, heap, VFS
Uptimeuptime / wtimer PIT
VFS Treetreealbero del filesystem
Aboutneofetchversione, RAM, display
Utentigetent passwdtabella utenti interna

Differenze dalla Server Edition

AspettoServerPersonal
Avvioselettore TEXT / GUI, timeout 5 ssolo GUI, diretto
Ambientishell grafica, shell testuale, Desktop1, Desktop2solo Desktop
Shell testualemodalità di lavoro completasolo fallback d'emergenza
Accentoblu HPE RGB(56,139,224)viola RGB(150,100,220)
Sfondogrigio-blu freddoviola caldo
CartelleDischi, DiagnosticaArchivio, Strumenti
Boot screenHPE ProLiant / iLOereditato, da ridefinire

Il kernel è lo stesso. Le differenze sono di configurazione e presentazione: da qui in avanti le due linee divergeranno anche nelle funzionalità.

Storia delle versioni

v0.0.9 PRE-ALPHA Settembre 2026

Modalita' DOS: esegue programmi .COM.

Il menu di avvio ha ora tre voci — Desktop, Modalita' DOS, Aggiornamento Software — e la modalita' DOS apre una console a schermo intero con prompt C:\> e i comandi DIR, CLS, HELP, EXIT.

menu a tre voci

Il menu di avvio con la nuova voce.

Sotto c'e' un interprete 8086 scritto da zero: 162 opcode, che legge le istruzioni una per una. L'alternativa era la modalita' virtuale 8086, piu' veloce e fedele, ma avrebbe richiesto di mettere mano a isr.asm, condiviso con tutto il kernel. Un errore li' rompe l'intero sistema; l'interprete vive in un file suo e, se sbaglia, sbaglia solo il programma DOS.

Sono coperte le istruzioni comuni (trasferimenti, aritmetica, logica, stack, salti, chiamate), moltiplicazione e divisione, scorrimenti, e soprattutto le istruzioni di stringa con prefisso rep — senza quelle non gira quasi nessun programma reale. Dei servizi INT 21h ci sono tastiera, caratteri, stringhe, righe, e apertura, lettura, scrittura e chiusura di file.

HELLO.COM in esecuzione

HELLO.COM, preinstallato, eseguito dall'interprete.

Non esegue: file .EXE, grafica, accesso diretto all'hardware, istruzioni 286 e successive. Quando un programma si ferma, l'interprete riporta opcode e indirizzo esatti: serve a sapere quale istruzione aggiungere, invece di indovinare.

Limiti di sicurezza: 64 KB di memoria come un vero .COM, tetto di 20 milioni di istruzioni contro i cicli infiniti, nessun accesso fuori dal proprio segmento.

v0.0.8 PRE-ALPHA Settembre 2026

Cinque app per l'uso quotidiano.

Agenda mostra gli impegni scritti in /agenda.txt con la data di oggi dal CMOS in cima. Rubrica fa lo stesso con i contatti. Timer conta cinque minuti e a zero fa lampeggiare "TEMPO SCADUTO" in rosso. Spazio dice quanta memoria resta senza gergo tecnico. Benvenuto e' una guida rapida per chi apre il sistema la prima volta.

Agenda e Rubrica condividono una sola funzione di lettura: cambia solo il nome del file e il messaggio d'aiuto. La cartella Personale passa da 4 a 9 applicazioni.

v0.0.6 PRE-ALPHA Settembre 2026

Le prime app che non sono diagnostiche.

Le 30 ereditate dalla Server dicono tutte com'è fatta la macchina. Queste servono a farci qualcosa sopra — scelte su un criterio preciso: devono funzionare davvero con quello che il sistema ha (orologio hardware, timer, filesystem), senza fingere una rete che non c'è.

AppCosa faSu cosa si basa
Calendariomese corrente, oggi evidenziatoCMOS RTC + formula di Zeller
Cronometrominuti:secondi.centesimitimer PIT 100 Hz
Convertitorehex, binario, ottale, KB, °C→°Fcalcolo diretto
Notecontenuto di /note.txtlettura VFS

Raccolte nella nuova cartella Personale. Due scelte volute: Note non ha un editor perché ne esiste già uno (Notepad, o nano), e Convertitore non ha campi editabili — converte un valore che cambia ogni secondo, così si vede che i calcoli sono fatti davvero.

Boot animation: 12 stringhe tradotte dal linguaggio da sala macchine a quello desktop — "Loading NATALIZIOOS..." è diventato "Avvio in corso...", i passi di avvio dicono Tastiera, Mouse, Memoria invece dei nomi dei driver.

desktop con cartella Personale
Il desktop con la nuova cartella Personale
v0.0.5 PRE-ALPHA Settembre 2026

Un solo ambiente: il Desktop. Prima divergenza funzionale dalla Server, non piu' solo estetica.

  • Deprecati: shell grafica a schermo intero, emulatore di shell testuale, Desktop2. Il menu dopo il login passa da cinque voci a due — Desktop e Aggiornamento
  • Quattro ambienti che fanno cose simili hanno senso su un server, dove la shell testuale e' una modalita' di lavoro vera. Su un sistema personale sono un bivio in piu' prima di arrivare dove si voleva andare
  • I vecchi tasti 1-4 portano comunque al Desktop: chi li digitava per abitudine non resta bloccato
  • I comandi non spariscono: restano nel Terminale del Desktop, piu' la nuova app Comandi che ne mostra l'elenco sfogliabile con le descrizioni
menu a due voci
Il menu dopo il login: due voci invece di cinque
v0.0.4 PRE-ALPHA Settembre 2026

Prima versione davvero diversa dalla Server, non solo nell'aspetto.

  • Funzioni server rimosse: tolti gli 8 comandi della serie HPE (smartarray, smartstor, seaof, dynpower, servercfg, natmemory, securestart, restapi). Strumenti da sala macchine che su un sistema personale non hanno senso
  • Schermata di boot rifatta: 50 sostituzioni. "NATALIZIOOS DL360 NAT-Edition" → "Personal Edition", "System ROM: NAT-32" → "Firmware: NAT-P", "iLO 5 IPv4" → "Rete IPv4". Le checkbox di avvio elencano ora componenti reali (Grafica, Filesystem, Disco, Memoria, Tastiera, Mouse, Scheduler) invece delle feature HPE
  • Recepiti dalla Server: fix dello sfarfallio di Desktop1 (il double buffering non era mai attivo), overlay di debug uniforme con pulsante in taskbar, app Orologio e Risoluzione
login Personal
Login senza riferimenti server: "Rete IPv4" al posto di "iLO 5 IPv4"
v0.0.3 PRE-ALPHA Settembre 2026

Correzioni generali recepite dalla linea Server (v0.2.3.7).

  • Watermark senza versione: init_system_version() scriveva una stringa vuota quando il settore della versione era vuoto. Ora il valore viene validato e il watermark ha comunque un fallback sulla versione di compilazione. Rimessa l'ora di build accanto alla data
  • Rimossa una scritta di debug disegnata a metà schermo durante l'avvio
  • Overlay di debug: era sempre acceso e copriva l'angolo in alto a destra. Ora parte spento e si accende col tasto d
  • 2 nuove app: Test Tastiera (ultimo tasto e codice ASCII) e Prestazioni (iterazioni di calcolo e memoria in 10 ms — valori non confrontabili con altri sistemi, e l'app lo dichiara)
v0.0.2 PRE-ALPHA Settembre 2026

Prima versione con identità propria.

  • Rimosso il boot selector: avvio diretto in grafica
  • Palette viola, sfondo caldo, taskbar in tinta
  • Cartelle rinominate in Archivio e Strumenti
  • Corretta la finestra cartella alta 190 px: a 20 px per riga mostrava solo 7 voci su 11, e le ultime quattro app venivano disegnate fuori dai bordi
  • Corretto Desktop2 bloccato a metà schermo: il double buffering del kernel confliggeva col buffer interno di desktop2, che fa aggiornamenti parziali
v0.0.1 Settembre 2026

Allineamento alle correzioni di base della linea Server.

  • ata_write_sector non scriveva davvero: mancavano il ritardo di 400 ns dopo la selezione del drive e il controllo del bit di errore — la funzione restituiva "successo" anche quando falliva
  • Immagine disco portata a 12288 settori (6 MB): quella da 3072 era troppo piccola per aree di aggiornamento e backup senza sovrapposizioni
v0.0.0 Settembre 2026

Derivazione da v0.2.3.5.2-DEV della linea Server, scelta perché stabile e verificata. Solo cambio di identità: versione, watermark, diciture a schermo.

Compilazione ed esecuzione

Serve una toolchain che produca ELF a 32 bit (Linux o WSL):

sudo apt install build-essential gcc-multilib nasm qemu-system-x86

Poi:

make — compila
make run-gui — avvia in QEMU
make make-patch — genera un pacchetto di aggiornamento di prova

Su Windows con MSYS2 il compilatore di sistema produce eseguibili PE, non ELF: serve un cross-compiler i686-elf. Il Makefile lo rileva da solo se presente nel PATH.

Problemi noti

Roadmap

Aperta: i punti da decidere sono