Hugh's Blog

WSL2 安装与使用

 

检查安装要求

具体可以看: 这里

To update to WSL 2, you must be running Windows 10…

  • For x64 systems: Version 1903 or later, with Build 18362.1049 or later.
  • For ARM64 systems: Version 2004 or later, with Build 19041 or later.

开启虚拟化等功能

控制面板 -> 启动或关闭 Windows 功能,勾选 Hyper-V、适用于 Linux 的 Windows 子系统、虚拟机平台

安装 Linux 内核更新包

如果未安装的话,可能会出现错误:0x800701bc,下载地址:这里

安装 Ubuntu

由于我的是企业版,没有 Windows Store,所以使用命令行安装。

# 列出可用列表
wsl --list --online

# 安装完成后,会提示输入用户名及密码
wsl --install -d Ubuntu-24.04

# 查看当前的系统列表
#   NAME            STATE           VERSION
# * Ubuntu-24.04    Running         2
wsl -l -v

需要注意的问题

一、修改默认盘

默认安装在 C 盘,避免文件过大,需要进行迁移。

# 关闭所有虚拟机
wsl --shutdown

# 导出虚拟机文件,名称可以通过
wsl --export Ubuntu-24.04 "D:\Ubuntu-24.04.tar"

# 注销需要替换的虚拟机
wsl --unregister Ubuntu-24.04

# 重新导入虚拟机(需要保证 D:\WSL 目录存在)
wsl --import Ubuntu-24.04 "D:\WSL" "D:\Ubuntu-24.04.tar" --version 2

二、压缩磁盘占用

避免使用过程中文件占用越来越大,可以进行压缩以减少空间占用,需要先找到虚拟机的磁盘文件,一般文件名为:ext4.vhdx

# 关闭所有虚拟机
wsl --shutdown
 
# 进入磁盘管理
diskpart
 
# 选择虚拟磁盘文件
select vdisk file="D:\WSL\ext4.vhdx"
 
# 压缩文件
compact vdisk
 
# 压缩完成后卸载磁盘
detach vdisk

三、WSL 配置

WSL 的配置分为两个,一个位于 Windows 用户配置目录中 %userprofile%/.wslconfig,另一个位于虚拟机中 /etc/wsl.conf,具体的可以看:这里

.wslconfig

[wsl2]
processors=2
memory=4GB
swap=4GB
swapfile=D:\\WSL\\swap.vhdx

wsl.conf

[boot]
systemd=true

[user]
default=hugh

[network]
hostname=wsl

四、Docker 使用

使用 Docker 的时候,碰到两个问题,一个是网络原因导致的安装失败,另一个是由于 iptables 导致的启动失败。

安装过程中配置代理:

# 1. 使用 proxychains 全局代理
# https://github.com/rofl0r/proxychains-ng
sudo apt install -y proxychains4
sudo vim /etc/proxychains4.conf
# socks5  127.0.0.1 1080

# 2. 配置 apt 代理以加速安装
sudo vim /etc/apt/apt.conf.d/proxy.conf
# Acquire::http::Proxy "http://127.0.0.1:1081";
# Acquire::https::Proxy "http://127.0.0.1:1081";

# 安装 Docker
# 这一步会失败,因为有一个 curl 命令没有配置代理导致下载失败
# 下载 sh 安装文件并修改 curl 命令为 curl -x socks5://127.0.0.1:1080
curl -sSL https://get.docker.com/ | sh

# 配置用户组
sudo groupadd docker
sudo usermod -aG docker $USER
groups $USER

由于 Ubuntu 22.04 LTS 及之后的版本默认使用 iptables-nft,需要切换成 iptables-legacy

  1. sudo update-alternatives --config iptables

  2. 输入 “1” 并回车选择 “iptables-legacy”

  3. sudo service docker start

接下来 Docker 就可以正常使用了。