Windows Linux 子系统 (WSL) 上的 Ubuntu
大家好!我是大聪明-PLUS!

如果您使用Windows作为主要(或唯一)操作系统,那么开始使用Ubuntu最快捷、最方便的方式就是直接在 Windows 中使用内置的 Linux 内核。Windows中提供的这一功能无需虚拟机管理程序,也无需双启动或多启动配置。Linux 内核在基于Hyper-V组件的轻量级虚拟环境中运行,确保最小的开销和高性能。安装后,所选的 Linux 发行版将完全集成到 Windows 系统中,使开发人员能够以最少的硬件和时间投入利用这两个操作系统。甚至可以使用WSL (适用于 Linux 的 Windows 子系统)运行图形化 Linux 应用程序,尽管在实际操作中很少需要这样做。
开始之前你需要知道什么
WSL 有两个版本:WSL 和 WSL 2。当人们谈论 WSL 时,他们通常指的是后者。
WSL 支持具有二级地址转换 (SLAT) 功能的 x64 和 ARM 处理器(所有现代处理器都支持此功能)。
安装需要 Windows 10 版本 2004+ 或 Windows 11。但是,为了避免潜在问题,建议使用 Windows 专业版(或企业版/教育版)而不是家庭版。
使用 WSL 的优点和缺点
优点:
WSL 所需的资源(CPU、RAM 和磁盘空间)比完整的虚拟机要少,例如,如果没有 Windows 进程的打开文件句柄,WSL 虚拟机将自动关闭。
与双启动不同,WSL 不需要重新启动计算机来在操作系统之间切换。
Windows 文件系统可直接集成到 Linux 中,反之亦然。能够在 Windows 中使用 Linux 应用程序,反之亦然。WSL 支持各种开箱即用的应用程序、实用程序、IDE 等。
开源内核。
缺点:
与多重启动或完全虚拟化相比,客户操作系统与主机操作系统的隔离性较低。
缺少发行版的图形界面。其他一些小限制。
由微软开发,而不是 Linux 社区,将来可能会失去交叉兼容性。
安装 WSL 和 Linux 发行版
要启用运行 WSL 所需的功能,请从提升的命令提示符运行以下命令:
wsl.exe --install接下来,您可以检查已安装的 WSL 版本,它应该是 2+:
wsl --version或者(也将显示默认分布):
wsl --status要查看可从 Microsoft Store 下载的 Linux 发行版,请运行以下命令:
wsl --list --online您可以通过微软商店本身或终端安装所选的发行版。如果没有所需的发行版,您可以从互联网或 .tar 文件导入。
使用以下命令安装 Linux 发行版:
wsl --install --distribution <Name>安装完成后(安装过程将显示在终端中),系统将提示您创建新用户。输入用户名和密码后,操作系统即可使用。您可以输入exit来关闭 Bash shell 。
要将某个分布设置为默认分布:
wsl --set-default <Name>接下来我们可以查看已安装的 Linux 发行版及其状态(停止/运行):
wsl --list --verbose请注意,如果您只是关闭了 Bash shell,分发可能会自动终止或继续运行,除非您强制终止它。
如果您需要删除 Linux 发行版及其相关数据:
wsl --unregister <Name>可以使用以下命令获取 WSL 帮助:
wsl --help
使用 WSL
现在可以使用以下命令从终端启动默认的 WSL 发行版:
wslwsl ~您可以使用exit命令退出正在运行的终端。
如果有多个发行版,您可以通过名称访问来启动特定的发行版:
wsl --distribution <Name>如上所述,如果关闭正在运行的发行版的所有终端,它会在一段时间后自动停止。但是,你可以使用以下命令强制终止它,该命令将自动关闭所有打开的终端:
wsl --terminate <Name>您还可以关闭所有正在运行的发行版,然后重启正在运行的虚拟机。更改内存使用限制或修改配置文件时可能需要执行此操作:
wsl --shutdown如上所述,Linux 和 Windows 文件系统是集成的。系统会自动创建计算机硬盘的挂载点,方便从 Linux 轻松访问 Windows 文件系统。例如,在 Ubuntu 中
C:\\可以通过路径访问 Windows 驱动器/mnt/С/。在 Windows 中,可以通过网络路径访问 Ubuntu 根目录\\wsl.localhost\Ubuntu。但是,请记住,每个操作系统都有其与广义上的文件系统相关的特定功能,例如区分大小写或可接受的文件名,因此在文件系统之间移动文件和目录(文件夹)时应谨慎操作。Windows 应用程序可以在 Linux 中运行,例如以下命令将在当前文件夹中打开资源管理器:
explorer.exe .相反,运行以下命令将在 Windows 中打开 Nano 控制台文本编辑器:
wsl nano test.txt在此示例中,我们首先启动默认发行版,然后使用参数调用其中的程序,最后退出并返回 Windows 命令提示符。也就是说,没有打开 Bash 命令 shell 来执行此命令。
说到集成,不得不提的是,许多应用程序都开箱即用地支持 WSL。例如,Docker Desktop 允许你使用 WSL 同时运行 Windows 和 Linux 容器。例如,PyCharm(JetBrains 推出的一款用于 Python 开发的 IDE)就提供了使用 WSL 中安装的解释器的功能。Windows 终端可以直接打开 Bash 命令 shell,而无需在 PowerShell 命令行中使用wsl命令。
Windows 终端中的命令提示符菜单
在安装跨平台开发应用程序时,您可能会想知道应该将它们安装在哪里:在 WSL 中还是在 Windows 上。每个用户都必须自己回答这个问题,并考虑以下几个因素:WSL 发行版可以重新安装、回滚和复制,因此最好不要在那里安装重量级软件。并且最好不要在主机操作系统上安装必要性存疑的软件。因此,如果您需要为单个项目使用 Python 解释器,则可以将其安装在 WSL 发行版上;但如果您使用 Python 进行开发,那么使用 WSL 安装 PyCharm 和 Python 解释器是否合适值得怀疑。
要将 WSL 发行版(Linux 虚拟机)数据从一个磁盘迁移到另一个磁盘,您需要导出、删除该发行版,然后将其导入到新位置。首先,您需要(在已完成的发行版上)进行备份:
wsl --export <Name> <Backup_path>然后,您可以使用命令删除分发
unregister(参见上文),然后将分发导入到新的存储位置:wsl --import <Name> <Base_path> <Backup_path>
笔记
如果在安装 WSL 时遇到错误,则需要确保在 UEFI(BIOS)中启用了虚拟化(通常此选项位于 CPU 设置部分),确保启用了可选的虚拟机平台功能(控制面板 -> 程序 -> 打开或关闭 Windows 功能 -> 虚拟机平台),或者通过在具有管理员权限的命令提示符中运行以下命令来启用它:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart您还需要确保在启动配置中启用了虚拟机管理程序启动。您可以通过从提升的命令提示符运行以下命令来检查这一点:
bcdedit /enum | findstr -i hypervisorlaunchtype如果您看到Off参数值,则表示虚拟机管理程序已被禁用,您需要通过在具有管理员权限的命令提示符中运行以下命令来启用它:
bcdedit /set hypervisorlaunchtype Auto如果您在安装或操作过程中遇到任何其他错误,
您可以在虚拟机中运行 WSL;为此,您需要在虚拟机中手动启用嵌套虚拟化。例如,如果您在 Hyper-V 中运行的虚拟化 Windows 计算机上安装 WSL,则需要在虚拟化主机(而不是虚拟机)的命令提示符中以管理员权限运行以下命令:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true如果您需要在 Linux 上运行 Web 服务器,请记住,如上所述,为了确保发行版不会关闭,您必须为 Windows 进程保留至少一个打开的文件描述符。简单来说,您必须保留至少一个运行发行版 Bash 命令 shell 的终端。
通过 WSL,
您可以在 Windows 上运行图形化Linux应用程序。
