WSL 启动闪退问题排查

第一步:检查当前状态

在开始折腾 BIOS 之前,我们先确认一下系统到底有没有识别到虚拟化。

  1. 按下快捷键 Ctrl + Shift + Esc 打开任务管理器。
  2. 点击左侧的“性能”图标,选择 “CPU”。
  3. 看右下角的信息,找到 “虚拟化”:
    • 如果是“已启用”:说明 BIOS 已经开了,请直接跳到 第三步
    • 如果是“已禁用”:请继续 第二步

第二步:在 BIOS 中开启虚拟化(戴尔品牌机为例)

这是最关键的一步。戴尔电脑进入 BIOS 的方法比较统一,请仔细操作。

  1. 重启电脑
  2. 在屏幕变黑后重新亮起,出现 DELL 标志的瞬间,连续快速敲击 F2,直到进入 BIOS 设置界面。
    • 注意:如果 F2 没反应,可以尝试关机后按住 Shift 键再开机,或者在 Windows 设置 -> 系统 -> 恢复 -> 高级启动 -> 立即重新启动 -> 疑难解答 -> 高级选项 -> UEFI 固件设置中进入。
  3. 进入 BIOS 后,界面可能因机型不同而异,请寻找以下路径(通常在左侧菜单树中):
    • 路径 A(常见): 展开 Virtualization Support(虚拟化支持) -> 点击 Virtualization(虚拟化)。
    • 路径 B: 展开 System Configuration(系统配置) -> BIOS Core Configuration -> Virtualization
    • 路径 C: 展开 Processor Settings(处理器设置)。
  4. 在右侧找到 Enable Intel Virtualization Technology(开启英特尔虚拟化技术)或类似的选项。
  5. 勾选该选项前的复选框,或者将其状态从 Disabled 改为 Enabled
  6. 建议一并开启: 如果有 VT for Direct I/O (VT-d) 选项,也建议勾选/开启,这有助于 WSL2 的性能。
  7. 点击底部的 “Apply Changes”(应用更改)或按 F10 保存并退出。
  8. 电脑会自动重启。

第三步:在 Windows 11 中启用组件

BIOS 开启后,还需要告诉 Windows 11 去调用它。

  1. 按下 Win + R 键,输入 optionalfeatures 并回车。
  2. 在弹出的“Windows 功能”窗口中,找到并勾选以下两项(如果没有这两项,说明你的系统版本可能受限,见下文提示):
    • 适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
    • 虚拟机平台 (Virtual Machine Platform)
  3. 注意:如果你使用的是专业版,也可以勾选 Hyper-V,但对于 WSL2 来说,前两项是必须的。
  4. 点击确定,系统会自动搜索并安装文件。
  5. 必须重启电脑才能生效。

第四步:排查冲突(如果依然闪退)

如果以上都做了,WSL 还是闪退,很可能是“基于虚拟化的安全性 (VBS)”在捣乱,它有时会独占虚拟化资源,导致 WSL 无法启动。

  1. 打开 Windows 设置 -> 隐私和安全性 -> Windows 安全中心。
  2. 点击 “设备安全性”。
  3. 找到 “内核隔离” (Core Isolation),点击“内核隔离详细信息”。
  4. 将 “内存完整性” 的开关设置为 关闭 (Off)
  5. 重启电脑后再试。

总结检查表

步骤操作预期结果
1任务管理器查看 CPU显示“虚拟化:已启用”
2戴尔 BIOS (F2) 设置Virtualization 设为 Enabled
3Windows 功能勾选“虚拟机平台”和“WSL”
4最终测试在 PowerShell 输入 wsl 能正常进入 Linux 终端

问题 1:上述四个步骤都没有问题,但是 WSL 启动依旧会闪退,没有任何报错代码

1. 尝试以 Root 身份启动(最快诊断法)

很多时候闪退是因为默认用户的配置文件(.bashrc 等)损坏,或者权限错乱。

  • 操作: 打开 PowerShell,输入以下命令并回车:
  • wsl -u root

结果分析:

  • 如果能成功进入(显示 root@你的电脑名:/#): 说明系统核心没问题,只是你原来的用户配置坏了。你可以在里面执行 adduser <新用户名> 创建一个新用户,以后用新用户登录即可。
  • 如果依然闪退: 说明是系统级环境问题,请继续下一步。

2. 彻底重置 WSL 服务

有时候后台残留的僵尸进程会卡住启动。

  • 操作:PowerShell(管理员) 中依次执行:

    wsl --shutdown
    wsl --unregister Ubuntu
    • 注意: wsl --unregister Ubuntu 会删除该发行版内的所有数据(文件、代码等)。如果你里面有重要数据,请先尝试在文件资源管理器地址栏输入 \\wsl$ 看看能不能把文件拷出来。
  • 重装: 卸载后,去微软应用商店(Microsoft Store)重新搜索 Ubuntu 并安装,或者在 PowerShell 输入 wsl --install -d Ubuntu

3. 修改 wsl.conf 禁用自动挂载(解决挂载冲突)

WSL 启动时会自动挂载 Windows 磁盘,如果 Windows 的磁盘服务(如 BitLocker 或某些磁盘错误)有卡顿,会导致 WSL 启动超时从而闪退。

  • 操作:

    1. 在文件资源管理器地址栏输入 %localappdata%\Packages 并回车。

    2. 找到类似 CanonicalGroupLimited.Ubuntu... 的文件夹(这是 Ubuntu 的安装目录)。

    3. 进入 LocalState 文件夹。

    4. 新建一个文本文件,命名为 wsl.conf(注意不是 .txt)。

    5. 用记事本打开它,写入以下内容:

      [automount]
      enabled = false
      [network]
      generateHosts = false
      generateResolvConf = false
    6. 保存并关闭,然后再次尝试启动 WSL。

4. 解决显卡驱动冲突(WSLg 问题)

Win11 的 WSL2 支持图形界面(WSLg),如果你的显卡驱动(尤其是 NVIDIA 驱动)与 WSL 的图形组件不兼容,会导致启动瞬间崩溃。

  • 操作:
    1. 打开 设备管理器 (Win + X -> 设备管理器)。
    2. 找到 显示适配器,右键点击你的独立显卡(如 NVIDIA GeForce ...)。
    3. 选择 “禁用设备”(不要卸载,禁用即可)。
    4. 再次尝试启动 WSL。
  • 后续: 如果禁用后能启动,说明是显卡驱动问题。建议去 NVIDIA 官网下载最新的 Studio Driver(工作室版驱动)而不是 Game Ready 驱动,通常对 WSL 兼容性更好。

5. 检查第三方杀毒软件

如果你安装了 360、火绒、迈克菲 (McAfee) 等第三方杀毒软件,它们可能会拦截 WSL 的内核调用。

  • 操作: 暂时退出所有第三方杀毒软件,或者关闭它们的“系统防护/行为监控”功能,然后再试。

6. 最后的绝招:手动安装旧版内核

如果以上都不行,可能是最新的 WSL 内核更新包与你的系统版本冲突。

  • 操作:
    • 去微软官网或 GitHub 下载 WSL2 Linux kernel update package for x64 machines(通常是 .msi 文件)。
    • 手动运行安装。
    • 或者,在 PowerShell 中运行 wsl --update 看看是否有更新提示。

问题 2:适用于 Linux 的 Windows 子系统没有已安装的分发的情况

wsl -u root 报错“没有已安装的分发”,说明你之前的 WSL 发行版(比如 Ubuntu)已经被彻底卸载、损坏或者注册表信息丢失了。

简单来说:你的电脑里现在只有“WSL 这个软件”,但没有“Linux 系统”本身。就像一个游戏机里没放游戏光盘,所以怎么按启动键都没反应。

别担心,我们重新装一个只需要几分钟。请按照以下步骤操作:

🚀 方法一:一键自动安装(推荐)

这是最简单的方法,Windows 会自动帮你下载并配置好 Ubuntu。

  1. 打开 PowerShell(管理员): 按下 Win + X 键,选择 “Windows PowerShell (管理员)” 或 “终端 (管理员)”。

  2. 输入安装命令:

    wsl --install
  3. 等待下载: 系统会自动下载默认的 Ubuntu 版本。这可能需要几分钟,取决于网速。 注意:如果提示“请求的服务不存在”或类似错误,说明 WSL 服务没启动,请看文末的“特殊情况”。

  4. 重启电脑: 安装完成后,必须重启电脑才能生效。

  5. 初始化设置:

    • 重启后,WSL 窗口会自动弹出。
    • 它会提示你创建 UNIX 用户名(输入你想要的用户名,回车)。
    • 然后输入密码(注意:输入密码时屏幕上不会显示任何字符,输完回车即可)。

🛒 方法二:通过微软应用商店安装(如果方法一失败)

如果命令行安装卡住或报错,可以用图形界面安装。

  1. 按下 Win + S,搜索并打开 Microsoft Store(微软应用商店)。
  2. 在商店搜索栏输入 Ubuntu
  3. 选择 Ubuntu 22.04 LTSUbuntu 24.04 LTS
  4. 点击 “获取”“安装” 按钮。
  5. 下载完成后,点击 “启动”,或者在开始菜单里找到 Ubuntu 图标点击运行。
  6. 同样会进入黑底白字的初始化界面,按照提示设置用户名和密码即可。

🛠️ 安装后的验证

安装并设置好之后,你可以再次打开 PowerShell 输入以下命令,确认一切正常:

wsl -l -v
  • 正常结果: 会显示 * Ubuntu Running 2
  • STATEStopped:说明安装成功,只是没在运行,输入 wsl 即可启动。

⚠️ 特殊情况:如果输入 wsl --install 报错

如果你输入命令后提示 “请求的服务不存在” 或 “错误代码: Wsl/Service...”:

  1. 再次检查 BIOS 虚拟化 是否开启(参考第二步)。

  2. 再次检查 Windows 功能 中是否勾选了:

    • 适用于 Linux 的 Windows 子系统
    • 虚拟机平台
    • (勾选后记得重启电脑)
  3. 如果还是不行,可能是 WSL 服务被禁用。在 PowerShell (管理员) 中运行:

    wsl --shutdown
    
    # 尝试手动启动服务
    net start LxssManager

    如果提示“服务无法启动”,通常重启电脑能解决大部分临时服务故障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值