Is there a possibility and I’m not talking about breaking patents or anything like that, but I’m talking about a possibility technically, to have a Linux OS that can run Windows 11 apps natively?
No bottles or ports, just download an EXE file and run it.
It sounds like what you want is best served with WSL installed on top of win 11. Windows subsystem Linux will allow you to install any mainstream Linux distribution on top of Windows, but you would have to access it through WSL
Just a heads up that WSL stands for “Windows Subsystem for Linux”, not Windows Socket Layer.
Whoops, well horseshoes and hand grenades I guess.
So, both Linux and Windows comes with a component called the “Kernel” (technically, Linux is the kernel, and the OS is something like Ubuntu, Fedora, etc…). This Kernel sits between the actual hardware and the rest of the operating system. It is responsible for things taking your app and loading it into memory, then handing the starting point to the CPU, things like this.
Since both of these kernels are developed independently, and basically from scratch, they work quite differently. When a program (app) is launched, the operating system needs to know a lot of small details in order to actually run it. What it needs to know and how to find it is quite different between Linux and Windows. Windows “Portable Executable” files (.exe files), and linux uses Executable and Linkable Format files. Your idea would be to simply re-arrange and augment the data in this header so it executes on the other platform, right?
There is a major wrinkle with this though, and that is the system libraries. Both the OSes have functionality to make it easier to write applications, provided by the OS. Things like sound libraries to write sound to the speakers, or graphics APIs so the application can draw to the screen. For Linux running on Windows, you can just look at what Linux provides and emulate that, or grab the source code and port that to Windows. However, the reverse is not so easy, because Windows is closed-source. Rebuilding every windows API from scratch is quite difficult, and made harder because the architecture is different, and solutions that are easy to provide in Windows might be quite hard in Linux.
It’s this library gap where the value of Wine comes from, and how it works.
You might ask, then, if it’s possible to run both kernels, and provide both options. Yes. In fact, this is how WSL on Windows works. It runs a customised version of the Linux kernel as a Windows application. Likewise, docker allows you to run a Windows nanosever, which is somewhat similar. However, running a container has more overhead than running the system API translations.
Running them ‘natively’ doesn’t really make sense, in the same way I cannot connect K’nex pieces to my Lego model directly. The two operating systems simply have different shapes, and cannot be directly connected.
K’nex to LEGO was a great analogy
My god, you blew my mind. Thank you for this great explanation.
Everything everybody else said but also for a noob user, the window manager matters a lot. It’s the part of the OS that renders the graphical user interface (GUI - menus and title bars and everything). Some are super basic (and often very lightweight / snappy). But KDE (super SUPER configurable) has a button for EVERYTHING. And because it’s so configurable I almost guarantee someone’s made a configuration that mimics widows aesthetics and interface, and that might make things a little easier for you until you’re ready to dive in a little deeper. And KDE used to be way too intensive for most computers but most modern ones can run it easily.
Sure, someone could do the opposite of what Microsoft did: build a pretty invisible virtual machine that runs windows and windows apps. But performance would take a hit, you wouldn’t play games like this.
Running Windows apps “natively” is impossible, by definition.
That said, I could imagine a kernel module that ran everything Windows in a microContainer like Kata. More likely would be to have Windows executables intercepted and run under Wine.
It’s an interesting question.
deleted by creator
So at the moment Wine seems to be the best possibility to come near to the experience of Windows.
If this is ever going to be possible, then it will be through Wine - Wine is the way of running Windows apps on Linux
No, such an OS would necessarily not be Linux.
You can have a different OS that can run windows natively–like React OS, but it’s very much not Linux.
Did not know this existed, thank you. This is a very interesting OS, but indeed it is not Linux.
Yeah something like Wine, but running natively in the Linux OS.
I mean, if you have wine installed, exes execute. What exactly are you missing?
Windows is still considered the standard in the world. Most of us know that Linux is the better operating system. What will it take to get people to switch from Windows to Linux?
Windows comes pre-installed.
If every manufactured PC came with Linux, it would take over eventually. Its just a default OS issue, not a usability issue.
@9tr6gyp3 @stat_rosa it’s a predatory marketing issue and consumer capture issue. Notice also you no longer own your windows. It’s just a license. But your Linux, like free speech free like free beer. Since there’s no money in that, no shareholder return to protect, no politicians to be bought, it will always be a back burner reality in the corporate consumerist world.
What will it take to get people to switch from Windows to Linux?
Windows just keeps getting worse and worse. Give it time.
Yup. Even Marques Brownlee, the consumer tech youtuber, did a video on a Linux laptop recently
😉
Yeah something like Wine, but running natively in the Linux OS.
I think here’s where you are a bit off in understanding…
Linux is not an OS. It’s a kernel. Long story short, technically “Linux” has no graphic interface, cannot even run commands without a shell attached etc…
Obviously when most people say “linux”, they mean a linux distribution, which is the linux kernel, with a bunch of software bundled and installed on top of it when you install. WINE is no different than “x” or “wayland”. which are by definition, software running on a linux kernel, that is necessary to run a program designed to be graphical.
The point is everything run on “linux” is actually run on top of layers built on top of linux. So say we’re talking running the text editor feather pad.
so linux “native” looks like Linux Kernel -> display server (x/wayland) -> libraries -> featherpad,
while running something with wine looks like Linux Kernel -> Display server -> Libraries for wine -> Wine - Notepad.
Apologies, yes I sounded a bit simple, but your explanation is very helpful.
Well that’s what Wine is, it’s native Linux software, so if you’re running something on Wine you’re (technically) running it natively on Linux, it’s a compatibility layer for Windows applications to run on Linux without breaking patents or having need to use Windows code. Of course clearly, as you know, there are shortcomings to Wine but that answers your question of where we are with this.
Yes you are right, I can live with this. But now I wonder if Microsoft would ever consider releasing a Wine competitor of their own, probably of course against a fee.
I mean, they kind of did. It’s called Windows Subsystem for Linux, and it can run Linux programs on Windows, for anyone willing to coax it into working.
It’s not awful, but it cannot even do graphical programs yet. Wine is a decade or two ahead of it.
Edit: I would have bet it was proprietary, but it is MIT License. https://github.com/microsoft/WSL
They also did the opposite, they have their own “thing” to run Windows software on Linux. It’s a quite thin “kernel-like” layer offering most of the important Windows kernel calls on Linux. This is what they used to port their
DB2Sql Server database to Linux. Sql Server on Linux uses a few calls directly on the Linux kernel for performance (File IO for the DB), but other stuff lives in a Windows emulator (Like DLLs it loads).Read a white paper about it a few years ago.
If they wanted, they could easily port all their applications to Linux, but (understandibly) they don’t want to for end user stuff.
Edit: It was SQL Server of course, DB2 is IBM: https://arstechnica.com/information-technology/2016/12/how-an-old-drawbridge-helped-microsoft-bring-sql-server-to-linux/
I had not heard of that. Fascinating! Thanks!
I edited the post you replied to and added a link to an article
Yes this is indeed a great step into the right direction. it seems that when I look at all the comments Wine is is indeed the best the option.
I suppose they could, but it would almost definitely be proprietary software and almost definitely include all the anti-features you see in Windows 11 which would defeat the point. If they released it as free software (FOSS) that would be an unqualified win but that’s very unlikely.
Yeah seems unlikely
Zorin has this feature, kind of.
Basically, it comes with wine preinstalled. So when you double click an exe, it will launch. Many softwares will work, except specialised ones like Photoshop or office 365.
However, I would like to mention, that downloading an exe and executing it to install softwares is an inherently flawed and an insecure system, and should be avoided. Even on Windows, people should be using MS Store, chocolatey or winget to install stuff.
I don’t agree with your “only download from official stores” stance. The last several malwares we got were from the official ms or android stores. These places offer a false sense of security, and like downloading an app from a seemingly trusted website, the app should be placed under high scrutiny. Scan everything before you execute it, and have a heuristic antimalware running. Use good cyberhygiene, and you can download from anywhere and, while it’ll never be 0, your risk of infection will be significantly lower than those who blindly trust the official app stores.
-
Preinstall wine
-
Enable wine as the default app to open exes,.
then, when you double click on an exe you downloaded in your file explorer, it will launch and open.
Many of the user friendly Linux distros do this.
Of course there are caveats, in that if you run an installer, it might not show up in your desktop or so on. And any programs that need admin or have heavy drm also won’t run.
Im addition to that, I dislike the model of downloading exes from the internet. Here is the other comment with my thoughts: https://programming.dev/post/48941029/23338730
Yes, this is interesting. Oh wow love your comment on programming.dev!
-
If you would count running a python program as “running natively” if you run the python script through your python interpreter, then I would argue that running an exe file through wine also counts as “running natively”.
Very true.
No bottles or ports, just download an EXE file and run it.
Manjaro does it. Imagine this: Distro mainainers came up with idea, that maybe .exe file should be launched via Wine by default. Crazy
Maybe you would be interested in ReactOS which is an operating system built from scratch to be compatible with Windows.
As for your question, you could probably make it so that it look like Linux is handling Executable files natively, but behind the scene you can’t get away from having something that convert Windows system calls into Linux system call.
My recommendation is to just run windows if your needs requires .exe. Trying to shoehorn .exe into an OS not designed for your use case will make you hate the OS instead of loving it.
Don’t let some of these fanboys convince you that Wine/bottle is all you need. It’s not. Most apps are well documented. Some are not and you will get frustrated when it’s not.
I’m os agnostic. Run Linux and Windows depending on the situation.
there is a midge of possibility. but not today.
you need some vibe coder to do the clean lab linux versions of all windows libraries.
on a super high view of things, it’s just a language difference.
Thank you I love your reply!
No. The exe called specific windows apis that don’t exist natively on Linux.
Just like a windows system can’t run a .deb or .rpm application *nix can’t run .exe natively.
Neither does the Windows kernel have the specific apis that Windows applications call.
It’s not very visible nowadays but the Windows kernel has it’s own api and loads subsystems to support different apis for applications. All these subsystems died out long ago but the win32 subsystem which still lives on.
The win32 subsystem conceptually is not too far from Wine. The big difference is just how much effort MS puts into it and their long experience (and hacks and special cases for backwards compatibility).
Long time ago MS offered a posix subsystem, for example, so you could run Unix apps on Windows. (It was a bit half-assed however, they didn’t really want people to use it, they just wanted people not to buy Unix workstations)
The Win 32 API is a continuation of the API from the Windows 95 line of OSes that still used DOS below. Windows NT supported Win32 on a completely different kernel, the Windows NT kernel was inspired by the VMS operating system.
NT is the great-granddaddy (via 2000, XP, Vista, 8, 10) of Windows 11. It’s basically still the same kernel, just modernized.
The Win95 line, where the Win32 API originated, died out after 98 and ME.
(And I’m ignoring the 64 bit switch for this discussion, that would complicate things even more)
Thank you. I already thought this would be the case.










