Windows Subsystem For Linux是现代Windows计算机的一个伟大的新功能,允许用户在Windows 10计算机上原生运行Linux操作系统。 除了Windows 10之外,管理员还可以在Windows Server 2019版上运行Windows Subsystem For Linux。 早在2016年,WSL首次出现在Windows周年更新中。 从那时起,微软通过Twitter、GitHub和User-voice听取了很多用户的反馈,并简化和加强了Windows Subsystem For Linux的体验。 这是真正改变游戏规则的技术,允许你最喜欢的Linux风味,无论是Ubuntu、Red Hat、Kali Linux、Alpine、Pengwin、Debian或openSUSE,都可以在Windows中运行。 在这篇文章中,我们将看看如何安装WSL并测试它所提供的一些伟大功能。
究竟什么是Windows Subsystem For Linux?
Windows Subsystem for Linux是为Windows用户提供的一个新工具,允许他们在Windows上直接运行Linux。 这包括通常只在Linux机器中运行的命令行工具、实用程序和应用程序,而没有典型虚拟机的开销。它是一个从4.19构建的Linux内核,完全由微软管理,包括对Windows Update的支持。 WSL使用一种非传统的虚拟化形式,占地面积非常小。 它更类似于容器而不是传统的虚拟机。

| 传统的虚拟机 | WSL |
| 隔离的 | 集成的 |
| 启动速度慢 | 小于1秒的启动时间 |
| 内存密集型 | 占用内存小 |
| 需要手动管理 | 只在需要时运行 |
你能用Windows Subsystem for Linux做什么?
简而言之,有很多。 下面是一个快速的概述。
-
[从微软商店]安装最流行的Linux发行版,
能够从Ubuntu、openSUSE、Kali Linux、Debian或Alpine WSL中选择是非常酷的。 -
在Windows中获得一个真正的Linux Shell,并运行你最喜欢的命令,如
grep,sed,awk,ls,pwd和其他命令。 -
利用以下工具、编程语言和服务的优势。
- vim、emacs和tmux等工具
- 使用Node.js、PHP、Python、C/C++、Rust、GoLang等语言。
- 配置服务,如。Nginx,sshd,MySQL,Hadoop, 和MongoDB
-
Windows文件访问- DrvFs挂载选项
-
Interop- 启动Windows二进制文件
-
/etc/wsl.conf- 配置选项 -
wslpath- 将路径从一个环境翻译成另一个环境
-
$WSLENV- 在Linux和Windows之间共享envable变量! -
背景任务支持

WSL上的Linux发行版
查看已安装的Linux发行版
一旦你安装了一个或多个已安装的Linux发行版,你可以用 **wsl -l**命令查看。

它是如何工作的?
正如我们上面看到的,用户可以从微软商店获得许多不同的Linux发行版。 这些发行版是由微软合作伙伴提供的。 在这之下是WSL翻译层,以驱动程序的形式实现。 这是一个实现Linux内核ABI的Windows驱动程序,它处理系统调用、虚拟文件和文件系统。 在这个架构的基础上是Windows NT内核。

许多神奇的事情都是通过使用系统调用来实现的。
Linux二进制文件利用系统调用来完成访问文件、请求内存和创建进程等工作。在WSL的最新版本中,它是通过一个具有完全系统调用兼容性的专用Linux内核提供的。
这里显示了WSL的详细结构。

安装Windows Subsystem for Linux
现在我们知道了一些关于WSL是什么以及它是如何工作的,让我们动手在我们的Windows 10机器上安装WSL。 你有几种方法可以安装WSL。 你可以把它作为一个Windows功能启用,或者你可以使用Windows Powershell来打开WSL。 要把WSL作为一个windows功能来启用,首先在屏幕的左下方输入 "打开或关闭Windows功能",然后点击最佳匹配选项。

然后你会看到一个名为 "Windows功能 "的对话屏幕出现,上面列有你可以打开或关闭Windows的各种功能。 要打开一个功能,选择其复选框。 要关闭某项功能,请清除其复选框。 一个填满的方框意味着只有部分功能被打开。 因此,我们将继续点击Windows Subsystem for Linux旁边的空框,然后点击OK按钮。

然后,Windows将寻找所需的文件并对你的系统进行修改以启用WSL。 一旦完成,你将需要重新启动机器来完成安装。

使用Powershell安装WSL
另外,你也可以通过使用Powershell来安装WSL。 要做到这一点,你需要以管理员身份打开Powershell。 如果你有新的windows终端,你可以从那里启动Powershell。 然后你可以输入以下命令并点击回车。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
就像第一种方法一样,这也需要重新启动以最终完成安装。
选择一个Linux发行版
现在WSL已经安装完毕,你可以使用以下任何一个链接来添加你喜欢的Linux味道。
- Alpine WSL基于musl、libc和Busybox的轻量级Linux发行版。
- Pengwin企业版 Pengwin企业版是用于与白水铸造厂的WSL国际专家团队协商定制部署。
- PengwinLinux发行版专门为Windows Subsystem for Linux优化。
- Fedora Remix for WSLFedora Remix for WSL.
- Debian GNU/Linux用于 Linux 的 Windows 子系统的 Debian。
- Kali Linux一个简单的 Kali Linux 安装,没有渗透测试工具,尽管可以添加这些工具。
- SUSE Linux Enterprise Server 15SUSE Linux Enterprise Server 是为支持物理、虚拟和基于云的关键任务工作负载而构建的。
- SUSE Linux Enterprise Server 12同上,版本12。
- OpenSUSE Leap 42openSUSE 是一个稳定且易于使用的多用途 Linux 发行版。
- OpenSUSE Leap 15对初学者、有经验的用户和超级极客来说都很好!
- Ubuntu 18.04 LTSWindows上的Ubuntu 18.04允许人们使用Ubuntu终端和运行Ubuntu命令行工具,包括
bash,ssh,git, **apt**以及更多。 - Ubuntu 16.04 LTS同上,版本16.04。

对于我们的安装,我们将选择Ubuntu 18.04 LTS,因为这似乎是最近流行的Linux风味。

在你选择你的Linux发行版后,你会看到它正在下载。

下载完成后,你会看到Ubuntu已经安装的通知,你可以直接启动它或将其固定在开始菜单上。

在第一次启动Ubuntu外壳时,我们看到一些信息
正在安装,这可能需要几分钟时间......
请创建一个默认的UNIX用户账户。这个用户名不需要和你的Windows用户名相匹配。
更多信息请访问:
aka.ms/wslusers 输入新的UNIX用户名。

如果你添加了一个系统不喜欢的用户名,你可能会看到这个消息。
adduser:请输入一个与
通过NAME_REGEX[_SYSTEM]配置变量
配置的正则表达式匹配的用户名
。 使用`-force-badname
'选项来放松这个检查或重新配置NAME_REGEX。
在我们的案例中,看起来Ubuntu不喜欢用户名中的大写字母。 通过使用所有的小写字母,并添加两次密码进行确认,我们就成功了!
安装成功!
要以管理员(用户 "root")身份运行命令,请使用 "sudo"。
详情见 "man sudo_root"。
看哪! 在Windows上运行的Ubuntu外壳!

我们可以启动 htop程序,以显示真正的Ubuntu外壳。
如何从WSL访问Windows文件
在WSL命令行中,你可以通过以下方式访问Windows操作系统上的所有文件 /mnt/c/或 /mnt/d/目录(取决于分配给Windows驱动器的字母)。 这有利于你轻松地将Windows中最常用的文件转移到WSL的Bash式工作流中。 这里我们在WSL中列出了C盘的内容。

为了确认我们确实是在看Windows文件系统,如果我们在Windows PC上打开Powershell,列出同一个C盘的内容,我们可以看到内容是一致的。爽啊!

为了展示这个动作,我们可以在Windows机器上用Windows notepad.exe创建一个文件。 然后,我们可以使用WSL的 **nano**应用程序来查看该文件的内容。 很酷吧! WSL允许你同时使用Windows和Linux的文件系统,就像它们是一个整体一样,这真的很方便。
在Windows中创建的文本文件。

现在在WSL中,看我们用NANO轻松地打开同一个文件。

如何从Windows访问Linux文件
同样的想法在另一个方向也是成立的。 使用Windows Explorer,你可以获得在WSL中运行的Linux发行版的文件夹结构。 使用Windows资源管理器在Linux文件系统中点击,会让你感觉到你生活在另一个维度中 要做到这一点,你可以在以下位置寻找Linux文件系统 %USERPROFILE%AppDataLocalPackages. 在这个文件夹中会有许多子文件夹,你的Linux文件系统可能在其中。在我们的案例中,我们安装了Ubuntu18.04 LTS发行版,我们的文件夹在CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc中找到。 然后你会发现 **LocalStaterootfs**文件夹,这是Linux安装的根目录。 这里我们可以看到我们在Ubuntu中使用Windows Explorer浏览文件。

在WSL中使用Python工作
Python是一种流行的编程语言,适用于各种任务,但它在命令行环境中真的很出色,你可以将重复性任务自动化并执行基本的系统管理任务。 适用于Linux的Windows子系统使得在你的Windows PC上使用Python更加容易。 你甚至可以在互联网上找到许多预制的Python脚本来完成这些类型的任务,但是这些脚本总是假设你在运行Linux。 那么你猜怎么着? 有了WSL,你就真的在运行Linux了 现在不需要下载和安装像VirtualBox这样的东西,你就可以启动一个内存密集型的虚拟机来测试这些简单的脚本。 只需点击一下就可以启动Ubuntu外壳,你就可以得到你需要的东西。
公平地说,你可以在Windows上运行Python而不需要WSL。然而,对于快速测试和单行本来说,能够运行为Linux机器设计的Linux Python例子,对于高级用户来说是一个很好的生产力提升。 虽然已经安装了Python3,但PIP包管理器却没有安装。 有趣的是,PIP是一个递归的缩写,意思是 "PIP安装Python "或 "PIP安装包"。 这个程序的工作原理很像Node中的NPM,或者PHP中的Composer。 现在就让我们来安装它吧。
首先,我们可以用以下方法更新Ubuntu中的软件包列表 sudo apt udpate.

现在我们可以运行 sudo apt install python3-pip.

一旦完成,如果你用 **pip3 --version**命令,你会看到类似于*pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)*的输出。 太棒了。 我们现在有能力使用成千上万个免费提供的Python模块中的任何一个,如httpie、flask、django、requests、ansible、scrapy,以及更多模块来工作。
Windows Subsystem for Linux总结
WSL是一个快速发展的大话题。 微软正在快速迭代这项技术,因为它似乎受到很多开发者和系统管理员的欢迎。 在这个教程中,我们看了一下什么是WSL,系统的结构,它是如何工作的,以及你能用WSL完成什么。 在过去,如果你需要建立一个依赖于Linux安装的开源包的项目,你必须建立一个双启动Windows和Linux机器(不好玩),安装VirtualBox或VMWare Workstation并运行一个内存密集型虚拟机,或者配置Docker容器。 如果你不熟悉如何设置这些选项,所有这些选项都会带来大量的工作开销,而且学习曲线也很陡峭。 现在,安装了Windows Subsystem for Linux,你可以在一秒钟内访问一个完整的Linux shell!