Windows 11 系统中 WSL2 完整安装流程及迁移到 D 盘的详细步骤.md 3.7 KB

以下是 Windows 11 系统中 WSL2 完整安装流程迁移到 D 盘的详细步骤,结合官方文档与社区实践整理,涵盖常见问题解决方案:

一、安装前准备

1. 启用 WSL2 功能

  • 方式一(推荐):管理员身份运行 PowerShell,输入:

    wsl --install -d Ubuntu-22.04  # 自动启用所需功能并安装 Ubuntu
    

    解释:此命令自动启用 WSL 和虚拟机平台,无需手动配置

  • 方式二(手动启用)

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    wsl --set-default-version 2  # 设置默认版本为 WSL2
    

    注意:完成后需重启系统
    启用虚拟化与系统功能
    BIOS 设置:
    进入 BIOS → 启用 Intel VT-x/AMD-V(具体名称因主板而异)
    Windows 功能:
    打开“控制面板 → 程序 → 启用或关闭 Windows 功能”。
    勾选 Hyper-V、虚拟机平台、适用于 Linux 的 Windows 子系统
    重启系统。

2. 更新 WSL 内核


二、安装 Linux 发行版到 D 盘

1. 初始安装(C 盘)

  • 从 Microsoft Store 安装 Ubuntu 22.04,首次启动设置用户名和密码

2. 导出发行版

  • 关闭 Ubuntu 后,管理员 PowerShell 执行:

    wsl --export Ubuntu-22.04 D:\WSL\Ubuntu-22.04.tar  # 导出为 TAR 文件
    

3. 注销原系统

wsl --unregister Ubuntu-22.04  # 删除 C 盘中的旧系统

4. 导入到 D 盘

wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL\Ubuntu-22.04.tar --version 2

参数说明

  • D:\WSL\Ubuntu-22.04:目标目录
  • --version 2:强制使用 WSL2

5. 恢复默认用户

  • 若导入后默认以 root 登录,执行:

    Ubuntu2204.exe config --default-user <原用户名>
    

三、常见问题解决

1. 安装失败错误码

  • 0x80070003:检查系统存储位置是否在 C 盘(设置 → 存储 → 默认保存位置)

  • 0x8007019e:确认已启用“虚拟机平台”功能

  • WSL 启动卡死:重置网络配置或更新 WSL:

    wsl --update  # 更新内核
    netsh winsock reset  # 重置网络
    

2. 迁移后权限问题

  • 若导入后文件权限异常,需手动调整 /etc/wsl.conf

    [automount]
    options = "metadata,umask=022"
    

3. 虚拟化未启用

  • BIOS 中开启 Intel VT-x/AMD-V,并在 PowerShell 中执行:

    bcdedit /set hypervisorlaunchtype auto  # 启用 Hyper-V 虚拟化。
    

四、高级配置

1. 性能优化

  • 创建 %USERPROFILE%\.wslconfig 文件,限制资源使用:

    [wsl2]
    memory=4GB   # 限制内存
    processors=2  # 限制 CPU 核心
    

2. 换用国内镜像源

  • 在 Ubuntu 中执行:

    sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
    sudo apt update && sudo apt upgrade -y
    

3. GUI 应用支持

  • 安装 X 服务器(如 VcXsrv),在 Ubuntu 中设置:

    echo "export DISPLAY=$(awk '/nameserver / {print $2}' /etc/resolv.conf):0" >> ~/.bashrc