ОС Neptune: налаштування WinNT мікроядра seL4

Публікація першої експериментальної версії проекту Neptune OS, яка відрізняється від проекту о дистрибутив Linux на базі Debian з такою ж назвою.

Це система, про яку ми сьогодні поговоримо характеризується розробкою плагіна для мікроядра seL4 з реалізацією компонентів ядра Windows NT, з метою надання підтримка запуску програм Windows. 

Про ОС Нептун

проект яреалізує "NT Executive", один із рівнів ядра Windows NT (NTOSKRNL.EXE), відповідальний за забезпечення API системного виклику NT Native та інтерфейсу для роботи драйверів.

В ОС Neptune компонент NT Executive і всі драйвери не запускаються на рівні ядра, sino як процеси користувача в середовищі на основі мікроядра seL4. Взаємодія компонента NT Executive з драйверами здійснюється через стандарт seL4 IPC. Надані системні виклики дозволяють бібліотеці NTDLL.DLL працювати з реалізацією Win32 API, що використовується в програмах.

 NT Executive також відповідає за інтерфейс драйвера ядра Windows (відомий як модель драйвера Windows), який включає такі функції, як IoConnectInterruptIoCallDriver

У Windows вони завантажуються в режимі ядра і пов’язуються з файломNTOSKRNL.EXEзображення. В ОС Neptune ми запускаємо всі драйвери ядра Windows в режимі користувача, і вони взаємодіють з процесом NT Executive за допомогою стандартних примітивів IPC seL4.

Кінцева мета з проекту Neptune OS полягає у реалізації достатньої кількості семантики NT щоб середовище користувача ReactOS можна було перенести під Neptune OS, а також більшість драйверів ядра ReactOS.

Теоретично розробники згадує, що вони повинні мати можливість досягти бінарної сумісності з нативними виконуваними файлами Windows, якщо запропонована реалізація рідного NT API є достатньо вірною.

Ми також повинні мати можливість досягти високого ступеня сумісності вихідного коду з драйверами ядра Windows. Основною перешкодою для досягнення бінарної сумісності драйверів ядра є те, що багато драйверів ядра Windows не дотримуються стандартного протоколу зв'язку драйверів Windows (тобто вони передають IRP, коли їм потрібно викликати інший драйвер), а замість цього вони просто передають вказівники та безпосередньо викликають інші контролери. . В ОС Neptune, якщо це не пара драйвер-мінідрайвер, ми завжди запускаємо «ядро».

Про Neptune OS 0.1.0001

Стан проекту на даний момент є попередньою версією, оскільки нам до цього часу вдалося реалізувати достатньо примітивів NT, щоб завантажити базовий стек драйверів клавіатури, який включає драйвер класу клавіатури kbdclass.sys і драйвер порту. PS/ 2 i8042prt.sys, а також базовий командний рядок ntcmd.exe, взятий з проекту ReactOS.

Навряд чи будь-яка з команд оболонки справді працює, але стек клавіатури стабільний. Збірки налагодження можуть бути повільними, оскільки створюється занадто багато журналів налагодження.

Але згадується, що їх можна вимкнути в коді (ви повинні вказати на private/ntos/inc). Також згадується, що був включений драйвер "beep.sys" (що не має сенсу, але тільки розробник знає чому), який видає дратівливий звук у динаміку ПК, і щоб його почути, ви повинні ввімкнути звук (особливо якщо ви використовуєте pulseaudio).

Усі контролери працюють у просторі користувача! Вся система поміщається на одній дискети і може бути завантажена з версії v0.1.0001. Ви також можете побудувати його самостійно, процедура якого описана в наступному розділі.

Нарешті, для тих, кому цікаво дізнатися трохи більше про проект, ви можете ознайомитися з деталями У наступному посиланні.

Розмір завантажувального образу становить 1,4 МБ, а код випущено під ліцензією GPLv3.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.