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文件,那就是它的虚拟磁盘。

image-20231211235919937

如果这之间发生了什么异常,首先检查是不是虚拟化什么的没准备好,如果好了,那 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)

  1. Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux检查是否开启了 wsl 功能。还有什么系统版本、HyperV 之类的都检查一下
  2. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart上一步发现Enable的用这条命令开启 wsl 功能
  3. dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart开启虚拟化。这里官方教程说WSL2 需要,而且需要重启。WSL1 的俺忘了
    • 注意 win11 开这个有可能会痛失 wifi 使用权,如果碰到了这个问题,我的建议是用 VM。下个 debain 的无 gui 版本,用 windows terminal 连,一个样。你不说谁知道是 wsl2 还是 vm
    • 如果已经发生了上述问题,执行:
      1. dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
      2. 手动重启(必须手动,实践出真知,不指定/norestart,从命令行执行 y 重启不行)
    • 有一说一,win11 丢 wifi 很早之前就有了,刚出来的时候,开内核隔离还是内存完整性来着,就会丢 wifi 模块,大概都是虚拟化相关。两三年了还没修,又让我重蹈覆辙一次,fucking ridiculous
  4. wsl --set-default-version 2 设置默认版本号
  5. wsl --list --verbose列出本机的 wsl
  6. wsl --unregister <DistributionName>卸载
  7. wsl --set-version <distribution name> <versionNumber>
  8. wsl --distribution <Distribution Name> --user <User Name>运行特定版本
  9. wsl --status
  10. wsl --shutdown立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。 在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。
  11. wsl --terminate <Distribution Name>终止指定的发行版或阻止其运行
  12. wsl --export <Distribution Name> <FileName>:导入导出,可以进行迁移,也是一种指定安装位置的手法
  13. wsl --import <Distribution Name> <InstallLocation> <FileName>
  14. 将指定 tar 文件导入和导出为新的发行版。 在标准输入中,文件名可以是 -。 选项包括:
    • --vhd:指定导入/导出分发应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
    • --version:(仅导入)指定将发行版导入为 WSL 1 还是 WSL 2 发行版
  15. Get-AppxPackage -allusers | grep -i ubuntu搜索安装的 ubuntu 包
  16. Remove-AppxPackage -Package <PackageFullName>移除包。可能手动安装新的包时需要这两条命令(比如出现什么更高版本已安装的问题)
posted @ 2023-12-12 01:07  开宝特攻  阅读(389)  评论(0编辑  收藏  举报
Back to Top Button