←back to thread

Ubuntu on Windows

(blog.dustinkirkland.com)
2049 points bpierre | 3 comments | | HN request time: 0s | source
Show context
captainmuon ◴[] No.11391214[source]
A few random thoughts:

- Wow, hell is really freezing over!

- The hardest part of running bash and other posix things under windows is filesystem access. Windows uses drive letters and backslashes, unix has a root filesystem with forward slashes. It seems they are taking the same route as cygwin by "mounting" windows drives in /mnt/c (or /cygdrive/c).

- If you just wanted bash and some posix tools, the harder but nicer way would be to patch them to understand windows paths. It is not clear to me that it is even possible, for example many tools assume a path that does not start with a slash is a relative path - while "C:\" is absolute. You would also want to make more windows apps understand forward slashes like "C:/Windows". To make things even more complicated, there are NT native paths "\Device\HarddiskVolume4\Users\Bill", UNC paths "\\Server\share", and the crazy syntax "\\?\C:\MyReallyLongPath\File.txt".

- I am really surprised this works in an appx container. From my little dabbling with modern apps in Visual Studio, I've found that they are incredibly sandboxed - no filesystem access unless you go through a file picker, no network connections to localhost (!?), no control of top-level windows, no loading of external DLLs. You can get around most restrictions for sideloaded apps, but not for windows store apps. That they can now package such a complex application as a modern app (with maybe only the linux subsystem DLLs delivered externally) means that they are slowly moving the modern/universal apps and traditional Win32 apps together with regards to their powers.

- Running a Linux kernel in windows, and then ELF executables on top (without virtualization) is nothing new, see CoLinux or andLinux. If I understand correctly, this new work uses a new Linux NT subsystem. It remains to be seen if this is better (more performant) or worse (if the Linux kernel is just another process, and it crashes, it doesn't take down the system).

- If they actually wrote a NT subsystem for Linux, this opens a whole can of GPL licensing worms, as you'll need to include internal NT headers. However, they say it is closed source, so I wonder how they did it.

- This really stands and falls with how well it is integrated in the rest of the system. I want to install tools in "Ubuntu" via apt and use them from cmd.exe, and vice versa. And long term, a X11/Wayland bridge would be nice too.

replies(7): >>11391240 #>>11391243 #>>11391895 #>>11391990 #>>11392163 #>>11392791 #>>11395063 #
barrkel ◴[] No.11391240[source]
I expect they implemented a subsystem for Linux at the syscall level - i.e. they implemented the Linux kernel's interface at the ABI level. No headers would need to intermingle with open source; compile on Linux, run on Windows.
replies(4): >>11391417 #>>11392330 #>>11392474 #>>11392769 #
whatever_dude ◴[] No.11391417[source]
I've read comments where people wrote that NT always had some kind of POSIX subsystem, and it has probably just now been completed and expanded.

Can't find any substantial writings on this, but it seems likely.

replies(4): >>11391513 #>>11391676 #>>11392248 #>>11392369 #
EvanAnderson ◴[] No.11391676[source]
NT shipped w/ a POSIX subsystem. Later, Microsoft acquired Interix (https://en.wikipedia.org/wiki/Interix), a more fully-featured POSIX subsystem. I have fond memories, in the late 1990's, of running GNU tools on NT under Interix.
replies(1): >>11391955 #
TeMPOraL ◴[] No.11391955[source]
Same here. It's like everyone forgot there was such a thing as SFU/SUA. I found it much more pleasant to work with than Cygwin.
replies(1): >>11392099 #
1. krylon ◴[] No.11392099[source]
> It's like everyone forgot there was such a thing as SFU/SUA

Well, it's not like Microsoft made much of an effort to remind people. It was discontinued as a separate project after about Windows XP. It continued to be part of Windows Server[1], but AFAIK, it was no longer present in the client versions.

[1] at least until 2008 or 2008 R2, I didn't check later versions.

replies(1): >>11392222 #
2. SSLy ◴[] No.11392222[source]
last it was avaiable in windows 8 enterprise
replies(1): >>11394875 #
3. krylon ◴[] No.11394875[source]
I stand corrected.

Thanks for the info!