Win11下WSL2配置记录
最近电脑老是无响应,C盘也快满了,就寻思着把系统重装下
听说现在Win11更到了23H2了,抱着尝尝鲜的想法,我决定把系统升个级
顺便用WSL2装了个Ubuntu,挺舒服的。
WSL 是什么
WSL,全称 适用于 Linux 的 Windows 子系统。
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
使用 WSL 安装和运行各种 Linux 发行版,例如 Ubuntu、Debian、Kali 等。 安装 Linux 发行版并从 Microsoft Store 接收自动更新、导入 Microsoft Store 中不可用的 Linux 发行版,或构建你自己的客户 Linux 发行版。
将文件存储在独立的 Linux 文件系统中,具体取决于安装的发行版。
运行命令行工具,例如 BASH。
运行常用的 BASH 命令行工具(例如
grep
、sed
、awk
)或其他 ELF-64 二进制文件。运行 Bash 脚本和 GNU/Linux 命令行应用程序,包括:
- 工具:vim、emacs、tmux
- 语言:NodeJS、JavaScript、Python、Ruby、C/C++、C# 和 F#、Rust、Go 等。
- 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
使用自己的 GNU/Linux 分发包管理器安装其他软件。
使用类似于 Unix 的命令行 调用 Windows 应用程序。
在 Windows 上调用 GNU/Linux 应用程序。
运行直接集成到 Windows 桌面的 GNU/Linux 图形应用程序
使用你的设备 GPU 加速 Linux 上运行的机器学习工作负载。
简而言之,WSL可以让你在Windows上安装Linux子系统而无需其他的软件如 VMWare
碎碎念:VMWare的vmware-hosted老是占掉我的443端口导致Steam++加速失败,还得我手动去关qwq
WSL2 又是什么
安装 Linux 发行版时,WSL 2 是默认发行版类型。 WSL 2 使用虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 Linux 发行版作为独立的容器在 WSL 2 托管 VM 内运行。 通过 WSL 2 运行的 Linux 发行版将共享同一网络命名空间、设备树(而非
/dev/pts
)、CPU/内核/内存/交换空间、/init
二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和init
进程。WSL 2 提高了文件系统性能,并且与 WSL 1 体系结构相比增加了完整的系统调用兼容性。 详细了解 WSL 1 和 WSL 2 的比较。
单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 请参阅设置 WSL 版本命令。
安装 WSL2 及 Linux发行版
环境检查
Win+R 输入 winver
回车以查看你的 Windows版本。
若要更新到 WSL 2,需要运行 Windows 10。
- 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
- 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。
或 Windows 11。
启用 WSL 功能
Win+Q 打开搜索框,查找 启用或关闭Windows功能 。
打开后,勾选 虚拟机平台 和 适用于 Linux 的 Windows 子系统
如图示
设置默认安装 WSL2
为了安装 WSL2,需要先安装 WSL2 的内核更新包:适用于 x64 计算机的 WSL2 Linux 内核更新包。
下载后双击安装。
安装后,打开 CMD ,使用该指令将 WSL2 设置为默认版本:
wsl --set-default-version 2
升级 WSL2 至最新版本
打开 CMD ,输入指令:
wsl --update
完成后可输入以下指令验证是否升级成功:
wsl --version
安装至非C盘
微软的文档的安装方法很简单,一行指令的事:
wsl --install
但是,这个安装方法会将Linux发行版默认安装至C盘
如果你的C盘很大,那你随意
如果你不想将其安装到C盘,那么请继续往下看
首先,去官网下载你想要的Linux发行版:下载发行版
将安装包下载下来后,创建一个 你想要的发行版的安装目录,然后将安装包移动至目录中。
再将其后缀改为 .zip
,解压。解压后你会得到一个文件夹,如果文件夹中有 .exe
文件那双击安装就可以了
如果解压后文件夹内有多个 .appx
文件,那就根据自己的平台找到那个 <发行版名称及版本>_x64.appx
文件 或 <发行版名称及版本>_ARM64.appx
,将其后缀改为 .zip
再次解压,这样就可以得到 .exe
文件了。
这时候,双击 .exe
文件,就能开始安装Linux子系统了。
安装时根据向导进行相应的设置即可。不过注意在设置用户名时只能设置小写字母、数字和下划线(不能使用大写字母)。
至此我们已经安装好了 WSL2,在 CMD 中使用命令可以检查我们安装的版本:
wsl -l -v
配置 Linux 发行版
那么咱们现在开始配置Linux发行版(以 Ubuntu 22.04
为例
打开 CMD,输入以下指令进入已安装的发行版:
wsl
换源并更新软件包
进入系统的第一步当然是换源
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
如果你想把安全更新的源也给换了,那就使用如下指令:
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
使用 HTTPS 可以有效避免国内运营商的缓存劫持
sudo sed -i 's/http:/https:/g' /etc/apt/sources.list
更新软件包:
sudo apt-get update && sudo apt-get upgrade -y
启用 systemd
命令行输入
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf
随后退出Linux环境,输入
wsl --shutdown
重启Linux。随后输入wsl
进入Linux发行版即可。
通过在Linux发行版内执行
systemctl list-unit-files --type=service
确认systemd启用情况。
将语言设置为中文
生成简体中文环境支持文件
sudo locale-gen zh_CN.UTF-8
安装语言包
sudo apt-get install language-pack-zh-hans language-pack-zh-hant -y
安装字符集
cd /usr/share/locales && sudo ./install-language-pack zh_CN
将语言配置写入 /etc/profile
文件
sudo sed -i '$a export LANG=zh_CN.UTF-8\nexport LANGUAGE=zh_CN:zh' /etc/profile
使配置生效
source /etc/profile
验证是否生效
locale
如果生效了,终端应该会有如下的输出:
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
固定Linux发行版的ip地址
在Windows用户目录 %USERPROFILE%
下面创建一个配置文件 .wslconfig,写入以下内容:
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
再在终端输入
wsl --shutdown
重启wsl,再进入就可以了
以后想从Windows访问Linux内的服务就可以通过在浏览器中输入 localhost:<端口号>
来访问
潦草地结束
我受不了这个Win11了,一堆bug,好多应用都是全篇乱码,到网上找了解决方法也没起用
不是说已经23H2了吗,不应该整的很好吗(挠头
哦听说是阿三做的啊,那没事了
微软你不会做可以不要做,不要把这个做成一坨的东西端上来
虽然win11UI挺好看的
直接msdn rufus启动,win10我tm莱纳