windows下轻量级虚拟化wsl 执行linux系统实践应用
一、WSL介绍
Windows Subsystem for Linux (WSL) 是一个兼容 Linux 的环境,它允许用户在 Windows 操作系统上直接运行 Linux 命令行工具和应用程序,无需传统的虚拟机或双启动设置。WSL 提供了一个高效且轻量级的方法,让开发人员能够在 Windows 上使用 Linux 工具和工作流。
WSL 2 使用虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 Linux 发行版作为独立的容器在 WSL 2 托管 VM 内运行。 通过 WSL 2 运行的 Linux 发行版将共享同一网络命名空间、设备树(而非 /dev/pts
)、CPU/内核/内存/交换空间、/init
二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init
进程。
wsl不同于docker、kvm。个人感觉有点像 QEMU中 运行 Linux,据说是微软基于hyper-v,在windows上运行轻量级的linux内核。
二、版本适用
win10 + win11,其他版本未测试.
三、WSL开启方法
在windows程序功能中启动wsl服务。
备注:启用wsl后需要重新启动系统。
四、wsl环境搭建过程问题解决
4.1 安装WSL时遇到“无法解析服务器名称或地址”的错误及解决方法
通过在网卡配置属性中添加电信114.114.114.114或者谷歌8.8.8.8 dns服务器,无法解决此问题,另外使用腾讯、阿里云等dns服务器,问题仍存在,以下dns尝试后都无法解决该问题。
1、百度DNS服务:180.76.76.76
2、阿里DNS,223.6.6.6
3、腾讯DNS:119.29.29.29
4、电信:首选:101.226.4.6
5、联通:首选:123.125.81.6
6、移动:首选:101.226.4.6
7、铁通:首选:101.226.4.6
8、通用DNS 114.114.114.114
解决办法:在C:\Windows\System32\drivers\etc 下的hosts文件中添加raw.githubusercontent.com对应的域名解析,然后ping raw.githubusercontent.com 可正常通信,修改如下:
添加方法:ip + 空格 + 域名,添加后保存hosts文件,需要用管理员身份打开修改和保存hosts文件。
185.199.109.133 raw.githubusercontent.com
说明:可通过wireshark抓包发现无法解析raw.githubusercontent.com地址,知道该域名后需要找到对应的ip地址,可通过Dns检测|Dns查询 - 站长工具来查询。
4.2 执行wsl -l -o 安全频道支持出错 问题解决
wsl -l -o是列出可安装的有效分发的列表,但是执行后一直报“安全频道支持出错”问题。
解决方法:win+r 输入inetcpl.cpl打开internet属性界面 -> 高级 -> 开启TLS1.2
cmd窗口再次执行命令即正常,如下:
wsl -l -o
以下是可安装的有效分发的列表。
请使用“wsl --install -d <分发>”安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
五、wsl 常用命令使用
wsl -l -v //显示有关所有分发的详细信息
wsl --shutdown ubuntu //关闭某一个os
wsl --install -d ubuntu //安装os
wsl -d //启动某一个系统
wsl --unregister Ubuntu//反注册os
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu.tar //导入os
wsl --export ubuntu D:\WSL\Ubuntu.tar //导出os
wsl --update //更新wsl
wsl --set-default-version 2 //wsl切换
六、wsl启动linux系统问题解决
6.1WslRegisterDistribution failed with error: 0x800701bc错误解决
wsl --install -d kali-linux
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
Press any key to continue...
更新到wsl2,下载链接如下:
下载wsl2: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
切换到wsl2: wsl --set-default-version 2
6.2 wsl 0x80004005错误解决
再次手动启动服务:
dism.exe /online /enable-feature /featurename /VirtualmachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
修改wsl管理服务:
将 LxssManager 服务修改为自动启动
从服务中修改会提示“拒绝访问”,所以从注册表改
win + R -> regedit -> \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LxssManager -> 右键 Start 项 -> 将值修改为 2
默认为 3
1 自动(延迟启动)
2 自动
3 手动
4 禁用
以上修改完后,问题解决,即可正常启动和登录linux系统:
登录后可以正常安装服务和应用,如mysql,或者ngnix等:
sudo apt install mysql ;
wsl官网学习网站:旧版 WSL 的手动安装步骤 | Microsoft Learn
---欢迎一起交流学习。