跳到主要内容

WSL2的安装与体验

· 阅读需 4 分钟
声明

本文版权归原作者所有,转载请注明出处。

每次需要 Linux 的时候都要开一台虚拟机太麻烦,于是想着安装个 WSL 2 体验一波,感觉还不错,非常方便,尤其是使用 Docker 的体验,在镜像网络模式下,端口与主机共享,打靶场以及打攻防感觉很棒。

安装步骤

然后重新启动电脑。

首先要更新一下 wsl:

wsl --update

查看有哪些可用的 Linux 发行版:

wsl --list --online 

安装指定发行版:

wsl --install -d <发行版名称> --web-download

设置进入的默认用户:

# 进入powershell
<发行版名称>.exe config --default-user <用户名>

相关配置

WSL 常用全局配置:

# 用户文件夹下的 .wslconfig
[wsl2]
memory=2GB
processors=2
swap=4GB
networkingMode=mirrored # 镜像网络

[experimental]
autoMemoryReclaim=dropcache # 缓存内存释放
hostAddressLoopback=true # 本地回环监听

启用 systemd,启用后在终端启动 WSL 会变慢,一般没特殊需求建议关闭,不影响 docker:

# vi /etc/wsl.conf
[boot]
systemd=true

如果需要 docker 监听的端口与 Windows 也能访问,则需要关闭 docker 的 iptables,文件如下:

/etc/docker/daemon.json

{
"iptables": false
}

升级内核(手动编译)

默认的 WSL 内核版本目前是 5.13,想要升级至 6.0 的内核,则需要手动编译。

步骤参考:How to use the Microsoft Linux kernel v6 on WSL2 | Microsoft Learn

编译后是一次性的,如果删除 WSL 即使保留内核也没用,因为还需要内核模块,除非你把内核模块都打包备份,下次用解压至指定路径,不同发行版应该也都不通用。

克隆需要的内核版本源代码,目前版本最新是 6.6.y,视情况而定:

git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 -b linux-msft-wsl-6.6.y
  1. 安装依赖,其中 rsync 软件包 kali 当中没有,会影响内核模块的安装,我这里加上了:
sudo apt update && sudo apt install build-essential flex bison libssl-dev libelf-dev bc python3 pahole rsync -y
  1. 进入源代码目录:
cd WSL2-Linux-Kernel
  1. 编译内核:
make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl
  1. 安装内核模块,可能下次启动
sudo make modules_install headers_install
  1. 复制内核至 D 盘,其他位置也行:
cp arch/x86/boot/bzImage /mnt/d/
  1. 全局搜索 kernel 文件,建议使用 everything,我的是在 C:\Program Files\WSL\tools,将内核文件放在此目录,其他目录也行无所谓,然后在配置文件中添加:

.wslconfig

[wsl2]
kernel=<内核文件路径>

重启 WSL ,运行以下命令查看内核模块是否安装,如果没有安装,需要再次执行步骤 4:

ls /lib/modules/$(uname -r)/