Win11安装wsl wsl2
Windows 安装 wsl
本文简要介绍 WSL2 的自定义位置安装。比较简略,适合有一定经验的选手回忆用
基本流程为,从链接下载一个程序包,然后解压缩到指定位置,运行ubuntu.exe
即可
🔗WSL 的手动安装步骤 | Microsoft Learn
🔗https://aka.ms/wslubuntu (最新版 ubuntu 的 AppxBundle 包)
WSL2 手动安装流程
首先对 WSL2 是什么有个基本了解。然后如果不想从应用商店或者直接命令 install(默认 C 盘)的话,按照上述链接去下载一个包。
与此同时,参考下面的 1、2、3、4 命令,检查计算机环境是否准备好了,并设置你想安装的 wsl 版本号。
如果不是第一次安装,或者是想卸载之前的,可以参考 5、6、15、16 命令
配置完成后,打开下载好的 appx 文件,后缀名改为 zip,然后解压缩到你想要的文件夹,比如 E:\wsl。注意,官方教程说双击也能运行,确实,双击还是安装默认位置 ,那此举属实是有点脱裤子放💨
所以要解压,有可能你下载的是一个版本包,里面有多个 appx,有 arm64 的、x64 的,还有一些缩放的。解压你对应的那个版本,然后运行.\ubuntu.exe
,就会自动安装了,安装完后 wsl2 可以看到一个vhdx文件,那就是它的虚拟磁盘。
如果这之间发生了什么异常,首先检查是不是虚拟化什么的没准备好,如果好了,那 STFW
打开systemd
执行
echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf
然后执行 ps --no-headers -o comm 1
检查是否已打开。如果是显示为 system
就是开启成功,如果是init
则为失败
sudo 免密码
# 新建
sudo vim /etc/sudoers.d/[yourname]
# 添加:
[yourname] ALL=(ALL) NOPASSWD: ALL
git
其实git安装以及连接github本来不值得单独写的,但是我确实碰上了一次问题。就是 ssh -T git@github.com
疯狂问我要密码,怎么也连接不上。
这里记录一下踩的坑,网上有很多教程,有的说是github代理不对,让改 /etc/wsl.conf以及 /etc/resolve.conf,代理改成8.8.8.8。我一看,好像确实github.com被解析到127.0.0.1了呀,于是也怀疑是wsl2的网络问题,于是改,刷新windwos dns一大堆。当然,没有效果。
还有跟着github官方教程,生成了n多次密码,还尝试了 ssh-add
这种之前没见过的命令,也没用。
最终解决的方法很简单,就是端口443没指定好
ssh -T -p 443 git@ssh.github.com
如果这个命令能通,那么在 ~/.ssh/config
中添加
Host github
HostName ssh.github.com
Port 443
User git
然后就可以了,一切都可以了。很奇怪,之前装了n多次git了,第一次碰上这个问题。但是又解决得这么简单。之前也写过config文件,但是没印象要特设github才能行呀。。。
WSL1 手动安装流程
鉴于 WSL2 丢失 wifi 的情况,如果想安装 wsl1,那么只需要wsl --set-default-version 1
,然后仍然按照上述流程走就好了。运行完.\ubuntu.exe
后得到的就是 wsl1
常用命令(WSL)
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
检查是否开启了 wsl 功能。还有什么系统版本、HyperV 之类的都检查一下dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
上一步发现Enable的用这条命令开启 wsl 功能dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
开启虚拟化。这里官方教程说WSL2 需要,而且需要重启。WSL1 的俺忘了- 注意 win11 开这个有可能会痛失 wifi 使用权,如果碰到了这个问题,我的建议是用 VM。下个 debain 的无 gui 版本,用 windows terminal 连,一个样。你不说谁知道是 wsl2 还是 vm
- 如果已经发生了上述问题,执行:
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
- 手动重启(必须手动,实践出真知,不指定
/norestart
,从命令行执行 y 重启不行)
- 有一说一,win11 丢 wifi 很早之前就有了,刚出来的时候,开内核隔离还是内存完整性来着,就会丢 wifi 模块,大概都是虚拟化相关。两三年了还没修,又让我重蹈覆辙一次,fucking ridiculous
wsl --set-default-version 2
设置默认版本号wsl --list --verbose
列出本机的 wslwsl --unregister <DistributionName>
卸载wsl --set-version <distribution name> <versionNumber>
wsl --distribution <Distribution Name> --user <User Name>
运行特定版本wsl --status
wsl --shutdown
立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。 在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。wsl --terminate <Distribution Name>
终止指定的发行版或阻止其运行wsl --export <Distribution Name> <FileName>
:导入导出,可以进行迁移,也是一种指定安装位置的手法wsl --import <Distribution Name> <InstallLocation> <FileName>
- 将指定 tar 文件导入和导出为新的发行版。 在标准输入中,文件名可以是 -。 选项包括:
--vhd
:指定导入/导出分发应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)--version
:(仅导入)指定将发行版导入为 WSL 1 还是 WSL 2 发行版
Get-AppxPackage -allusers | grep -i ubuntu
搜索安装的 ubuntu 包Remove-AppxPackage -Package <PackageFullName>
移除包。可能手动安装新的包时需要这两条命令(比如出现什么更高版本已安装的问题)