You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用wsl --shutdown命令导致Windows崩溃,寻求无需重启Windows即可关闭WSL2以压缩虚拟硬盘的方案

wsl --shutdown命令导致Windows崩溃,寻求无需重启Windows即可关闭WSL2以压缩虚拟硬盘的方案

兄弟,我太懂你这种WSL shutdown导致系统僵住的糟心体验了——之前帮不少用户解决过类似问题,给你几个靠谱的替代方案,不用重启Windows就能安全关掉WSL2,之后就能顺利压缩虚拟硬盘了:

  • 逐个终止单独的WSL发行版:比起全局的wsl --shutdown,逐个关闭发行版要温和得多,能避免系统卡死。操作步骤如下:

    1. 打开PowerShell或CMD,输入wsl -l -v查看当前运行的发行版(STATUS显示Running的就是)
    2. 对每个运行中的发行版执行wsl --terminate <发行版名称>,比如wsl --terminate Ubuntu-22.04
    3. 再次用wsl -l -v确认所有发行版都处于Stopped状态即可
  • 通过任务管理器结束WSL相关进程:如果上面的方法不管用,直接从进程层面入手:

    1. 按下Ctrl+Shift+Esc打开任务管理器,切换到「详细信息」标签
    2. 找到并结束以下进程(建议按顺序来):
      • 对应你WSL发行版的进程(比如ubuntu.exe
      • wslhost.exe
      • vmcompute.exe
    3. 等这些进程全部结束后,WSL2就彻底关闭了
  • 在WSL内部主动关机:打开你的WSL终端,直接在Linux环境里执行关机命令,让发行版正常退出:

    1. 如果只是普通退出,输入exit即可;如果有后台进程在运行,先执行pkill -u $USER杀掉当前用户的所有进程(需要的话加sudo)
    2. 或者直接执行sudo shutdown now,让WSL发行版自己完成关机流程,这样也不会触发全局shutdown的问题

当WSL2完全关闭后,你就可以开始压缩虚拟硬盘了,步骤如下:

  1. 打开PowerShell,输入diskpart启动磁盘分区工具
  2. 依次执行以下命令(记得替换成你自己的文件路径):
    select vdisk file="C:\Users\<你的用户名>\AppData\Local\Packages\<发行版包名>\LocalState\ext4.vhdx"
    attach vdisk readonly
    compact vdisk
    detach vdisk
    
  3. 发行版包名可以通过PowerShell命令Get-AppxPackage *<发行版关键词>*查找,比如Ubuntu的话就用Get-AppxPackage *Ubuntu*

这些方法我自己亲测有效,碰到wsl --shutdown卡死的情况,用这些替代方案基本都能解决,你可以逐个试试哪个最适配你的系统~

备注:内容来源于stack exchange,提问作者theSparky

火山引擎 最新活动