Windows 7中基于UNIX的应用程序的子系统


13

在Windows 7下的“ 打开和关闭Windows功能”对话框中注意到一个名为“ 基于UNIX的应用程序子系统”的东西,以前从未见过,而且看起来很有趣。究竟是什么呢?它有什么作用,我可以用它做什么?


1
在Windows 7 Professional中有没有使用此技巧的技巧?
iceman 2010年

@iceman:然后安装Enterprise或Ultimate。
乔伊

很好看的什么可能是:“微软POSIX子系统的心酸史” brianreiter.org/2010/08/24/...
丹尼尔Sokolowski

Answers:


18

以前称为SFUUNIX服务。它是Windows中的环境子系统,提供了POSIX的完全合规性以及UNIX系统通常提供的大量工具。

作为环境子系统,这意味着它 Windows API 一起直接在内核之上运行。因此,它没有比本地Windows API本身更具仿真性,因此其性能比cygwin好得多。1个

它主要用于直接在Windows上构建和运行UNIX应用程序,因此,如果您喜欢的UNIX程序没有Windows端口,则可以尝试在SUA中构建它:

Windows Services for Unix和Subsystem for Unix-based Applications提供了头文件和库,这些文件和库使重新编译或移植Unix应用程序以在Windows上使用变得更加容易。它们不会使Unix二进制文件与Windows二进制文件兼容。最好将其视为一个独特的类Unix平台。

当前版本的SFU包含:

  • 超过350种Unix实用程序,例如vi,ksh,csh,ls,cat,awk,grep,kill等。
  • GCC 3.3编译器,包括和库(通过MS libc)
  • Microsoft Visual Studio命令行C / C ++编译器的类似cc的包装器
  • GDB调试器
  • NFS服务器和客户端
  • 一个pcnfsd守护程序
  • X11工具和库
  • 用于使NFS挂载点成为Windows共享的工具,反之亦然(网关服务)
  • 与Active Directory(AD)链接的NIS服务器功能
  • 一些Windows / Unix身份验证信息同步工具

SFU不包含以下内容(但二进制文件可用于单独的安装):

  • bash,OpenSSH,sudo,CVS,ClamAV,bzip2,gmake,curl,emacs,Apache,XView,Ruby,Tcl,Python

(维基百科)

由于SUA不会尝试使用Linux或BSD,而只能使用普通的POSIX,因此这也可能意味着依赖于平台特定内容的许多程序可能无法构建或运行。想到使用bash而不是sh或Linux特定系统调用的Shell脚本。如今,很少有程序可以直接在任何POSIX兼容系统上运行。另外,随附的gcc版本有些旧,这意味着它可能不支持您最新的C99 +优点。


1它仍然受到Windows特定的限制,例如缓慢的进程启动时间,因此极端的派生仍然非常缓慢,这就是为什么您要等待很多./configure脚本或某些makefile执行的原因。


凉。那么,这是否意味着您可以获得像shell这样的unix并使用ssh例如?
Svish

没有SSH服务器或客户端,但包括csh和ksh(反正POSIX并没有强制要求更多)。您可以从源代码中构建所需的东西,希望它能正常工作(对于更复杂的软件,通常不会这样做,因为makefile和软件不是考虑到POSIX或gcc和Microsoft libc编写的。Linux工具也臭名昭著。要求无特殊原因的bash显然你。可以设立的pkgsrc,虽然我没能做到这一点,到目前为止,虽然但我的经验可以追溯到SFU 3.5在Windows 2000上可能是事情已经现在改变了。
乔伊

的确,NT中的原始POSIX子系统与Win32和OS / 2子系统一起直接在内核上运行,而SUA在Windows API之上运行。
スーパーファミコン

2
matthews:SUA的可执行文件仍然是POSIX子系统应用程序(是的,我实际上使用了十六进制编辑器并查看了内部)。因此内核甚至不会想到从Windows API运行某些东西的想法。
乔伊(Joey)

4
@Svish:您可以从suacommunity.com
bk1e

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.