Neptune OS: een WinNT-aanpassing van de seL4-microkernel

De publicatie van de eerste experimentele versie van het Neptune OS-project, die verschilt van het project van de op Debian gebaseerde Linux-distributie met dezelfde naam.

Dit systeem waar we het vandaag over zullen hebben wordt gekenmerkt door het ontwikkelen van een plug-in voor de seL4-microkernel met de implementatie van Windows NT-kernelcomponenten, met als doel: ondersteuning voor het uitvoeren van Windows-toepassingen. 

Over Neptune OS

het project ikimplementeert de "NT Executive", een van de lagen van de Windows NT-kernel (NTOSKRNL.EXE), die verantwoordelijk is voor het leveren van de NT Native systeemaanroep-API en interface voor stuurprogramma's om te werken.

Op Neptune OS, de component NT Executive en alle stuurprogramma's draaien niet op kernelniveau, maar als gebruikersprocessen in een omgeving op basis van de seL4-microkernel. De interactie van de NT Executive-component met de drivers vindt plaats via de seL4 IPC-standaard. De meegeleverde systeemaanroepen maken het voor de NTDLL.DLL-bibliotheek mogelijk om te werken met een implementatie van de Win32-API die in toepassingen wordt gebruikt.

 NT Executive is ook verantwoordelijk voor de Windows-kernelstuurprogramma-interface (bekend als het Windows-stuurprogrammamodel), die functies bevat zoals: IoConnectInterruptIoCallDriver

Op Windows worden deze in de kernelmodus geladen en gekoppeld aan deNTOSKRNL.EXEafbeelding. In het Neptune-besturingssysteem draaien we alle Windows-kernelstuurprogramma's in gebruikersmodus en communiceren ze met het NT Executive-proces via de standaard seL4 IPC-primitieven.

Het einddoel van het Neptune OS-project is om voldoende NT-semantiek te implementeren zodat de ReactOS-gebruikersomgeving kan worden geport onder Neptune OS, evenals de meeste ReactOS-kernelstuurprogramma's.

In theorie hebben de ontwikkelaars vermeldt dat ze binaire compatibiliteit moeten kunnen bereiken met native Windows-uitvoerbare bestanden, zolang de aangeboden implementatie van de native NT API getrouw genoeg is.

We zouden ook in staat moeten zijn om een ​​hoge mate van broncodecompatibiliteit te bereiken met Windows-kernelstuurprogramma's. Het belangrijkste obstakel voor het bereiken van binaire compatibiliteit van kernelstuurprogramma's is dat veel Windows-kernelstuurprogramma's niet het standaard communicatieprotocol voor Windows-stuurprogramma's volgen (d.w.z. ze passeren IRP's wanneer ze een ander stuurprogramma moeten aanroepen) en in plaats daarvan geven ze gewoon aanwijzers door en bellen ze andere controllers rechtstreeks aan . Op Neptune OS, tenzij het een driver-minidriver-paar is, gebruiken we altijd "kernel".

Over Neptunus OS 0.1.0001

De status van het project is op dit moment een voorlopige versie, aangezien we tot dusver genoeg NT-primitieven hebben kunnen implementeren om een ​​basisstapel toetsenbordstuurprogramma's te laden, waaronder het kbdclass.sys-stuurprogramma voor de toetsenbordklasse en het poortstuurprogramma. 2 i8042prt.sys, evenals een eenvoudige opdrachtprompt ntcmd.exe, overgenomen uit het ReactOS-project.

Vrijwel geen van de shell-opdrachten werkt echt, maar de toetsenbordstapel is stabiel. Debug-builds kunnen een beetje traag zijn omdat er te veel debug-logboeken worden gegenereerd.

Maar er wordt vermeld dat deze kunnen worden uitgeschakeld in de code (u moet naar private/ntos/inc verwijzen). Er wordt ook vermeld dat er een "beep.sys"-stuurprogramma werd meegeleverd (wat niet logisch is, maar alleen de ontwikkelaar zal weten waarom) dat een irritant geluid maakt in de pc-luidspreker en dat je het dempen moet opheffen om het te horen (vooral als je pulseaudio gebruikt).

Alle controllers draaien in gebruikersruimte! Het hele systeem past op één diskette en is te downloaden vanaf versie v0.1.0001. U kunt het ook zelf bouwen, de procedure wordt beschreven in de volgende sectie.

Tot slot, voor degenen die geïnteresseerd zijn om iets meer over het project te weten, kunt u de details raadplegen In de volgende link.

De grootte van de opstartkopie is 1,4 MB en de code wordt vrijgegeven onder de GPLv3-licentie.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.