Hello, first post here!
I have a bit of background in OS development, I made something like CP/M, and I have done some low level work before that, I'm into Embedded Development, compilers, and such. The OS use to have a fairly arbitrarily sized file system, but I had to remove it due to a bug so I could get it in on time, much to my dismay
I wanted to propose an idea and how one might go about it: a Windows/Windows-like subsystem for GNU/Linux akin to the Windows Subsystem For Linux. WSL (when Vmmem is restricted properly at least) seems to be more efficient than running a full-fledged VM on something like VMWare or VirtualBox.
One could think that WINE sort-of serves this purpose, but WINE, WINETRICKS, etc. is kinda a mess of a process to use.
Microsoft also found in creating WSL2 that performance was actually improved using a VM over WSL1 which took an approach much like WINE and mapped Linux Kernel calls to the WinAPI.
Im not sure what makes WSL2 so efficient, it does not really seem to lag, maybe its because the OS is being run in headless mode. Even when I run some light graphical applications though, it still seems to work quite nicely with little overhead.
I also saw these two projects [1][2] on GitHub, and of course there are also things like Valve's Proton, don't know how the overhead is with those ladder two, but it really makes me wonder how feasible a general purpose, low-overhead "subsystem" to run windows programs and run a windows shell would be on GNU/Linux.
I imagine we could pick on one dimension to either use: a VM, an OCI container, or a more cohesive Proxy Layer (like WINE, but this approach is still very much in development and to my perception somewhat disjointed/"glued" together, a fresh VM/OCI image from scratch may be better)
On another dimension we could aim to: use a lightweight/de-bloated Official Windows or Modified Windows image, or create something more Libre/Open Source, or some combination of both.
In the Libre case I think existing work could be integrated into the project. Perhaps something like React OS or Greentea OS/Tofita could be used as a base (contributing back to the core functionality of these projects, implementing things like NTFS perhaps).
This is mostly just interesting speculation, I don't think I actually plan to do thus, but I just wanted to speculate (again the goal being a way to run Windows programs on GNU/Linux, with little overhead, with a windows shell, in a cohesive way, akin to Windows Subsystem for Linux)
Gracias
- TFB
Designing a Linux Subsystem For Windows
-
- Posts: 1
- Joined: Wed Feb 09, 2022 12:05 am
- Libera.chat IRC: TheFloatingBrain
-
- Member
- Posts: 43
- Joined: Sun Aug 20, 2017 10:59 am
Re: Designing a Linux Subsystem For Windows
WSL2 works using Hyper-V, because the windows kernel includes a 'level 0 hypervisor'.
It justs runs the linux kernel as a "subsystem" in Hyper-V ; in facts i think that other modules "subsystems" of windows are ran through hyper-v for better isolation and security.
Doing the same on linux would be using kvm to run the windows kernel and libc/winapi/etc.
There are 2 major issues with that :
- The windows kernel and libraries are not free, so you would not have the right nor the ability to do that
- I think most people want to run shell linux application but graphical windows applications, and graphics in VMs is a major issue ; this might be solved soon with Intel support for SR-IOV in Iris Xe graphics card (and GVT-G which worked before 9th gen). Virtualization of graphics card will be coming eventually i think, but for now it is limited to professional ones.
It justs runs the linux kernel as a "subsystem" in Hyper-V ; in facts i think that other modules "subsystems" of windows are ran through hyper-v for better isolation and security.
Doing the same on linux would be using kvm to run the windows kernel and libc/winapi/etc.
There are 2 major issues with that :
- The windows kernel and libraries are not free, so you would not have the right nor the ability to do that
- I think most people want to run shell linux application but graphical windows applications, and graphics in VMs is a major issue ; this might be solved soon with Intel support for SR-IOV in Iris Xe graphics card (and GVT-G which worked before 9th gen). Virtualization of graphics card will be coming eventually i think, but for now it is limited to professional ones.