Dear List,

I am announcing the v0.3 release [1] of Neptune OS, a Windows NT
personality built on top of the seL4 microkernel. Neptune OS implements the
upper layer of the Windows kernel (the "NT Executive") as a user space
process under seL4, providing NT-like interfaces via standard seL4 IPC
primitives to device drivers and user programs. These then allow Windows
device drivers to be ported to run as user space processes under Neptune
OS, with potentially greater degree of isolation and fault recovery than
can be achieved under a traditional macro-kernel or hybrid-kernel design.

The highlights of the v0.3 release are a bunch of computing industry
acronyms: UEFI, ACPI, PCI(E), AHCI, and NVME. We have improved upon the
basic NT PnP manager implementation we had in the previous release and
ported over the ACPI and PCI(E) drivers from ReactOS, to enable completely
dynamic discovery/enumeration, resource assignment, lifetime cycle, and
power management of hardware devices. The hope is that this will eventually
make Neptune OS suitable as a general purpose OS that must manage an
ever-changing device landscape, while still being able to leverage seL4's
strong isolation and formal guarantees.

Built upon this work, we have ported over what I hope is a reasonably
complete portion of the Windows storage device driver stack, consisting of
the class drivers (classpnp.sys, disk.sys), the storage port driver
(storport.sys), two storage miniport drivers (for AHCI and NVME), and the
partition manager (partmgr.sys) and mount-point manager (mountmgr.sys).
Among these, the class drivers as well as the AHCI miniport driver are from
the official Microsoft sample drivers [3], the NVME miniport driver is from
Open Systems Alliance [4], and storport, partmgr, and mountmgr are from
ReactOS. These drivers total an over-120K codebase and with the exception
of storport where some missing pieces had to be added due to the
incompleteness of the ReactOS implementation, are largely unmodified. I
hope the non-triviality of these drivers serves as a
convincing demonstration that our design is capable of reusing complex,
real-world Windows drivers in a microkernel-based OS (which NT had
originally hoped to be, allegedly).

I have recorded a short video [2] showing the ACPI and AHCI driver stack in
action, including device tree enumeration, power management
(reboot/poweroff), and basic shell commands. This release also includes a
basic disk IO benchmarking tool. Based on some early testing we seem to be
able to saturate the AHCI bandwidth without a problem, but NVME seems to be
underperforming. This will be part of the work going into the next release.
Additionally, due to the lack of high quality open-source Windows drivers,
a big part of the next release will be focused on designing and building a
subsystem which allows Linux drivers to run natively (without emulation) as
userspace processes on Neptune OS, so stay tuned!

[1] https://github.com/cl91/NeptuneOS/releases/tag/v0.3.0003
[2] https://www.youtube.com/watch?v=ejNeS7A5qq0
[3] https://github.com/microsoft/Windows-driver-samples/tree/main/storage
[4] https://github.com/JoeHsu092015/Windows-NVMe-driver

---
Dr. Chang Liu, PhD.
github.com/cl91/NeptuneOS
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to