Windows下WSL的使用
安装步骤
安装WSL1
- 以管理员身份打开PowerShell并运行下面命令来开启Linux子系统功能
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
- 下载镜像并自动安装到默认位置
1 | Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile Debian.Appx -UseBasicParsing |
- 也可以手动下载并自定义安装位置
1 | curl.exe -L -o Debian.Appx https://aka.ms/wsl-debian-gnulinux |
- 其他系统镜像下载地址
- Ubuntu 18.04
- Ubuntu 18.04 ARM
- Ubuntu 16.04
- Debian GNU/Linux
- Kali Linux
- OpenSUSE Leap 42
- SUSE Linux Enterprise Server 12
- Fedora Remix for WSL
启用WSL2
在Win10 1903或更高版本中可启用WSL2
使用管理员权限通过执行如下命令打开【Linux子系统支持】及【启用虚拟平台功能】
1 | # 在 命令提示符 中启用功能,跟PowerShell二选一执行即可 |
下载安装WSL2的Linux内核安装包,下面是部分使用命令,现在通过wsl --install
已经可以自动安装了
1 | wsl --list --verbose # 查看已安装的Linux版本 |
- 可先设置好WSL的默认版本为1后再去商店安装Debian,然后再将默认版本改为WSL2后再去商店安装Ubuntu
迁移系统
- 导出系统并迁移根文件系统至D盘,管理员身份运行命令提示符
1 | # 迁移不需要卸载及重装WSL,直接注销和导入即可。在配置好WSL2环境的情况下,可不安装Debian APP直接导入先前的备份 |
- 如果代理软件和wsl2的sock端口冲突,可使用netsh winsock reset临时重置修复
1 | 参考的对象类型不支持尝试的操作。 |
其他命令
1 | wsl --status # 查看当前默认发行版和版本 |
编译内核
1 | # 除了使用官方内核外,还可以自己编译添加了更多功能的内核,首先查看当前使用的官方内核版本 |
打包模块
- 使用内核源码中提供的脚本自动将模块打包成VHDX镜像
1 | # 编译内核后安装模块到指定路径后通过脚本打包成VHDX镜像 |
- 也可手动执行下面命令来生成模块VHDX镜像(下面的内容便是上面脚本中要执行的)
1 | # 指定内核安装后内容所在的路径 |
- 在配置文件中指定内核及VHDX模块的路径
1 | # WSL2应用将从 2.5.1 才开始支持选择模块作为VHD分发【Update Kernel to 6.6.75 and switch modules to a vhd】 |
构建系统
- 除了使用官方提供的系统外,也可直接使用别人构建好的WSL2系统
1 | a. 下载打包好的WSL2系统:https://github.com/yuk7/AlpineWSL/releases/download/3.21.3-0/Alpine.zip |
- 还可以自己手动构建WSL2系统,主要依赖这个高级WSL系统安装和启动程序
1 | # 直接用Alpine和Ubuntu官方的rootfs制作WSL镜像 |
- 上面那个GO写的
wsldl.exe
程序的一些用法
1 | # 使用任何 install.tar(.gz),install.ext4.vhdx(.gz) 磁盘映像进行安装(仅限 WSL2) |
配置文件
现在 WSL2 和 Windows 主机的网络互通而且 IP 地址相同还支持了 IPv6 ,并且从外部可以同时访问 WSL2 和 Windows 的网络。并且 Windows 防火墙也能过滤 WSL 里的包了,再也不需要什么桥接网卡、端口转发之类的操作了。
既可安装Microsoft Store中的WSL,然后打开应用
WSL Settings
来通过GUI配置,也可手动修改配置文件来更改局部配置:仅在当前 WSL1 或 WSL2 系统生效的配置文件在发行版内的
/etc/wsl.conf
全局配置:仅在 WSL2 上所有已安装发行版的全局设置在Windows中的
%USERPROFILE%\.wslconfig
1 | # 例如以全局配置 C:\Users\leux\.wslconfig 为例 |
压缩VHDX
1 | # WSL2创建的VHDX默认使用ext4文件类型且容量上限为1TB,但由于虚拟磁盘大小是只增不减的,现将其压缩瘦身到实际占用大小 |
挂载硬盘
1 | # https://learn.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk |
其他说明
WSL需要运行Windows的版本要大于或等于16215版本,WSL2需要18362或更高版本,某些新特性仅在更高的系统版本上支持
启用相关组件后必须根据提示重启,WSL2须额外安装微软提供的WSL2内核,Linux子系统仅在系统驱动器上运行(通常是您的C:驱动器)
在WSL中运行Windows程序也可这样开关
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
0 禁用,1 启用,重启失效将
WSL2-Linux-Kernel/scripts/setlocalversion
中第208行echo "${KERNELVERSION}${file_localversion}${config_localversion}${LOCALVERSION}${scm_version}"
中的${scm_version}
删除即可去除内核版本后的+号