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
:
sudo update-alternatives --config iptables
输入 “1” 并回车选择 “iptables-legacy”
sudo service docker start
接下来 Docker 就可以正常使用了。