Windows子系统for Linux 2: Windows 10和11的完整指南

    克雷格的盾牌
    分享

    本教程演示如何在使用WSL2的Windows 10或Windows 11 PC上安装、管理和使用完整的Linux环境。您将运行Linux内核并执行本机应用程序,同时与Windows代码编辑器和浏览器无缝共享文件和服务。

    为什么使用Linux?

    你的网络主机几乎肯定会使用Linux.它速度快,开源,可以运行大多数网络软件,包括:

    其中一些依赖项可能在Windows和macOS上可用,但安装和维护相同的版本很困难。它们通常比较慢,您可能会遇到细微的差异,这些差异在部署之前都不会显现出来。

    一些开发人员使用Linux作为他们的主要桌面操作系统,但如果您需要微软或Adobe产品等非Linux软件,这可能是不可行的。选择选项:

    • 在一台设备上使用两台pc或双启动。在系统之间切换可能很麻烦。

    • 使用Hyper-V、VirtualBox、Parallels、WMware或Vagrant运行Linux虚拟机。这需要大量的操作系统资源和合理的IT知识。在系统之间共享文件可能会很尴尬。

    • 运行web应用程序码头工人容器。这是另一个需要学习的主题,Docker本身在Linux上原生运行。Windows和macOS版本都使用Linux底层,而Docker Desktop的Windows版本需要WSL2。

    Linux的Windows子系统是什么?

    Windows Linux子系统(WSL)允许开发人员直接在Windows上运行Linux环境。这是一个运行在Windows系统中的完整的Linux操作系统,所以你可以无缝地使用相同的应用程序和文件。

    WSL1是开创性的,它将Linux系统调用转换为Windows的对等体。这可能会很慢,而且某些功能不可用。WSL2使用Hyper-V虚拟机技术,因此Linux兼容性非常好,文件访问速度比以前快20倍。

    Windows 10和Windows 11的区别

    微软在2020年推出了WSL2,因此它完全集成到2021年10月发布的Windows 11中。

    Windows 10需要多一点配置工作。如果您正在考虑升级到Windows 11,请在安装WSL2之前进行。Windows 11在某些方面并没有改进(我仍然怀念任务栏图标取消分组和拖动文件!),但WSL2似乎更稳定,我很少遇到问题。

    个人电脑需求

    WSL2使用Hyper-V。这需要硬件虚拟化支持,您必须在BIOS中启用该支持。

    警告:摆弄你的BIOS设置可以垃圾你的电脑!在进行更改时要小心。咨询您的主板制造商的帮助页或搜索有关您的特定制造和型号的在线建议。

    硬件虚拟化在大多数现代设备上都是可用的,但是您可以通过重新启动并打开BIOS面板来检查—通常是通过点击F2,或F10在系统启动时输入。寻找虚拟化技术发行安全虚拟机(SVM)或者类似的选择。确保它们已启用,保存并重新启动计算机。

    最后,确保你的<代码>C:驱动器有1GB的备用磁盘空间-理想情况下更多。你也许可以腾出一些空间设置系统存储或者使用磁盘清理工具Windows管理工具

    在撰写本文时,WSL2将把Linux安装到您的<代码>C:开车,尽管有可能把它移到别处后安装。

    Windows的需求

    WSL2可与Windows的家庭版、专业版或服务器版一起使用,但是Windows 10/11 S. S模式只允许来自微软商店的应用程序“提高”安全性。命令可以从S模式切换到Windows Home/Pro模式切换到Windows Home选项设置>更新和安全>激活

    Windows 10需要2020年5月的更新——也就是2004年或更高版本。选择设置从“开始”菜单中选择系统紧随其后的是关于.的窗户规格显示在面板的底部。

    窗户规格"width=

    使用检查更新按钮设置,然后更新和安全如果没有安装。一些旧电脑可能永远都不兼容,微软也不太可能提供补丁。

    禁用快速启动(可选)

    快速启动将Windows会话和设备驱动程序保存到一个文件中,以便下次启动更快。这可能会导致Linux内核在下一次引导时失去响应。如果遇到问题,请禁用经典版的快速启动控制面板>电源选项>选择电源按钮的作用

    控制面板电源选项"width=

    或者,创建一个<代码>wsl.bat文件在你的启动文件夹(<代码>C:\用户\<用户名> \微软AppData \漫游\ \ Windows \开始菜单\程序\启动),内容如下:

    wsl——关闭

    这将在Windows启动后关闭WSL,但它将在您访问Linux时重新启动发行版

    安装Windows终端(可选,推荐)

    Windows终端是否有优秀的终端应用程序微软商店或其存储库github.com/microsoft/terminal/

    Windows终端"width=

    Windows终端在安装时自动添加WSL2 Linux发行版,并提供一系列可配置的选项,包括选项卡、分割视图、主题、透明度和键绑定。

    配置可从设置菜单项(Ctrl+),命令面板Ctrl+转变+P),或<代码>settings.json的底部访问设置面板。

    启用WSL2 (Windows 10)

    以下说明适用于Windows 10操作系统。它们在Windows 11中应该是不必要的,尽管你应该仔细检查是否执行了Windows 10到11的升级。

    虚拟机平台而且Windows for Linux子系统中必须启用特性打开或关闭Windows功能.通过点击开始并输入“features”或从程序和功能经典中的偶像控制面板

    使WSL2"width=

    或者,您也可以在以管理员身份运行的Windows Powershell终端上执行以下命令:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    重新启动Windows,然后在Windows PowerShell或命令提示符中输入以下命令,将WSL2启用为默认值:

    wsl——set-default-version2

    下载Linux

    寻找或定位PowerShell在开始菜单中,然后右键单击图标并选择以管理员身份运行.输入以下命令显示可用的Linux发行版列表:

    WSL——列表——在线

    列出Linux发行版"width=

    要安装默认的Ubuntu 20.04发行版,输入:

    wsl——安装

    按名称安装特定的发行版,例如<代码>Debian,输入:

    安装-d Debian

    或者,您也可以从微软商店在开始菜单中访问。在搜索框中输入“Linux”(注意可能有WSL发行版以外的软件)。

    微软商店"width=

    Ubuntu是一个很好的选择,除非您有特定的Linux需求。单击,表示安装最新版本Ubuntu图标跟随得到按钮。

    下载和安装可能需要一些时间,具体取决于您的网络和PC速度。您可能会再次提示重新启动。

    启动Linux

    新的Linux系统(Ubuntu)选项/图标将在以下版本中提供:

    1. 开始菜单
    2. Windows终端(如已安装)
    3. Powershell -进入<代码>wsl或<代码>bash在提示符下

    第三方终端软件,如cmdConEmu,或可以通过创建哪些配置文件来启动<代码>%列出% \ system32系统\ bash.exe ~.

    安装过程将在您第一次运行WSL2 Linux操作系统时完成。

    注意:您五月在终端中看到一条关于内核更新的消息。将链接复制到浏览器中,然后下载并安装更新。您需要再次启动Linux发行版以继续安装。

    系统将提示您输入用户名和密码。以下是Linux管理的凭据:它们完全独立于你的Windows用户名和密码(尽管选择相同的可能是实际的)。

    Linux最终将准备好,您的终端将显示类似于:

    欢迎来到Ubuntu20.04。4 LTSGNU / Linux5.10.102.1-microsoft-standard-WSL2 x86_64*文档:https://help.ubuntu.com *管理:https://landscape.canonical.com *支持:https://ubuntu.com/advantage截至8月2日的系统信息1610: 19:36 BST2022系统负载:0.0过程:8/的用法:1.6%的250.98GB登录用户:0内存使用情况:1% IPv4地址eth0:172.21.6.83 Swap使用率:00可以立即应用更新。可用更新的列表为更多的还不到一周。检查新的更新运行:sudo恰当的更新

    更新Linux

    可能会有几个Linux更新。在Linux终端输入以下命令更新Ubuntu应用程序:

    sudo恰当的更新sudo恰当的升级

    其他Linux发行版也有类似的过程——所以请查看文档以获得帮助。

    你也可以检查Linux内核更新从Powershell使用:

    wsl——更新

    在WSL1和WSL2之间切换

    现有的WSL1发行版可以转换为WSL2。在Windows Powershell终端中输入以下命令,显示已安装的Linux发行版及其WSL版本:

    p C:>wsl——list——verbose NAME STATE VERSION * Ubuntu运行1

    (<代码>*星号强调默认的Linux安装。)

    切换<代码>Ubuntu到WSL2,输入:

    wsl——设置版本Ubuntu2

    类似地,要切换回WSL1,输入:

    wsl——设置版本Ubuntu1

    设置默认Linux发行版

    如果安装了多个Linux发行版,则必须将一个Linux发行版设置为默认值。这将用于<代码>wsl在Windows Powershell终端中输入。

    要设置默认发行版,请列出您的Linux安装:

    wsl——列表

    并设置默认值:

    wsl——setdefault<DistributionName>

    Ubuntu的例子:<代码>wsl——setdefault Ubuntu.

    以特定用户身份运行Linux

    要以特定用户的身份运行默认发行版,请在Windows Powershell终端中输入以下命令:

    wsl——用户<用户名>

    定义一个默认用户在安装期间但你可以创造其他东西。一个<代码>根User也被创建,但是在正常情况下应该避免使用它。输入危险的命令太容易了!

    移动或克隆您的Linux磁盘映像

    Linux磁盘映像安装在您的<代码>C:开车。你可以选择:

    • 将其移动到另一个驱动器以释放空间<代码>C:,或

    • 使用相同的映像来创建多个Linux安装(如果您需要不同的应用程序和不同的项目的设置,这可能是有用的-尽管Docker可能更实用

    下面的说明假设您正在移动UbuntuLinux发行版<代码>D:\wsl.

    在Windows Powershell终端(Ubuntu终端),输入<代码>wsl——列表查看您的Linux发行版,然后按名称导出一个备份<代码>.tar文件-例如<代码>D:\\ubuntu.tar备份:

    mkdirD:导出Ubuntu D:备份ubuntu.tar

    注销该发行版以将其从<代码>C:驱动:

    wsl——注销Ubuntu

    输入<代码>wsl——列表验证发行版是否已删除。

    将备份导入到另一个位置的新的WSL2发行版中,例如<代码>D:\wsl:

    mkdirD:导入Ubuntu D:wslD:备份ubuntu.tar

    您可以从同一个备份中创建任意数量的命名克隆。例如:

    导入Clone01 D:wslD:备份ubuntu.tar wsl导入另一个D:wslD:备份ubuntu.tar

    通过输入,验证已经成功创建了WSL发行版<代码>wsl——列表和发射Ubuntu从开始菜单或Windows终端。

    此时,Ubuntu将使用<代码>根默认用户。要恢复到您自己的帐户,输入以下命令:

    Ubuntu配置——默认用户<yourname>

    在这里,<代码>您是否定义了用户名在安装期间

    对于其他不是WSL2默认版本的发行版,可以通过登录到发行版并创建/编辑来定义用户<代码>/etc/wsl.conf:

    触摸/etc/wsl.conf纳米/etc/wsl.conf

    在文件中添加如下代码行:

    用户默认的<yourname>

    保存(Ctrl +O)和退出(Ctrl +X),然后在Powershell终端中重新启动发行版:

    wsl——终止<distroname>

    假设一切顺利,您可以删除备份文件(<代码>D:\\ubuntu.tar备份).

    从Windows访问Linux文件

    您可以从网络路径访问WSL2 Linux文件<代码>\\wsl\美元.在文件资源管理器地址栏或任何文件打开对话框中输入它。

    你安装的Linux发行版会被列出来,所以你可以访问Ubuntu根目录<代码>\\wsl美元\ Ubuntu.你的个人Linux文件通常存储在:

    wsl美元Ubuntu首页<yourname>

    在这里,<代码>您是否定义了用户名在安装期间

    最好将它设置为Windows终端中发行版的起始文件夹。打开设置,单击概要文件,然后更改启动目录选择。

    映射网络驱动器

    您可以将网络驱动器挂载到<代码>\\wsl\Ubuntu\美元通过打开<代码>\\wsl\美元在文件资源管理器中,右键单击Ubuntu文件夹,然后选择映射网络驱动器…

    映射Linux驱动器"width=

    不幸的是,目前还不可能映射更深的子目录。在某些应用程序中还可能遇到映射驱动器问题。

    从Linux访问Windows文件

    Windows驱动器挂载在Linux上<代码>/ mnt /目录中。例如,你的个人<代码>用户文件夹在<代码>C:\用户\可在以下网址索取:

    / / mnt / c /用户<yourname>

    在这里,<代码>是您的Windows用户名。

    为了便于访问,您可以从终端创建到任何Windows文件夹的Linux符号链接。例如,对于<代码>C:\\\代码项目:

    cdln- s / mnt / c /项目/代码/

    一个<代码>代码文件夹将出现在您的Linux主目录中。使用<代码>cd~/代码你真的会加入的<代码>/ / mnt / c /项目/代码,直接映射到<代码>C:\\\代码项目.

    从Linux访问Windows文件比使用本机Linux文件系统慢得多。在可能的情况下,在Linux文件空间中创建项目,通常在您的主文件夹(<代码>/home/< yourname > /或<代码>~).

    在Windows下执行Linux命令

    任何Linux (bash) shell命令都可以在Windows Powershell或命令行终端上使用<代码>wsl:

    wsl<linux命令>

    例如,<代码>WSL ls -la列出Windows文件夹中的所有文件。

    从Linux运行Windows应用程序

    任何Windows可执行文件都可以从Linux启动(通常需要指定<代码>.exe扩展)。例如,要在文件资源管理器中打开当前Linux目录,输入:

    资源管理器

    或编辑<代码>.bashrc在记事本:

    notepad.exe ~ / . bashrc

    或者在VS Code中打开一个特定的项目目录:

    ~ /项目/ mywebsite代码

    安装应用程序

    永远记住你在跑步两个操作系统。它们可能紧密地集成在一起,但在某些情况下,您希望将应用程序安装在任何地方。

    例如,Git在Windows和Linux中都很有用。Windows版本由下载可执行文件.最好确保它不转换行结束符:

    git配置——全局核心。autocrlf输入

    Ubuntu上的Git是通过以下方式安装的:

    sudo恰当的更新sudo恰当的安装git-all

    类似地,您可能希望在Windows和Linux上测试Node.js应用程序。再一次,Windows有一个运行时安装程序,但Node.js运行时安装在Ubuntu上使用如下命令:

    sudoapt-get安装建设重要旋度sl https://deb.nodesource.com/setup_18.x|sudo- ebash-sudoapt-get安装- y nodejs

    git,<代码>节点而且<代码>npm命令现在可以在任何操作系统中工作。小心它们可能是不同的版本。

    安装图形化Linux应用程序

    WSL2允许您直接在Windows上运行图形化X11和Wayland Linux应用程序。您可以从开始菜单启动Linux应用程序,将它们固定到任务栏,并使用跨应用程序的剪切和粘贴等功能。但也有一些缺点:

    • 并非所有图形化应用程序都能正常运行
    • 一些提供Linux特性——比如文件对话框——可能会让Windows用户感到困惑
    • 安装自带Windows版本(如Firefox、VLC或GIMP)的应用程序几乎没有什么好处

    要继续,请为您的PC安装正确的GPU驱动程序:

    然后从Linux终端安装任何图形化应用程序。例如,GNOME Gedit文本编辑器:

    sudo恰当的安装中用户

    以以下方式启动:

    中用户

    将该应用程序固定在开始菜单或任务栏上,就像使用其他Windows程序一样。

    Gedit是一个下载大小不到2MB的小应用程序。然而,它需要GNOME和其他Linux库,这会在笨重的GPU驱动程序上产生几百兆字节的额外代码(Intel为1.1GB)。在WSL2中使用图形化Linux应用程序只有在需要安装多个应用程序或没有本地Windows替代方案时才有意义。

    安装码头工人

    有一个例外“在两个操作系统上安装”规则是Docker!

    Docker在隔离的Linux容器中运行应用程序,这些容器在概念上类似于具有操作系统、单个应用程序及其依赖项的轻量级虚拟机。使用Docker进行web开发提供了一个易于安装并可在任何设备上工作的一致环境。

    Docker Desktop for Windows完全启用了wsl2:

    • 没有必要使用Hyper-V,所以Docker可以安装在Windows Home上
    • 当配置为使用WSL2时,Docker启动和运行速度要快得多
    • 在Windows上安装Docker Desktop即可<代码>码头工人而且<代码>docker-compose在Windows和Linux中

    Docker Desktop建议您在WSL2首次启动时使用它。或者,您可以选择设置从Docker系统托盘图标菜单,然后选择一般选项卡,检查使用基于wsl2的引擎,并点击应用&重启

    Docker WSL2引擎"width=

    Docker使用默认的Linux发行版,但也可以在其他已安装的发行版中启用它WSL集成面板设置,然后资源

    使用Docker启动Apache和PHP应用程序

    可以在WSL2 Linux环境中直接安装Apache和PHP等web依赖项。然而,Docker更安全、更快、更可配置:它允许你在同一台设备上同时运行不同版本的PHP。

    在本例中,您将创建一个小的PHP文件,并在Docker容器中使用最新版本的PHP 7.4运行它。确保已安装Docker Desktop for Windows并启用了WSL2模式,然后在Linux环境中使用<代码>index . php文件。例如:

    mkdir~ / phpcd~ / php触摸index . php

    编辑<代码>index . php,也许使用记事本或VS Code如上所示.添加如下内容,输出PHP状态信息:

    <?phpphpinfo

    运行以下命令<代码>码头工人命令在容器中启动一个支持PHP 8.1的Apache web服务器,该容器将当前主机目录中的文件挂载到<代码>/var/www/html在容器中:

    码头工人运行-it——rm -p8080:80——命名PHP- v$ PWD: / var / www / htmlphp: 8.1 apache

    注意:此命令也适用于Windows,但参考<代码>$ PWD必须替换为完整的文件路径在Linux符号-如<代码>/ c / php /.

    开放<代码>https://localhost:8080/的输出<代码>phpinfo()命令。

    要完成,请按Ctrl+C在Docker终端中停止并删除容器。

    WSL2和<代码>本地主机

    运行在Windows、WSL2 Linux和Docker容器上的应用程序总是从<代码>本地主机或<代码>127.0.0.1.

    上面的PHP示例暴露的港口<代码>8080,映射到端口<代码>80在容器里。类似地,如果你在Linux中安装了Node.js,你可以<代码>cd到任意目录并启动静态文件服务器:

    npx small-static-server

    开放<代码>http://localhost:8888/在浏览器中查看该目录下的文件(<代码>index . html默认返回)。

    请注意,在一个操作系统中可用的端口可能在另一个操作系统中不可用。小于1000的端口号仅供Linux超级用户使用。端口80通常由Windows商店Skype应用程序保留,它不能改变(尽管经典桌面版确实允许)。

    SSL证书使用工具进行自签名或本地信任mkcert可以在Windows和Linux环境中互换使用。

    VS Code WSL2集成

    VS Code允许你使用任何Windows或Linux终端。使用以下命令打开终端视图>终端Ctrl +然后按下按钮旁边的向下箭头+图标启动特定类型。相同的菜单有一个选择默认配置文件选项,您可以在其中选择默认使用的终端。

    VS Code默认终端shell"width=

    像其他应用程序一样,VS Code可以直接访问Linux文件<代码>\\wsl\美元调试器正在运行<代码>本地主机.不需要进一步的扩展,但以下选项允许更简单的Linux和Docker文件管理:

    在安装Remote - WSL,你可以导航到任何Linux目录并启动一个与wsl连接的VS Code实例:

    cd~ / myproject的代码

    或者,单击远程窗口图标,然后选择一个连接选项。

    VS Code远程窗口图标"width=

    或者使用新的远程浏览器活动栏中的图标。这允许您从下拉菜单中选择目标类型并进行相应的连接。

    VS Code远程资源管理器"width=

    VS Code的远程实例有一组单独的扩展和设置供Linux使用,但有些可以全局启用。的扩展面板允许您在远程实例中启用和配置扩展。

    VS代码扩展"width=

    设置存储在Linux中<代码>~/ .vscode-server目录中。

    总结

    过去在Windows上运行Linux应用程序需要虚拟机、复杂的Samba文件夹共享和很多耐心。WSL2彻底改变了web开发。它使得使用Windows工具编写代码,然后在类似于生产环境的Linux环境中运行代码变得很容易。紧密的集成提供了两个操作系统的好处。

    WSL2的其他资源:

    如果你喜欢这篇文章,你可能会发现这些资源也很有用:

    完成下一次面试的指南"></a>
         <div class= 完成下一次面试的指南 彼得Nijssen
    Android到Windows:十大Windows商店认证技巧"></a>
         <div class= Android到Windows:十大Windows商店认证技巧 詹妮弗Marsman
    在一天内开始构建Windows Phone应用程序:免费的Windows Phone营地"></a>
         <div class= 在一天内开始构建Windows Phone应用程序:免费的Windows Phone营地 彼得北
    用JavaScript创建一个简单的Windows 8游戏:Windows 8应用程序基础"></a>
         <div class= 用JavaScript创建一个简单的Windows 8游戏:Windows 8应用程序基础 Chris Bowen
    Baidu