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;运行以下命令,按照提示重启电脑

1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Microsoft Store 搜索 WSL,选择合适的分发版进行安装(若使用了网络代理,需关闭再打开 Microsoft Store)

使用

个人 WSL 开发配置

  • 确定 WSL 版本(1 or 2),下载合适的发行版(不同版本的 Ubuntu,WSLArch 等),设置账号和密码
  • 若安装的是 WSL 2,进行网络代理设置
  • 基础程序安装(如 Git、wget、curl 等)
  • 配置步骤
    • 换源
    • Git 及多账号 ssh 配置
    • 安装、配置 zsh
    • 配置 Vim
    • Python 环境搭建

WSL 迁移到 D 盘

  • 参考:Move WSL to another drive in Windows - Anmup HD

  • WSL 默认安装在 C 盘,若安装 Intel oneAPI 和 Tex Live 等体积较大的软件时,会占用 C 盘较多的空间,强烈建议迁移

  • WSL 迁移到非 C 盘后,MobaXterm 连接登录 WSL 会偶尔出现一次无法成功,需多次尝试的情况,总体影响不大

1
2
3
4
5
6
7
8
# 终止
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 网络代理

1
2
3
4
5
6
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
  • 方法 2:
    • Windows 主机上的网络代理软件允许局域网访问
      • v2rayN 代理客户端允许局域网访问:设置 – 参数设置 – Core: 基础设置 – 勾选允许来自局域网的连接
    • 获取 Windows 主机 IP
    • 设置 WSL 2 的代理
    • Shell 脚本:proxywsl · Falling Slowly/dotfiles - Gitee.comproxy.sh
1
端口:本地:[socks:10808] | [http(系统代理):10809] 局域网:[socks:10810] | [http:10811]

常用命令

1
2
3
4
5
6
7
8
9
10
11
wsl -l -v                       # 列出 WSL 发行版及其信息
wsl -l -o # 列出可安装的所有 WSL 发行版

wsl --shutdown # 关闭 WSL
wsl --unregister XXX # 卸载 WSL 发行版

wsl --set-default-version 2 # 设置 WSL 默认版本为 2
wsl --set-version XXX 2 # 设置 WSL 发行版版本为 2
wsl --set-default-version XXX # 设置默认 WSL 发行版

wslconfig # 查看 WSL 配置

其他

1
2

sudo ln -sf /mnt/d/XXX/chrome.exe /usr/bin/chrome
1
2
3
4
5
6
7
8
9
sudo apt install openssh-server

# 编辑文件 /etc/ssh/sshd_config
Port 321 # 端口配置;端口可自定义
PasswordAuthentication yes # 密码验证

sudo service ssh --full-restart

# 创建新的 SSH 连接并配置 host 和 port 为 127.0.0.1 和 6666

问题

1
WslRegisterDistribution failed with error: 0x800701bc
1
2
3
4
5
6
# 在 PowerShell 中输入以下命令
ubuntu config --default-user <username>

# /etc/wsl.conf 添加内容
[user]
default=myuser
  • WSL 可被分配的最大内存:WSL 2 在可用内存允许的情况下可以分配更大的内存量,而 WSL 1 的可用内存通常受到一定限制,约为 4 GB;WSL2高级使用 - 我是谁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 好像没效果
[wsl2]
# 自定义 Linux 内核的绝对路径
kernel=<path> # <path> 须是带反斜杠的绝对路径
# 给 WSL 2 虚拟机分配的内存大小
memory=<size> # <size> 须在后面加上单位,如 GB、MB
# 为 WSL 2 虚拟机分配的处理器核心数量
processors=<number>
# 为 WSL 2 虚拟机分配的交换空间,0 表示没有交换空间
swap=<size>
# 自定义交换虚拟磁盘 vhd 的绝对路径
swapFile=<path>
# 是否允许将 WSL 2 的端口转发到主机(默认为 true)
localhostForwarding=<bool>