Implemented msgina support for booting into NT "Native Mode" - Feedback and Directions Appreciated

All development related issues welcome

Moderator: Moderator Team

Post Reply
Posts: 1
Joined: Sun Jun 14, 2020 7:57 am

Implemented msgina support for booting into NT "Native Mode" - Feedback and Directions Appreciated

Post by BogdanV »

The Intro:
Hi all! Long time follower of the project, first time poster here.

I've been a C (AVR-C to be more precise) and C++ programmer for the past ~5 years but never actually had the courage to actually touch ReactOS,
as such this project also doubles as my "Hello ReactOS World" introduction :)

The What:
- Added a new shutdown action in MSGina and Shell32 to allow users to "Restart in NT Native Mode" (akin to Win9x's restart in MS-DOS mode of yore)
- Added the necessary Session Manager//BootExecute registry manipulation logic to set-up NativeShell to be loaded upon reboot.

The Why:
Several reasons really:
- The headless mode in Windows Server seemed more like a "hack" than a proper headless mode - an NT Native CLI feels like the proper way to do it
- A proper "root" shell - what I liked about MS-DOS mode back in the day was the power it gave you - to fix and perform changes on the system (like manually removing malicious code or running scanreg while the registry isn't being hammered by all sorts of processes) and to do it with minimal overhead and in an expedient way. There are things in NT you can't do even as Administrator, or things you can't do because you're trapped inside the win32 subsystem. Being able to quickly boot into an NT native CLI feels like a useful tool for admins and power users.
- I wanted a clean, integrated way of booting into a NT native CLI and this was a good opportunity to get my feet wet with ReactOS code
- I also wanted a reason to start learning the Native API and play around with it - working on the native CLI will allow me just that

The Questions:
- For the purposes of showing off and testing my code, I'm loading as a test binary the bastardized version of TinyKrnl's native cli (
I have absolutely no idea if you guys would ever want the feature I wrote to be a part of ReactOS (hell, I don't even know if you'd consider it of any value to the project, I just did it for fun) but nonetheless, I'd like to respect your policy on clean room reverse engineering and, although I don't know much (ie. anything really) about ReactOS's past and TinyKrnl, I don't know if I can just expand on the code from above or it would be better if I were to start my own Native CLI implementation from scratch. Most of the files seem to be Alex Ionescu's work and are under LGPL so I guess those parts of the code should be alright? There are several files which have no licensing conditions in their headers - I believe I can refactor them out and either use ROS NDK APIs directly or roll my own implementations. Would this be ok?

- I would totally love if someone could spare some time and give me some feedback on my code (github link to the diff below). As I said, this is the first time I ever did something like this and am really interested in learning more :)

The Code: ... -to-msgina

The Demo

Posts: 1101
Joined: Sun Dec 20, 2009 1:23 pm

Re: Implemented msgina support for booting into NT "Native Mode" - Feedback and Directions Appreciated

Post by oldman »

I would suggest you have a chat with the devs in mattermost.
Please keep the Windows classic (9x/2000) look and feel.
The layman's guides to - debugging - bug reporting - compiling - ISO remaster.
They may help you with a problem, so do have a look at them.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest