Publikacja pierwszej eksperymentalnej wersji projektu Neptune OS, która różni się od projektu dystrybucja Linuksa oparta na Debianie o tej samej nazwie.
Ten system, o którym dzisiaj porozmawiamy charakteryzuje się opracowaniem wtyczki dla mikrojądra seL4 z implementacją komponentów jądra Windows NT, w celu zapewnienia: wsparcie dla uruchamiania aplikacji Windows.
O Neptune OS
projekt jarealizuje „Kierownik NT”, jedna z warstw jądra Windows NT (NTOSKRNL.EXE), odpowiedzialna za dostarczanie API wywołań systemowych NT Native oraz interfejs do pracy sterowników.
W systemie operacyjnym Neptune komponent NT Executive i wszystkie sterowniki nie działają na poziomie jądra, ale jako procesy użytkownika w środowisku opartym o mikrojądro seL4. Interakcja komponentu NT Executive ze sterownikami realizowana jest poprzez standard seL4 IPC. Dostarczone wywołania systemowe umożliwiają współpracę biblioteki NTDLL.DLL z implementacją interfejsu Win32 API używanego w aplikacjach.
NT Executive jest również odpowiedzialny za interfejs sterownika jądra Windows (znany jako model sterownika Windows), który zawiera takie funkcje, jak
IoConnectInterrupt
yIoCallDriver
.W systemie Windows są one ładowane w trybie jądra i połączone z
NTOSKRNL.EXE
obraz. W systemie operacyjnym Neptune uruchamiamy wszystkie sterowniki jądra systemu Windows w trybie użytkownika i komunikują się one z procesem NT Executive za pomocą standardowych prymitywów seL4 IPC.
Cel końcowy z projektu Neptune OS jest zaimplementowanie wystarczającej semantyki NT aby środowisko użytkownika ReactOS mogło być przeniesione pod system operacyjny Neptune, a także większość sterowników jądra ReactOS.
W teorii twórcy wspomina, że powinny być w stanie osiągnąć zgodność binarną z natywnymi plikami wykonywalnymi Windows, o ile oferowana implementacja natywnego API NT jest wystarczająco wierna.
Powinniśmy również być w stanie osiągnąć wysoki stopień zgodności kodu źródłowego ze sterownikami jądra systemu Windows. Główną przeszkodą w osiągnięciu binarnej kompatybilności sterowników jądra jest to, że wiele sterowników jądra systemu Windows nie przestrzega standardowego protokołu komunikacyjnego sterownika systemu Windows (tj. przekazują IRP, gdy muszą wywołać inny sterownik), a zamiast tego po prostu przekazują wskaźniki i bezpośrednio wywołują inne kontrolery . W systemie operacyjnym Neptune, o ile nie jest to para sterownik-ministerownik, zawsze uruchamiamy „jądro”.
Informacje o systemie operacyjnym Neptuna 0.1.0001
Stan projektu w tej chwili jest wersją wstępną, ponieważ do tej pory byliśmy w stanie zaimplementować wystarczającą liczbę prymitywów NT, aby załadować podstawowy stos sterowników klawiatury, który zawiera sterownik klasy klawiatury kbdclass.sys i sterownik portu. 2 i8042prt.sys, a także podstawowy wiersz poleceń ntcmd.exe, zaczerpnięty z projektu ReactOS.
Prawie żadne z poleceń powłoki nie działa, ale stos klawiatury jest stabilny. Kompilacje debugowania mogą być nieco powolne, ponieważ generowanych jest zbyt wiele dzienników debugowania.
Wspomniano jednak, że można je wyłączyć w kodzie (należy wskazać private/ntos/inc). Wspomniano również, że dołączono sterownik „beep.sys” (co nie ma sensu, ale tylko programista będzie wiedział dlaczego), który wydaje denerwujący dźwięk w głośniku komputera i że aby go usłyszeć, należy wyłączyć wyciszenie (zwłaszcza jeśli używasz pulseaudio).
Wszystkie kontrolery działają w przestrzeni użytkownika! Cały system mieści się na jednej dyskietce i można go pobrać od wersji v0.1.0001. Możesz go również zbudować samodzielnie, procedura jest opisana w następnej sekcji.
Wreszcie, dla tych, którzy chcą dowiedzieć się czegoś więcej o projekcie, możesz zapoznać się ze szczegółami W poniższym linku.
Rozmiar obrazu rozruchowego wynosi 1,4 MB, a kod jest wydany na licencji GPLv3.