I'm pretty sure you can use only public interfaces to implement this subsystem. You can do quite a lot to NT via the public interfaces, and it helps that the stuff in the linux subsystem basically only needs to work with itself (i.e. you don't need to send signals to Windows processes... but even if you needed to, you could use public interfaces to do that from the kernel...)