Announcing release v0.3 of Neptune OS, a Windows NT personality for seL4
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
participants (1)
-
Dr. Chang Liu, PhD.