WSL

发布时间 2023-09-29 01:48:20作者: Festu

WSL

Windows Subsystem for Linux

安装

微软-安装WSL

安装过程中用到的一切命令行需要以管理员身份运行。


首先需要开启『Windows 对 WSL 的支持』,提供两种方案:

  • 用 pwsh 开启:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  • 在桌面系统中开启。在系统搜索栏中输入『启用或关闭 Windows 功能』,打开功能管理后勾选支持。

接着需要安装 WSL,提供两种方式:

  • 使用命令行(推荐):

    wsl --install
    
  • 微软商店中下载

选择 Linux 系统,安装镜像。(WSL 命令稳定联网需要科学手段):

  1. wsl -l -o 查看可安装镜像
  2. wsl --install -d <distro name>

安装好后自动进入系统配置,配置完毕后 WSL 1 就装好了。

WSL 1 不需要开启 Hyper-V


如果需要安装 WSL 2,则需要额外的步骤。

首先需要启用系统的 Hyper-V 功能,参考:微软-Win10 启用 Hyper-V

值得一提的是 Windows 系统不论什么版本,在首次安装后默认是打开 Hyper-V 选项的。

我自己用的 Windows 家庭版,系统被安装后安装 Docker Desktop,用 wsl -l -v 会找到两个用于构建 docker 服务的镜像:

NAME                   STATE           VERSION
docker-desktop         Stopped         2
docker-desktop-data    Stopped         2

他们使用的就是 WSL2 引擎。同时 Docker Desktop 也会默认采用"WSL2 based engine"。


另外,附上微软对"Hyper-V"的说明:

Hyper-V 是基于虚拟机监控程序的虚拟化技术。 Hyper-V 使用 Windows 虚拟机监控程序,后者需要具有特定功能的物理处理器。

对于不同版本的 Windows,启用 Hyper-V 功能的方式不同。

对于专业版,提供两种方式:

  • 直接在『启用或关闭 Windows 功能』勾选 Hyper-V ,重启后生效。

  • 使用 pwsh-CLI 启动:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    
  • 使用 cmd-CLI 启动:

    DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
    

对于家庭版(我的版本):Windows 关闭了对家庭版的"Hyper-V"官方支持,因此需要以特殊手段启动,参考:Windows10没有Hyper-V的解决办法

创建以下 cmd 脚本,并以管理员身份运行,下载 Hyper-V 功能的支持组件:

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

下载完毕后,Windows 的功能中就注册了 Hyper-V ,专业版的打开方式就可以使用了。

有多种方式可以查看自己电脑的 Hyper-V 功能是否开启:

  1. 启动任务管理器,在『性能』中查看『虚拟化』是否启用
  2. systeminfo 查看系统信息,最下方会有 Hyper-V 的相关信息

至此 Hyper-V 功能已经打开,我们还需要启动 Hyper-V 服务:

bcdedit /set hypervisorlaunchtype auto	# 开启服务
bcdedit /set hypervisorlaunchtype off	# 关闭
# bcdedit /set hypervisorlaunchtype on 	# 也许是开启?

重启后服务成功开启。

关于"Hyper-V"与"虚拟化"的关系,暂时不是很明确,猜测开启"Hyper-V"的前提是打开虚拟化,但两者并不等价。

关于启用虚拟化,可以在 BIOS 中开启『Virtualization虚拟化』,『联想小新 pro14』在开机时反复按 F2 键即可进入BIOS。

环境适配

除了 WSL,系统环境中一般还有很多其他的虚拟化服务,他们或多或少都对 Hyper-V 的开启或关闭有要求,例如:

  1. Docker,如果使用 Docker Desktop 且使用基于 WSL2 的引擎,则需要开启 Hyper-V。

  2. 虚拟机平台,包括 Vmware、Virtubox 与一众安卓模拟器。他们起初都需要关闭 Hyper-V 才能正常运行。

    但是后来部分软件的引擎得到更新,例如 Vmware 与雷电模拟器,他们可以在开启 Hyper-V 的系统中正常运行。

基本使用

wsl-cli 的联网功能需要科学手段

Commands

wsl -l -v 		# 查看已安装的 wsl 系统版本信息
wsl -s <ditro>			# 设置默认分发
	--setdefault <distro>
wsl --set-default-version <ver> # 设置默认 WSL 版本
wsl --set-version <distro> <ver>	# 设置某分发的WSL版本
wsl --update	# 更新 WSL

Debris

环境配置

高效简洁的Zsh配置

WSL2+Linux-Kali完整配置