WSL2 + Ubuntu 22.04 全流程安装与避坑指南(适配 D 盘)

WSL2 + Ubuntu 22.04 全流程安装与避坑指南(适配 D 盘)
适用于:Windows 10/11 用户 目标:在 D 盘上部署完整可联网的 Ubuntu 22.04 + GPU 支持的开发环境 作者:jiahao(实际踩坑实践) 更新时间:2025-10

📋 一、前置条件检查

  • Windows 已升级到 21H2 或更高版本;
  • 已安装 NVIDIA 显卡驱动 ≥ 510(支持 CUDA 12);
  • Windows 已安装 PowerShell 7+;
  • 本机具备管理员权限;
  • 可联网。

🧹 二、彻底清理旧版 WSL 环境

很多用户安装不干净是因为旧版本遗留。执行以下命令可完全重置。

1️⃣ 查看已安装发行版

wsl --list --all

如果看到:

Ubuntu Ubuntu-20.04 docker-desktop

说明旧版本仍存在。

如果没有直接跳转到3.2

2️⃣ 注销所有旧发行版

wsl --unregister Ubuntu wsl --unregister Ubuntu-20.04 wsl --unregister docker-desktop wsl --unregister docker-desktop-data

3️⃣ 卸载系统组件(可选彻底清理)

wsl --shutdown dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart

在“应用和功能”中卸载:

  • Windows Subsystem for Linux Update
  • Ubuntu
  • Docker Desktop

⚙️ 三、重新启用并安装 WSL2

1️⃣ 启用系统组件

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启电脑:

shutdown /r /t 0

2️⃣ 安装 WSL 内核

wsl --install --no-distribution

3️⃣ 设置默认版本

wsl --set-default-version 2

💾 四、在 D 盘安装 Ubuntu 22.04

默认情况下,WSL 会安装在 C 盘。我们将其导出迁移到 D 盘,释放空间。

1️⃣ 安装 Ubuntu 22.04

wsl --install -d Ubuntu-22.04

首次启动后根据提示创建用户(如 jiahao)。如果提示:“wsl: 检测到 localhost 配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost。”这是正常的不用管他。

2️⃣ 导出系统镜像

wsl --shutdown wsl --export Ubuntu-22.04 D:\WSL\ubuntu.tar

3️⃣ 注销旧系统

wsl --unregister Ubuntu-22.04

4️⃣ 导入到 D 盘

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

5️⃣          

del D:\WSL\ubuntu.tar

验证迁移:

wsl --list --verbose

应显示:

Ubuntu-22.04 Stopped 2

🐧 五、首次进入系统与基础配置

启动:

wsl -d Ubuntu-22.04

更新系统:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git curl wget vim python3.11 python3.11-venv

🧠 六、解决无法联网

⚠️ 默认 WSL 网络为 NAT 模式,不能自动继承 Windows  daili。 你会遇到 curl 卡住、apt update timeout 的问题。

1️⃣ 在 Windows 的🐱中启用 LAN

进入🐱设置 → 开启局域网

确认配置中有:

allow-lan: true bind-address: 0.0.0.0 mixed-port: 7897

重点是第二行:bind-address: 0.0.0.0,这一步很关键,🐱的配置文件是config.yaml,同时需要注意端口没错。

然后重启🐱。

2️⃣ 在 PowerShell 验证端口监听

我们需要得到两条信息:WSL的内网ip和🐱的转发端口(第一步已经得到了)

netstat -ano | findstr 7897

✅ 期望输出:

TCP 0.0.0.0:7897 0.0.0.0:0 LISTENING ……

3️⃣ 在 WSL 中获取主机 IP

cat /etc/resolv.conf | grep nameserver

输出示例:

nameserver 172.19.48.1

测试是否连通,在WSL里面执行:

nc -zv 172.19.48.1 7897

如果输出:

Connection to 172.19.48.1 7897 port [tcp/*] succeeded! 

说明端口没被挡住。如果失败,则管理员权限单开一个Powershell,然后输入(注意替换端口):

这条命令会让 Windows 接受来自 WSL 的请求访问端口 7897。

之后再回到 WSL 执行:

nc -zv 172.19.48.1 7897 

应当返回 succeeded ✅。

4️⃣ 手动设置

export http_proxy="http://172.19.48.1:7897" export https_proxy="http://172.19.48.1:7897"

验证:

curl -I https://www.google.com

返回 HTTP/2 200 即表示成功。

然后执行:

echo 'Acquire { HTTP::proxy "http://172.19.48.1:7897"; HTTPS::proxy "http://172.19.48.1:7897"; };' | \ sudo tee /etc/apt/apt.conf.d/proxy.conf 

能更新包列表就说明 apt 已走DL。

5️⃣ 永久生效(添加到 .bashrc)

编辑:

nano ~/.bashrc

添加(注意端口需要替换成自己的🐱实际端口):

win_ip=$(grep nameserver /etc/resolv.conf | awk '{print $2}') export http_proxy="http://$win_ip:7897" export https_proxy="http://$win_ip:7897" export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$https_proxy echo "[WSL] Proxy set to $http_proxy"

保存并执行:

source ~/.bashrc

👤 七、恢复默认登录用户(迁移后变 root 的修复)

迁移导入后 WSL 默认用 root 登录。

1️⃣ 查看用户

ls /home

例如看到:

jiahao

2️⃣ 切换回用户

su - jiahao

3️⃣ 设置默认启动用户

在 PowerShell 中:

Ubuntu-22.04.exe config --default-user jiahao

下次启动 WSL 就会自动进入你的账户。


🧰 八、测试 GPU / CUDA(可选)

确保驱动版本 ≥ 510:

nvidia-smi

输出显示显卡信息即代表 GPU 直通成功。


🧩 九、安装开发依赖(可选)

创建 Python 环境:

python3 -m venv ~/venv source ~/venv/bin/activate pip install -U pip

常见依赖:

pip install fastapi uvicorn faiss-cpu qdrant-client pymupdf transformers sentence-transformers

🧱 十、常见问题与解决

问题

原因

解决方案

curl

卡住

🐱未 Allow LAN

打开 Allow LAN 并设置

bind-address: 0.0.0.0

Connection refused

Windows 阻挡

PowerShell:

默认进入 root

WSL 导入时未保存默认用户

Ubuntu-22.04.exe config --default-user jiahao

.bashrc

无daili配置

修改了 root 的 .bashrc

编辑

/home//.bashrc

无法访问网络

🐱仅监听 127.0.0.1

在配置文件添加

bind-address: 0.0.0.0

GPU 不生效

驱动或 CUDA 版本过低

更新至 NVIDIA ≥510,CUDA 12+


🧾 十一、最终结构验证

查看系统

cat /etc/os-release

确认代理

echo $http_proxy

确认 GPU

nvidia-smi

确认挂载路径(应在 D 盘)

df -h | grep /

输出路径指向:

/mnt/d/WSL/Ubuntu/

✅ 十二、总结

模块

说明

系统

WSL2 + Ubuntu 22.04

安装位置

D:\WSL\Ubuntu

默认用户

jiahao

网络设置

🐱(Allow LAN + 0.0.0.0:7897)

GPU 支持

CUDA 12.6 + A800 / 4060

验证命令

curl -I https://www.google.com

nvidia-smi

推荐开发工具

VSCode + Remote WSL 插件


如果测试过程中有任何问题欢迎沟通交流!

Read more

OpenClaw龙虾图鉴:16只AI Agent选型指南

OpenClaw龙虾图鉴:16只AI Agent选型指南

这里写目录标题 * 🦞 OpenClaw龙虾图鉴:16只AI Agent选型指南 * 🎯 快速选型指南 * 🥇 第一梯队:官方正统 * 1️⃣ OpenClaw - 原生官网框架 * 2️⃣ 🌙 KimiClaw - 云端大存储+Kimi K2.5 * 3️⃣ ⚡ MaxClaw - 成本杀手,10秒部署 * 🥈 第二梯队:极客专精 * 4️⃣ 🔥 NullClaw - 678KB极致疯子 * 5️⃣ 🦀 OpenFang - Rust生产级Agent OS * 6️⃣ 🐍 Nanobot - Python死忠粉 * 7️⃣ 🤖 NanoClaw - 多Agent协作狂魔 * 🥉 第三梯队:场景特化 * 🌱 第四梯队:新兴潜力股 * 1️⃣5️⃣ 🌱 EasyClaw -

By Ne0inhk
Flutter 三方库 bluesky_text 海量数据源鸿蒙应用适配优化指南:应对超级应用复杂联邦协议与富文本语义多模态混合解析、大幅度提效率去中心化平台-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 bluesky_text 海量数据源鸿蒙应用适配优化指南:应对超级应用复杂联邦协议与富文本语义多模态混合解析、大幅度提效率去中心化平台-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 bluesky_text 海量数据源鸿蒙应用适配优化指南:应对超级应用复杂联邦协议与富文本语义多模态混合解析、大幅度提效率去中心化平台大跨度社交联动 在鸿蒙平台的社交媒体应用、去中心化社交协议(如 AT Protocol / Bluesky)或带链接内容聚合器的开发中,如何精准地解析包含 @提及、#标签 以及超链接(Facets)的复杂文本?bluesky_text 是专为 Bluesky/ATProto 生态设计的文本处理引擎。本文将详解该库在 OpenHarmony 上的适配要点。 前言 什么是 bluesky_text?它不仅能计算一条社交动态的有效字符数(考虑到复杂的 Unicode 字节长度限制),更核心的功能是能自动识别出文本中的各种“实体(Entities / Facets)”。在鸿蒙操作系统强调的“全场景智慧互联”和“极致内容交互”

By Ne0inhk
Flutter 三方库 appium_driver 分布式泛鸿蒙场景下协同适配研讨:推进开放设备移动控制终端指令执行自动化体系及构筑强容错弹性高可用运维集成底座-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 appium_driver 分布式泛鸿蒙场景下协同适配研讨:推进开放设备移动控制终端指令执行自动化体系及构筑强容错弹性高可用运维集成底座-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 appium_driver 分布式泛鸿蒙场景下协同适配研讨:推进开放设备移动控制终端指令执行自动化体系及构筑强容错弹性高可用运维集成底座 在鸿蒙应用进入大规模商业化部署的阶段,如何确保应用在各种型号的鸿蒙设备上表现一致?如何实现高效的回归测试?appium_driver 是一个强大的自动化测试驱动库,它让我们可以使用 Dart 语言编写跨平台的 UI 自动化测试脚本。本文将详解该库在 OpenHarmony 上的适配要点。 前言 什么是 appium_driver?它是基于 W3C WebDriver 协议的封装,专门用于与 Appium 服务器通信。通过它,我们可以像操作浏览器一样,自动执行点击、滑动、输入文本、截图验证等操作。在鸿蒙操作系统推出的 DevEco Testing 自动化测试生态中,利用该库可以补充 Dart 生态下的自动化测试拼图。 一、

By Ne0inhk
【Linux】线程控制(二)

【Linux】线程控制(二)

文章目录 * 背景 * 🚩进程控制 * 线程计算1-100 * 🚩线程库 * c++11多线程 背景 Linux中没有真正的线程概念,而是复用进程数据结构和管理算法,用进程模拟线程 只有轻量级进程,不会提供线程的调用接口,而是提供轻量级进程的系统调用接口 但是我们用户需要线程调用,所以有pthread库帮我们封装了轻量级进程调用接口,我们可以直接使用线程接口 * 每个linux平台自带pthread库, * 编写多线程代码需要pthread库 线程接口 每个线程都有自己的ID, ⭐pthread_create不是系统调用,需链接 -pthread 🚩进程控制 快速使用一下 #include<iostream>#include<pthread.h>#include<unistd.h> using namespace std;void*threadRoutine(void*args){constchar* str=

By Ne0inhk