本文的主要内容
本文的主要内容是在 Windows 10 22H2 最新版本下安装和启用 WSL 2,为了演示 WSL 2 的用法,本文安装了 Ubuntu 子系统,以及解决了几个麻烦。
关于 WSL
Windows 的 Linux 子系统
WSL,全称“Windows Subsystem for Linux”,也就是“Windows 的 Linux 子系统”。WSL 不是虚拟机,它是一种 Windows 对 Linux 内核提供的二进制兼容层,这是一种 Linux 内核接口,不过它里面并没有 Linux 内核的代码,而是提供了 Windows 与 Linux 对接的接口,从而实现 Windows 与 WSL 的二进制兼容。
而 WSL 2,天生就支持一个真正的 Linux 内核,它作为一个隔离容器在轻量级虚拟机内运行 Linux 内核,这特性就好像运行一个真正的 Linux 发行版,而不是作为 Windows 与 Linux 内核的兼容接口。
可原生地运行 GNU 二进制应用程序
WSL 可原生运行 Linux 下的 GNU 二进制应用程序,在 WSL 2 版本中,甚至可以运行 Linux 图形界面软件,也可以安装 Gnome 等 Linux 图形桌面环境,从而达到在 WSL 下使用图形界面的目的。
得到广泛支持的 WSL
目前, WSL 已经支持了广泛的 Linux 发行版,诸如 Ubuntu、openSUSE Enterprise、Debian、Arch、 Fedora 和 Kali Linux 等等。其中,Ubuntu 方面支持了最近的三个 LTS(长期支持版)版本,分别是 18.04、20.04 和 22.04。
关于 WSL 2
从 2017 年 WSL 最初版本现世以来,随着操作系统对其进行支持、演化和升级,它的功能越趋强大,从与 Linux 内核的接口,到 WSL 2 实现运行在真正的 Linux 内核,从而支持图形用户界面,获得与实际 Linux 相同的特性和功能。
WSL 2 是从 1903 版本开始支持,如果你使用 Windows 10 May 2020 (2004) 更新或更高版本,您可以通过单个命令或单击来安装 WSL2,这简直太方便了。
系统环境
- Windows 10 202312 22H2,22H2 是 Windows 10 在 2025 年停止支持之前的最后一个大版本;
- 更新系统到最新;
- 系统硬件支持“Hyper-V”;
- 即使是 VirtualBox 等虚拟机工具运行的客户机安装 WSL 2,也要让虚拟机支持“Hyper-V”。
- VirtualBox 7.0.x 不是真正支持 Hyper-V,v7.1 开始才支持,所以目前(VBox 7.0.x)不能在虚拟机中使用 WSL 2,只能使用 WSL 1。
Windows 10 启用 WSL
步骤一:启动“控制面板”
搜索并启动“控制面板”:
点击图片查看大图
步骤二:点击“程序”
在“控制面板”界面中点击“程序”链接:
点击图片查看大图
步骤三:启用“适用于 Linux 的 Windows 子系统”(WSL)
控制面板 ->“程序和功能” -> “启用或关闭 Windows 功能” ->分别勾选 “Hyper-V”以及“适用于 Linux 的 Windows 子系统” -> 点击“确定”。
点击图片查看大图
等待一会儿进入第四步。
步骤四:重启操作系统
关闭或退出当前系统上运行的应用程序,然后点击“立即重新启动”。
点击图片查看大图
重启后登录系统,Windows 10 就启用了 WSL。
接下来是升级 WSL 版本到 v2。
升级 WSL 1 到 WSL 2
- 步骤一:以管理员身份启动 PowerShell
右键“开始菜单”按钮 -> 打开“开始菜单” -> “Windows PowerShell(管理员)” -> 弹出权限赋予对话框 -> 点击“是” -> 进入拥有“管理员”身份的 PowerShell 界面:
点击图片查看大图
-
步骤2:设置默认 WSL 版本为 2:
wsl --set-default-version 2
点击图片查看大图
-
升级 WSL 的 Linux 内核:
执行过程中如果弹出对话框请选择“是”。
wsl --update
通过 WSL 2 安装 Linux 发行版
安装 Linux 发行版
查看能够安装的 Linux 发行版:
wsl -l -o
如果安装过程中出现错误,请参考本文后面的内容,若是解决不了还请读者通过互联网搜索一下错误代码或错误的其他提示。
比如,安装 Ubuntu 20.04:
wsl --install Ubuntu-20.04
点击图片查看大图
安装成功!并要求输入 Ubuntu 20.04 的用户名和密码,以创建新 Linux 用户:
点击图片查看大图
新用户录入成功,并且 PowerShell 进入 Linux Shell 命令行:
点击图片查看大图
安装 Linux 发行版到此结束。
输入 exit
退出 Linux Shell,回到 PowerShell。
查看当前 WSL 的版本
只有安装了 Linux 子系统此命令才有效。
wsl -v
点击图片查看大图
进入一个 Linux发行版子系统
wsl -d Ubuntu-20.04
错误: 0x80072ee2
如果出现“错误: 0x80072ee2”,可通过设置 DNS 来解决问题:
- DNS 1: 4.2.2.1
- DNS 2: 4.2.2.2
以上两个 DNS 都是微软云的公共 DNS,虽然时延很大,但是可以让微软相关的域名不会因一些原因被某些 DNS 服务器给污染到。
也可以试试阿里云的公共 DNS:223.5.5.5 和 223.6.6.6
修改“网络适配器”的方法可参考:https://alidns.com/knowledge?type=SETTING_DOCS#user 。
设置好 DNS,别忘了重启路由器或者系统的“网络适配器”。
错误:0x800701bc
如果出现错误“0x800701bc”,由于 WSL 1 升级到 WSL 2之后,WSL 的内核没有升级而导致的错误。
安装好“Linux 内核更新包”执行以下 PowerShell 命令更新 WSL 内核:
wsl --update
点击图片查看大图
更换 Ubuntu 20.04 的软件源
当前刚刚安装好的 Ubuntu 20.04 的软件源是位于境外的官方软件源,软件下载速度一般有点慢,所以这里就更换软件源到境内,作者选择的是中科大的软件源。
所有的帮助在: https://mirrors.ustc.edu.cn/help/ubuntu.html 。
更换软件源的过程如下:
- 进入目录
/etc/apt/
:cd /etc/apt/
- 备份原来的软件源设置:
sudo cp sources.list sources.list.bak # 输入用户密码
- 覆盖掉原有的软件源:
sudo bash -c 'cat > sources.list <<EOF # 默认注释了源码仓库,如有需要可自行取消注释 deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse EOF'
- 检查一下软件源是否正确:
cat sources.list
- 更新系统软件源:
sudo apt update
- 更新系统及应用软件:
sudo apt upgrade -y
安装 Microsoft Terminal
由于 Windows 10 默认的终端 PowerShell 和 CMD 太难用,对操作反应太慢,因此要安装一个比前两者更好用的命令行终端——“Microsoft Terminal”,“Terminal”与 Linux 的终端更相像,并且比 PoserShell 和 CMD 优化得太好了。
可以通过 Windows 应用商店搜索安装,这是个微软公司开发的免费软件。
以后就用“微软终端”来访问 WSL 下的 Linux 发行版。
总结
WSL 2 作为一个隔离容器来运行真正的 Linux 内核,这与 WSL 1 是最大的不同, 而 WSL 1 是一套微软开发的内核接口与 Linux 发行版交互。
WSL 2 的安装升级过程比较坎坷,会出现域名污染等问题,以及升级之后出现的 Linux 内核版本问题,需要升级 Linux 内核。
幸运的是所有遇到的问题都好解决。
最后回到 VirtualBox 升级 WSL 1 到 WSL 2 的问题,由于 VBox 7.1 (未发布)之前即使是 7.0.x 版本都没有真正地支持 Hyper-V,因此就目前(2023-12)而言,在 VirtualBox 虚拟机的客户机内的 Windows 10 启用 WSL 2 是不可能的,运行 WSL 1 是可以的。
鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。
本文章可以转载,但是需要说明来源出处!
本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com