Windows est-il conforme à la norme POSIX ?


La réponse rapide est oui à un moment donné pour répondre à la norme FIPS-151 et répondre à un Bid de l'Air Force, Microsoft s'est assuré que Windows était bien conforme à POSIX. Bien que je ne pense pas que Microsoft ait maintenu la certification dans les éditions ultérieures, après la dépréciation. Dans Windows 10, ils en ont ramené une grande partie avec une saveur Linux, bien que je ne pense pas qu'ils aient pris la peine de recertifier.

La réponse longue est la suivante..... À la fin des années 1990, le gouvernement américain, avec la norme FIPS-151, a exigé que tous les systèmes vendus au gouvernement américain soient conformes à "POSIX" [les détails d'une grande partie de cela sont explicités dans le livre de John Quarterman's UNIX, POSIX, et les systèmes ouverts]. À un moment donné, après la publication de FIPS-151, l'US Air Force a fait une offre que DEC et Microsoft voulaient poursuivre avec NT/Alpha. Microsoft/DEC (qui n'avait achevé que l'interface *.1 avec son sous-système Posix), a remporté l'appel d'offres. Unisys a intenté un procès en disant que ce sous-système *.1 seulement ne correspondait pas à l'esprit de l'exigence. La défense de Microsoft était qu'ils avaient construit l'API et qu'ils permettaient à des tiers de faire le travail de l'espace utilisateur, puisque leur propre espace utilisateur était Windows et son Win32API. En fin de compte, Microsoft/DEC a été autorisé à procéder à condition qu'une tierce partie semble combler ce trou avant une certaine date (j'ai oublié les détails). En effet, ils étaient tenus de produire un système NT basé sur POSIX pleinement fonctionnel à ladite date.


Pour répondre à cette exigence, Microsoft a passé un accord avec une petite entreprise (Softway Systems) pour développer le même qui a été publié comme le produit "Interix" de Softway. Qui, en fait, n'était pas nul. Pour les vrais types d'UNIX comme moi, cela a rendu Windows supportable et franchement, il y a moins d'étrangeté que les efforts ultérieurs d'UNIX pour Windows (ce qui est une autre conversation) parce que la solution Softway vit réellement côte à côte avec Windows, et appelle directement le noyau NT. elle n'utilise pas l'API de Windows sous les couvertures (Cygin, UWIN, et al - s'assoient sur le dessus du Win32S donc sont finalement limités aux fonctionnalités et conventions que Windows fournit sous les couvertures).


Les gens de Softway avaient en fait des sources de NT de Microsoft et ont ajouté quelques API manquantes (par exemple le système de fichiers de NT a toujours supporté les hard et softlinks, mais Win32S n'a pas d'appels pour les créer). Les corrections ont ensuite été reprises et diffusées dans les mises à jour de Windows selon les besoins. Les commandes ont été principalement prises de FreeBSD et gnu selon les besoins, et toutes les exigences "open source" ont été respectées - en ce sens que tout ce que Softway avait pris avec une GPL a été mis à disposition (ce qui n'était que du code d'espace utilisateur, comme gcc et ses bibliothèques).

En tant qu'utilisateur, cela signifiait que vous pouviez compiler exécuter du code POSIX comme prévu sans véritable mappage. Le principal problème lors du "portage" de code à partir d'un "vrai UNIX" tel que Solaris, Tru64 ou une distro Linux ; tendait à être que le système de fichiers NT supporte un modèle de sécurité différent de celui requis par POSIX et que les API POSIX n'ont pas les moyens de supporter certaines de ces fonctionnalités.

Enfin, Microsoft a acheté Softway et a apporté le produit Interix en interne et l'a publié sous le nom de SFU - Services for Unix, puis l'a renommé SUA - Subsystem for UNIX-based Applications. Cependant, dans Windows 8, SUA a été déprécié, puis plus tard supprimé de Windows 8.1.

À partir de Windows 10, Microsoft a publié WSL - Windows Subsystem for Linux, qui a ressuscité le sous-système, mais en travaillant avec Canonical, faire de l'API une API Linux et les commandes basées sur les versions Linux. L'émulation du noyau était "clean room" et basée sur le code précédent, donc rien de tout cela n'est entaché par la GPL. Mais tout ce qui se trouve dans l'espace utilisateur et qui utilise la GPL est à nouveau disponible au téléchargement selon les licences GPL. Vous pouvez recompiler localement, bien que je pense que l'intention était que les binaires de l'espace utilisateur provenant d'une image Ubuntu 14.04 soient censés pouvoir fonctionner tels quels sous le sous-système. Les changements dans le code de l'espace utilisateur est vraiment de faire la commande interagir d'une manière qui est plus facile d'utiliser la base NTFS et de vivre raisonnablement sur le même uKernel côte à côte avec un sous-système Win10.