È stato pubblicato il primo rilascio sperimentale del progetto Neptune OS, che sviluppa un'interfaccia sopra il microkernel seL4 con l'implementazione di componenti del kernel di Windows NT, mirata a fornire supporto per l'esecuzione di applicazioni Windows. Il codice è distribuito sotto licenza GPLv3.
Il progetto implementa il "NT Executive", uno dei livelli del kernel di Windows NT (NTOSKRNL.EXE), responsabile della fornitura di API per le chiamate di sistema NT Native e dell'interfaccia per i driver. In Neptune OS, il componente NT Executive e tutti i driver vengono eseguiti non a livello kernel, ma sotto forma di processi utente in un ambiente basato sul microkernel seL4. L'interazione del componente NT Executive con i driver avviene tramite l'IPC standard di seL4. Le chiamate di sistema fornite permettono di garantire il funzionamento della libreria NTDLL.DLL con l'implementazione dell'interfaccia di programmazione Win32, utilizzata nelle applicazioni.
La prima versione di Neptune OS include il driver della tastiera (kbdclass.sys), il driver della porta PS/2 (i8042prt.sys), il driver per il segnale acustico (beep.sys) e l'interprete della riga di comando (ntcmd.exe), trasferiti da ReactOS e in grado di dimostrare i principi di base dell'organizzazione del lavoro. La dimensione dell'immagine di avvio è di 1.4 MB.
L'obiettivo finale è portare il livello a uno stato sufficiente per il porting dell'ambiente utente e dei driver di ReactOS. Gli sviluppatori stanno anche esplorando la possibilità di raggiungere la compatibilità binaria con i file eseguibili di Windows e una compatibilità accettabile a livello di codice sorgente con i driver del kernel di Windows.
Il principale ostacolo nel garantire il supporto per i driver di Windows è l'uso, nella maggior parte dei driver del kernel di Windows, di un protocollo di comunicazione non standard quando interagiscono con altri driver, richiedendo il passaggio diretto di puntatori, cosa che non può essere realizzata in Neptune OS a causa dell'esecuzione dei driver in processi separati.
Fonte: opennet.ru
