Skip to content

WSL 安装与使用

介绍

  • WSL 全称为 Windows Subsystem for Linux,即「适用于 Linux 的 Windows 子系统」。WSL 的诞生让 Windows 用户(开发人员)按原样运行 GNU/Linux 环境:包括大多数命令行工具、实用工具和应用程序,且不会产生虚拟机开销。

  • WSL 2 相比 WSL 1,Linux 内核是完整的,且支持 Docker。

  • WSL 2 访问本机系统的文件速度比 WSL 1 慢

  • 无法使用 KDE 和 GNOME 桌面


参考资料


安装

安装 | Dev on Windows with WSL

  • 开启「适用于 Linux 的 Windows 子系统」的附加功能:以管理员身份打开 PowerShell;运行以下命令,按照提示重启电脑
powershell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Microsoft Store 搜索 WSL,选择合适的分发版进行安装(若使用了网络代理,需关闭再打开 Microsoft Store)

使用

个人 WSL 开发配置

Linux 端安装配置 zsh - Linux 终端工具 - Seek Another Land

Miniconda3 安装与使用 - Seek Another Land

多账号 ssh 配置 - git 使用 - Seek Another Land

  • 确定 WSL 版本(1 or 2),下载合适的发行版(不同版本的 Ubuntu,WSLArch 等),设置账号和密码
  • 确认一些基本程序是否已安装,如 git、wget、curl 等;若未安装,需手动安装
  • git clone https://gitee.com/yangsl306/dotfiles.git,进行配置
    • 换源(Ubuntu 为 /etc/apt/sources.list,WSLArch 等)
    • git 及 多账号 ssh 配置(~/.gitconfig~/.ssh/configid_rsa.githubid_rsa.gitee
    • 安装、配置 zsh(.zshrc
    • 配置 vim
    • 安装 Miniconda3,换源(.condarc
    • 若安装的是 WSL 2,进行网络代理设置(wslproxy

WSL 迁移到 D 盘

Move WSL to another drive in Windows - Anmup HD

  • WSL 默认安装在 C 盘,若安装 Intel oneAPI 和 texlive 等体积较大的软件时,会占用 C 盘较多的空间,因此需进行迁移。
  • WSL 迁移到非 C 盘后,MobaXterm 连接登录 WSL 会偶尔出现一次无法成功,需多次尝试的情况,总体影响不大
powershell
# 终止
wsl -t Ubuntu-22.04
# 导出
wsl --export Ubuntu-22.04 "D:\Ubuntu-2204.tar"
# 卸载
wsl --unregister Ubuntu-22.04
# 导入
wsl --import Ubuntu-22.04 "D:\Ubuntu-2204" "D:\Ubuntu-2204.tar"

WSL 2 网络代理

WSL 2 的一些网络访问问题 - 野声

WSL 2 中访问宿主机 Windows 的代理 - ZingLix Blog

WSL 2 中的网络访问问题

WSL 2 相关知识:Windows 和 WSL 2 算是在同一个局域网内,这个局域网是由 Hyper-V 创建的;WSL 2 使用的网络适配器是 'Default Hyper-V Switch',这个适配器每次重启都会被删除重建,这就是 WSL 2 为什么 IP 不固定的原因。


流程:


v2rayN 代理客户端允许局域网访问:设置 - 参数设置 - Core: 基础设置 - 勾选允许来自局域网的连接

text
端口:本地:[socks:10808] | [http(系统代理):10809] 局域网:[socks:10810] | [http:10811]

较新版本的 WSL 2 网络代理设置:打开或创建 wsl 配置文件(位置:%USERPROFILE%\.wslconfig),添加以下内容

bash
[experimental]
autoMemoryReclaim=gradual  # gradual  | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。 · Issue #10753 · microsoft/WSL · GitHub


常用命令

powershell
# 设置默认 WSL 版本为 2
wsl --set-default-version 2

# 设置 WSL 发行版版本为 2
wsl --set-version <Distro> 2

# 设置默认 WSL 发行版
wsl --set-default-version Ubuntu-22.04

# 列出 WSL 发行版及其信息
wsl -l -v

# 列出可安装的所有 WSL 发行版
wsl -l -o

# 卸载 WSL 发行版
wsl --unregister <Distro>

问题

安装 WSL 2 报错

WslRegisterDistribution failed with error: 0x800701bc · Issue #5393 · microsoft/WSL · GitHub

bash
WslRegisterDistribution failed with error: 0x800701bc

解决方法:更新 WSL 2 Linux kernel


默认用户设置

WSL Ubuntu设置普通用户为默认用户 - 简书

WSL Ubuntu 设置默认用户为普通用户:在 powershell 中输入以下命令

powershell
ubuntu config --default-user <username>

ubuntu2204 config --default-user <username>

WSLArch 设置默认用户为普通用户:在 /etc/wsl.conf 添加以下内容,在 powershell 中输入 wsl --shutdown 关闭 WSL

bash
[user] 
default=myuser

WSL 可被分配的最大内存

WSL 2 在可用内存允许的情况下可以分配更大的内存量,而 WSL 1 的可用内存通常受到一定限制,约为 4 GB。