Neptune OS : une personnalisation WinNT du micro-noyau seL4

La publication de la première version expérimentale du projet Neptune OS, qui diffère du projet de la distribution Linux basée sur Debian avec le même nom.

Ce système dont nous allons parler aujourd'hui se caractérise par le développement d'un plugin pour le micro-noyau seL4 avec l'implémentation des composants du noyau Windows NT, dans le but de fournir prise en charge de l'exécution d'applications Windows. 

À propos de Neptune OS

le projet jeimplémente le "NT Executive", l'une des couches du noyau Windows NT (NTOSKRNL.EXE), chargée de fournir l'API d'appel système NT Native et l'interface permettant aux pilotes de fonctionner.

Sur Neptune OS, le composant NT Executive et tous les pilotes ne s'exécutent pas au niveau du noyau, mais en tant que processus utilisateur dans un environnement basé sur le micro-noyau seL4. L'interaction du composant NT Executive avec les pilotes s'effectue via la norme seL4 IPC. Les appels système fournis permettent à la bibliothèque NTDLL.DLL de fonctionner avec une implémentation de l'API Win32 utilisée dans les applications.

 NT Executive est également responsable de l'interface du pilote du noyau Windows (connue sous le nom de modèle de pilote Windows), qui inclut des fonctionnalités telles que IoConnectInterruptIoCallDriver

Sous Windows, ceux-ci sont chargés en mode noyau et liés auNTOSKRNL.EXEimage. Dans le système d'exploitation Neptune, nous exécutons tous les pilotes du noyau Windows en mode utilisateur et ils communiquent avec le processus NT Executive via les primitives standard seL4 IPC.

L'objectif final du projet Neptune OS est d'implémenter suffisamment de sémantique NT afin que l'environnement utilisateur ReactOS puisse être porté sous Neptune OS, ainsi que la plupart des pilotes du noyau ReactOS.

En théorie, les développeurs mentionne qu'ils devraient être en mesure d'atteindre la compatibilité binaire avec des exécutables Windows natifs tant que l'implémentation proposée de l'API NT native est suffisamment fidèle.

Nous devrions également être en mesure d'atteindre un degré élevé de compatibilité du code source avec les pilotes du noyau Windows. Le principal obstacle à la compatibilité binaire des pilotes du noyau est que de nombreux pilotes du noyau Windows ne suivent pas le protocole de communication standard des pilotes Windows (c'est-à-dire qu'ils transmettent les IRP lorsqu'ils doivent appeler un autre pilote) et à la place, ils transmettent simplement des pointeurs et appellent directement d'autres contrôleurs. . Sur Neptune OS, à moins qu'il ne s'agisse d'une paire pilote-minipilote, nous exécutons toujours "kernel".

À propos de Neptune OS 0.1.0001

L'état du projet à l'heure actuelle est une version préliminaire, car nous avons jusqu'à présent été en mesure d'implémenter suffisamment de primitives NT pour charger une pile de base de pilotes de clavier, qui comprend le pilote de classe de clavier kbdclass.sys et le pilote de port. 2 i8042prt.sys, ainsi qu'une invite de commande de base ntcmd.exe, tirée du projet ReactOS.

Pratiquement aucune des commandes du shell ne fonctionne réellement, mais la pile du clavier est stable. Les versions de débogage peuvent être un peu lentes car trop de journaux de débogage sont générés.

Mais il est mentionné que ceux-ci peuvent être désactivés dans le code (vous devez pointer vers private/ntos/inc). Il est également mentionné qu'un pilote "beep.sys" a été inclus (ce qui n'a aucun sens, mais seul le développeur saura pourquoi) qui émet un son gênant dans le haut-parleur du PC et que pour l'entendre, vous devez réactiver le son (surtout si vous utilisez pulseaudio).

Tous les contrôleurs s'exécutent dans l'espace utilisateur ! L'ensemble du système tient sur une disquette et peut être téléchargé à partir de la version v0.1.0001. Vous pouvez également le construire vous-même, dont la procédure est décrite dans la section suivante.

Enfin, pour ceux qui sont intéressés à en savoir un peu plus sur le projet, vous pouvez consulter les détails dans le lien suivant.

La taille de l'image de démarrage est de 1,4 Mo et le code est publié sous la licence GPLv3.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.