在 Windows 上折腾 Linux 开发环境过去绕不开双系统或者虚拟机。双系统重启切换太麻烦虚拟机又始终隔着一层性能损耗和内存占用都肉眼可见。这两年我基本固定在一套组合里Windows 11 WSL 2 Ubuntu 24.04日常的 Python 脚本、Docker 容器、Redis/MySQL 这些服务、甚至 PyTorch 训练都在这套环境里完成。这篇文章就把我实际跑通的流程、踩过的坑、以及排查经验一次性整理出来希望给准备在 Windows 上用 WSL 玩转 Ubuntu 的人一个可复制的路线图。适合谁看想试试 Linux 生态但暂时离不开 Windows 的开发者、做数据分析的同学、需要跑 Linux 工具链的运维以及所有被虚拟机性能搞到崩溃又不想双系统的朋友。文章里不仅有安装命令更重要的是那些报错信息和排查思路很多是我一步一步试出来的。1. 为什么非要在 Windows 里跑 UbuntuWSL 到底帮你解决了什么1.1 一句话理解 WSLWindows 里的 Linux 子系统WSL 全称是 Windows Subsystem for Linux也就是 Windows 提供的 Linux 兼容层。很多人第一次听到这个概念会懵这不就相当于虚拟机吗其实不一样。虚拟机是在 Windows 上模拟出一整套硬件再装 Linux开销大、启动慢而 WSL 是微软从系统层面实现的 Linux 运行环境它不跑完整硬件模拟而是直接复用 Windows 的内核能力因此启动只要几秒钟内存占用也小得多。WSL 1 和 WSL 2 有本质区别。WSL 1 用的是系统调用翻译技术把 Linux 的底层调用翻译成 Windows 能理解的指令兼容性不算完美WSL 2 则换成了轻量级虚拟机方案内置了一个真正的 Linux 内核文件系统、网络协议、系统调用基本都是原生行为。我强烈建议直接上 WSL 2虽然它本质上还是虚拟机架构但微软做了大量优化日常开发几乎感觉不到底层是 VMware 还是 Hyper-V 那套东西。1.2 WSL 1 和 WSL 2选错版本多走半年弯路我先用一张表把两个版本的区别列出来后续所有操作都默认你用的是 WSL 2。对比项WSL 1WSL 2内核无独立内核系统调用翻译独立 Linux 内核真正的 Linux文件访问性能跨文件系统访问较快跨文件系统访问较慢Linux 内操作性能部分场景一般接近真实 Linux系统调用兼容性有限制完全兼容Docker 支持基本不可用原生支持CUDA / GPU 计算不支持支持利用 Windows 驱动有个常见误解WSL 2 的文件系统性能一定差。它只是访问 Windows 挂载的目录比如 /mnt/c/时比较慢如果你把所有代码都放在 Linux 侧的文件系统里性能完全没问题。我自己一开始把项目放在 D 盘然后用 WSL 去读编译慢到想砸电脑后来全部移到 Linux 目录速度立刻恢复正常。1.3 什么样的人最应该玩转 WSL我用 WSL 这么久身边问得最多的几类人都有一个共同特点不愿意彻底放弃 Windows但又需要 Linux 环境干活。比如做 web 开发的线上服务器是 Ubuntu本地想尽量复现线上环境比如做运维的天天要敲 bash 脚本Windows 的 PowerShell 虽然强但很多 Linux 工具链装起来依然别扭还有做深度学习的学生装 PyTorch 时发现 Linux 的包管理和 GPU 驱动支持更省心。也有不适合的场景。如果你需要跑带图形界面的完整 Linux 桌面、需要大量 GUI 开发或者要测试 UEFI 启动、内核调试这类底层内容那还是乖乖用虚拟机或物理机装 Ubuntu。WSL 的定位是开发环境而非桌面系统这句话早点理解能省掉很多纠结。2. WSL 安装避坑实录从一行命令到顺利进入 Ubuntu2.1 装之前先自查系统版本、虚拟化和权限检查安装 WSL 本身不难但很多人卡在各种环境检测上。第一步是确认 Windows 版本。WinR 输入winver回车弹出来的窗口会显示系统版本。如果还是 Windows 10 老版本WSL 2 的支持并不完整建议升级到 Windows 10 21H2 及以上或者直接用 Windows 11。Windows Server 2022 也能装 WSL 2但需要通过手动安装 MSI 包的方式升级组件后面我会单独讲。第二步是检查虚拟化是否开启。WSL 2 依赖 Windows 的虚拟机平台和 Hyper-V 组件如果你的 CPU 虚拟化被禁用了安装后大概率报错。打开任务管理器在性能页看虚拟化一栏如果显示已启用就跳过如果显示已禁用需要进 BIOS 找到 Intel VT-x / AMD SVM 相关选项并打开。笔记本用户尤其注意某些品牌的 BIOS 默认关闭虚拟化这步不检查后面全是坑。第三步是用管理员权限打开 PowerShell 或 Windows Terminal。右键开始菜单就能看到终端管理员入口。按WinX选Windows 终端 (管理员)。权限不足会导致后续 WSL 相关命令执行失败或者提示无法安装 Windows 功能。2.2 最快安装路径wsl --install 一条龙从 Windows 10 21H2 和 Windows 11 开始最省事的做法就是一条命令wsl --install这条命令会自动开启适用于 Linux 的 Windows 子系统和虚拟机平台两个 Windows 功能然后去微软商店下载并安装默认的 Ubuntu 发行版整个过程可能意外地顺利。如果想指定安装某个版本比如 Ubuntu 22.04可以加参数wsl --install -d Ubuntu-22.04执行完命令后一般会提示你重启系统。重启完成后开始菜单里就能看到 Ubuntu 的图标第一次点击它会进入初始化界面创建 Linux 账号和密码。这里有个细节wsl --install现在默认使用的是 WSL 2。如果你的系统比较老安装完想确认版本可以用wsl -l -v查看。如果发现还是 WSL 1手动切换到 2 的命令是wsl --set-version Ubuntu-22.04 22.3 下载太慢/卡住的替换方案手动下载导入现实中有一大批人卡在wsl --install的下载环节进度条死活不走。这主要是因为发行版镜像要从微软的服务器拉取网络环境一变就很容易挂掉。遇到这种情况官方商店的下载通道大概也快不到哪去但你可以试试从 Ubuntu 官网获取面向 WSL 的 rootfs 压缩包然后手动导入。具体操作分两步。先到 Ubuntu 官网下载对应的 WSL 专用镜像文件注意不是桌面版 ISO 那种几百 MB 的安装镜像而是用于 WSL 的 tar.gz 格式 rootfs 包。下载后把文件放到 D 盘某个目录比如D:\wsl\然后在 PowerShell 里执行mkdir D:\wsl\ubuntu2204 wsl --import Ubuntu-22.04 D:\wsl\ubuntu2204 D:\wsl\ubuntu-22.04.tar.gz --version 2wsl --import会把 Linux 根文件系统导入到你指定的目录--version 2强制使用 WSL 2。导入完成后用wsl -d Ubuntu-22.04进入但是默认用户会是 root而不是正常安装时让你创建的普通用户。解决方法是进去之后创建一个用户然后写一个/etc/wsl.conf配置文件把默认用户指过去[user] default你的用户名改完配置文件在 PowerShell 里执行wsl --shutdown再重新进入默认用户就正常了。手动导入这条路径我第一次操作时花了二十分钟熟悉之后就五分钟的事比较适合网络状况一般的情况。2.4 首次启动 Ubuntu创建 Linux 账户与密码如果你是通过wsl --install正常安装的发行版第一次启动 Ubuntu 会提示 Enter new UNIX username 和 Enter new UNIX password。这里输入的账号密码和 Windows 登录账号完全无关它是 Ubuntu 容器里的独立账号之后执行sudo命令时用的也是这套密码。一个小提示Linux 输密码时不会显示任何字符这是终端世界的安全习惯别以为键盘没反应正常敲完回车就行。账号名建议全小写因为 Linux 用户名是区分大小写的万一后面要配 SSH 或者容器全小写能少很多麻烦。创建完账号后可以立刻检查一下基础状态uname -a cat /etc/os-releaseuname -a能看到内核版本/etc/os-release能确认 Ubuntu 的具体版本号。到这一步WSL 的基本框架已经搭好接下来可以开始规划这个Linux 小盒子怎么用了。3. 进入 Ubuntu 后的第一课换源、补齐基础工具与资源配额3.1 apt 换源别让包下载等哭你装完 Ubuntu 头一件事我建议先把apt软件源的下载地址切换成国内镜像。不做这一步你用sudo apt install gcc都可能卡到怀疑人生。判断自己的 Ubuntu 版本有个标准动作ls /etc/apt/sources.list.d/在 Ubuntu 22.04 上一般看到的是/etc/apt/sources.list到了 Ubuntu 24.04系统改成了/etc/apt/sources.list.d/ubuntu.sources这种 deb822 格式。改之前先备份这是我在服务器上养成的基本习惯sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后根据自己的版本把源地址整体替换成阿里云或清华的镜像。比如 22.04 的替换方式sudo sed -i s//archive.ubuntu.com//mirrors.aliyun.comg /etc/apt/sources.list sudo sed -i s//security.ubuntu.com//mirrors.aliyun.comg /etc/apt/sources.list sudo apt update如果是 24.04则要编辑ubuntu.sources文件把http://archive.ubuntu.com/ubuntu/替换成http://mirrors.aliyun.com/ubuntu/。替换完成后顺手跑一遍sudo apt update sudo apt upgrade -y看到下载速度从几 KB/s 跳到几 MB/s 的时候你就知道这步有多值了。3.2 基础工具链安装顺手的工作环境换完源我通常会一次性装好一组基础工具覆盖编译、网络、文本处理和系统监控。命令如下sudo apt install -y build-essential git curl wget net-tools htop tree zip unzipbuild-essential包含 gcc、g、make 等编译工具链很多软件安装时都需要net-tools提供ifconfig、netstat等经典网络命令虽然新系统已经在推ip命令但很多文章和脚本里还是老写法htop是交互式系统监控工具比top好看又好用。如果你有 Java 开发需求顺手装个 JDK 17 也很简单sudo apt install -y openjdk-17-jdk java -version如果你对 APT 安装的版本不放心也可以到 JDK 官网下载对应的 Linux 包手动安装但在 WSL 里用 APT 足够日常开发用了。做固件分析或者逆向的同学可以在后面补一个binwalksudo apt install -y binwalkBinwalk 在 Ubuntu 仓库里可以直接装不需要编译半天这点比在 Windows 上找工具舒服太多。3.3 Windows Terminal管理 WSL 的舒服姿势从 Windows 商店下载 Windows Terminal是我给所有 WSL 用户的统一建议。它不是一个终端模拟器那么简单而是把 PowerShell、CMD、Ubuntu 这些所有终端环境整合到同一个窗口里。装好之后打开 Windows Terminal点标题栏的下拉箭头就能看到 Ubuntu 的入口选完直接进入无需多余配置。Windows Terminal 有几个小技巧很实用设置里可以调整透明度、背景图适合长时间盯终端的人快捷键CtrlShiftT开新标签页CtrlShiftD复制当前标签页AltShiftD分屏。分屏功能尤其在一边跑服务一边看日志的场景下非常好用一边开 WSL 跑 Elasticsearch一边开 PowerShell 检查端口互不干扰。然后谈一个常用的灵巧用法在 WSL 终端里输入explorer.exe .Windows 的资源管理器会立刻弹出当前目录正好是 WSL 里的工作目录。反过来Windows 文件管理器地址栏输入\\wsl$\就能像访问网络共享一样访问 WSL 的整个 Linux 文件系统拖拽文件非常方便。3.4 用 .wslconfig 给 WSL 定规矩内存和 CPU 管起来WSL 2 有个让很多人头疼的默认行为最多能占用 Windows 总内存的 50%磁盘缓存也会慢慢膨胀。如果你电脑只有 8GB 内存跑一个 Elasticsearch 或者 Docker 容器Windows 端可能卡到鼠标都动不了。解决办法是在用户目录下建一个.wslconfig文件来限制资源。.wslconfig文件位置在C:\Users\你的用户名\.wslconfig不存在就自己创建。内容示例[wsl2] memory8GB processors4 swap4GB localhostForwardingtruememory限制 WSL 最大内存processors限制 CPU 核数swap分配交换空间大小。我自己的机器是 32GB 内存设的memory12GB既能保证 WSL 里跑 Docker 和编译任务不崩也能让 Windows 端微信、浏览器继续流畅。改完.wslconfig后一定要在 PowerShell 里执行wsl --shutdown等两秒再重新打开 WSL配置才会生效。这个坑我踩过改完配置不看教程直接重启电脑结果配置并没有加载折腾半天才发现要对 WSL 实例完整断电重启。4. 开发环境搭建实战Docker、数据库、AI 环境一条龙4.1 Docker 在 WSL 里的两种正确姿势Docker 是 WSL 用户绕不开的话题也是最容易踩坑的地方。先说结论WSL 2 本身就支持 Docker问题是 Docker 守护进程在默认的 WSL 环境里启动方式有点绕。你在 WSL 里执行systemctl start docker大概率会收到System has not been booted with systemd as init system (PID 1). Cant operate.的报错。这就要引入一个关键概念systemd。WSL 默认使用一个很精简的 init 进程不像真实 Linux 那样跑完整 systemd很多服务管理命令直接不可用。解决办法是在/etc/wsl.conf配置中开启 systemd[boot] systemdtrue保存后执行wsl --shutdown再重新进。之后systemctl命令就能正常使用了。开启 systemd 之后在 WSL 里安装 Docker 有两种方案我把对比列出来方案优点缺点WSL 内直接安装 docker-ce资源占用低、纯粹、和真实服务器一致需要自己维护容器运行时Windows 上装 Docker Desktop集成视觉界面、K8s 支持、Windows 和 WSL 都能用占用 Windows 内存资源、企业版可能收费我个人更推荐 WSL 内直接装 docker-ce因为它在 WSL 的 Linux 环境里逻辑最简单也不占 Windows 侧的资源。安装步骤是sudo apt update sudo apt install -y docker.io sudo service docker start sudo systemctl enable docker docker ps设置 Docker 开机自启还需要注意WSL 实例每次启动都会重新初始化 systemd开了 systemd 后systemctl enable docker基本就能用了。如果你要用docker compose再补一个sudo apt install -y docker-compose-v24.2 Redis、MySQL 这类服务怎么在 WSL 里跑起来数据库服务的思路和 Docker 类似有了 systemd安装就变成一条龙。Redis 最典型sudo apt install -y redis-server sudo systemctl enable --now redis-server redis-cli ping正常会返回PONG说明服务已经跑起来了。默认的 Redis 只绑定 127.0.0.1如果之后要配合 Windows 上的客户端一起用可以让它监听所有地址。不过这里我不建议直接改bind 0.0.0.0更安全的做法是在 Windows 侧用localhost访问因为 WSL 2 默认开启了 localhost 转发。也就是说你在 Windows 上打开 Redis 的可视化客户端连接地址直接填127.0.0.1就可能连上 WSL 里的 Redis。MySQL 的安装也别怕继续用 systemd 流程sudo apt install -y mysql-server sudo systemctl enable --now mysql sudo mysql_secure_installation注意 WSL 里 MySQL 默认的 root 认证方式有时是 auth_socket导致你用mysql -u root -p也进不去。解决办法是进入 MySQL 之后改认证插件这个很容易搜到但根源在于 WSL 环境里没有 systemd 的正常多用户会话数据库安装逻辑和普通 Ubuntu 略不同。如果你装 Elasticsearch 这类 Java 服务碰到启动直接挂掉的情况八成是 JVM 堆内存设置过大或者vm.max_map_count参数太低最常用的修复是sudo sysctl -w vm.max_map_count262144然后就放心在 WSL 里搭一套完整的服务集群吧端口映射那几个细节我会在 4.4 展开。4.3 VS Code 联动 WSL用最习惯的编辑器写 Linux 代码VS Code 和 WSL 的组合是我认为整个 WSL 体验里最惊艳的部分。默认情况下WSL 里也有一个code命令但它能否唤起 Windows 侧的 VS Code完全取决于你装没装 Remote Development 扩展。在 Windows 侧的 VS Code 装好 Remote Development 扩展包后进入 WSL 终端直接输入code .VS Code 会自动以 WSL Remote 模式打开当前目录。这个模式的厉害之处在于窗口界面在 Windows但文件系统、终端、扩展、调试器全都在 Linux 侧运行代码补全也按照 Linux 环境来。你在 Windows 侧装的 VS Code 扩展不会自动出现在 WSL 里每个扩展右上角会有在 WSL 中安装的选项头一次可能不习惯后面就会觉得这个隔离设计非常科学。我自己的主力工作流就是WSL 里托管代码和依赖VS Code Remote 写代码Windows 侧开浏览器和数据库客户端。比如做 Spring Boot 的一个小服务WSL 里跑mvn spring-boot:runWindows 浏览器直接访问localhost:8080日志就在 VS Code 的集成终端里滚动整套链路丝滑得很。4.4 文件互通与端口转发Windows 和 Linux 的边界处理WSL 2 的跨系统文件访问有一个显著特点从 Linux 访问/mnt/c/下的 Windows 文件会比较慢因为要经过 9P 协议桥接但反过来Windows 访问 WSL 内的文件反而很快因为 WSL 用了 VHD 虚拟磁盘。所以我的习惯是所有代码和项目文件都放在 Linux 侧需要和 Windows 交换数据时用小文件走explorer.exe .拖拽大文件直接放在\\wsl$\目录里。端口这块有个很容易误解的点默认情况下Windows 可以通过localhost访问 WSL 里启动的服务但同一个局域网里的其他电脑并不能直接访问这个端口。比如你 WSL 里跑了一个端口 8080 的 web 服务想用手机连接你电脑看效果就需要做端口转发。Windows 侧管理员 PowerShell 里执行netsh interface portproxy add v4tov4 listenport8080 listenaddress0.0.0.0 connectport8080 connectaddress127.0.0.1这会把 Windows 的 8080 端口转发到 WSL 的 8080。如果你以后想删掉这条规则netsh interface portproxy delete v4tov4 listenport8080 listenaddress0.0.0.0另一种办法是手动查看 WSL 的 IP 地址然后局域网电脑直接访问该 IP但问题是 WSL 2 的 IP 每次重启都可能变所以我更推荐 netsh 端口转发方式一劳永逸。还有一种更常见的情况你在 Windows 上需要监听某个端口但发现已经被占用。排查和关闭流程很经典netstat -ano | findstr :8080 taskkill /PID 12345 /F同样逻辑也适用在 WSL 里把netstat换成 Linux 的ss -tlnp即可。4.5 在 WSL 里配置 PyTorch 与 CUDA深度学习也能玩很多做深度学习的朋友以为 WSL 只能跑点 Linux 命令其实 WSL 2 对 NVIDIA GPU 的支持已经非常成熟这也是我当初从 VMware 转 WSL 的核心原因。在 WSL 里你不需要单独装 Linux 版显卡驱动直接用 Windows 侧安装的 NVIDIA 驱动即可。进入 WSL 终端后输入nvidia-smi如果能看到显卡信息说明 GPU 直通已经生效。从这一步开始本质就和一个真 Ubuntu 的深度学习环境差不多了。然后装 Minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh装完之后记得source ~/.bashrc加载 conda 命令然后创建虚拟环境并安装 GPU 版 PyTorchconda create -n pytorch python3.11 -y conda activate pytorch pip install torch --index-url https://download.pytorch.org/whl/cu121最后验证python -c import torch; print(torch.cuda.is_available())输出True就说明一切正常。整个过程二十分钟足够了丝毫不输原生 Ubuntu。如果你是 AMD 显卡用户比如 7900 XTX那要绕道 ROCm 方案WSL 下的支持度和可玩性远不如 NVIDIA建议多查查对应版本的兼容矩阵再做决定。4.6 本地模型部署与 AI 编程工具的小扩展这两年 AI 编程工具很火比如 OpenAI 的 Codex CLI、各种本地模型部署工具在 WSL 里跑反而比原生 Windows 更省心因为很多工具直接发的是 Linux 二进制。我自己在 WSL 里跑过 Codex CLI安装依赖、调用本机的 Python 环境统统不用纠结 Windows 路径问题。如果你有本地大模型部署的需求WSL 也不是不行像 DeepSeek 这类模型通过 Ollama 在 WSL 里跑性能开销完全可控前提是显存和内存足够最好在.wslconfig里预留充足配额。不过提醒一句WSL 里的本地部署只适合个人研究和开发真要稳定长期服务还是建议用专业的 Linux 服务器。WSL 的价值在于开发环境一致性不是说它要变成生产服务器。把这种心态摆正工具用起来才会顺手。5. 高频报错排查与避坑技巧照着抄就行5.1 提示 WSL needs updating 或者版本过旧Windows Server 2022 和某些精简版 Windows 上经常出现wsl needs updating的提示意思是你系统自带的 WSL 组件太旧需要升级到商店版本。解决办法是在 PowerShell 里wsl --update如果提示找不到更新或者更新失败去微软官方 GitHub Release 页面下载 WSL 的最新 MSI 安装包手动安装即可。装完记得确认wsl --version能看到 WSL 版本信息就说明安装成功。这个坑在 Windows Server 上特别多跳过不处理的话后续装什么发行版都会报错。5.2 安装卡在进度条或者下载特别慢wsl --install卡在启动状态弹不出来或者下载进度条几乎不走常见原因有两个一个是发行版镜像下载慢一个是后台服务被安全软件拦截。优先换手动导入方案用 2.3 节说的方法从镜像站下载 rootfs 包然后wsl --import这条路基本不受 Windows 商店网络限制。另一个解决思路是直接去微软商店搜 Ubuntu点安装商店的下载通道有时候和命令行通道不一样偶尔命令行卡住商店反而能正常装。我在两台电脑上一个用命令行一个用商店效果差别挺大。如果这些都试了还是不行也可以试试重启 Windows 服务Windows Update和Microsoft Store Install Service。5.3 Ubuntu 环境变量配置错误导致终端打不开有次我把PATH改坏了结果一打开 WSL 终端就提示-bash: ls: command not found输入啥都没反应因为系统所有命令都找不到了。很多人到这一步直接重装系统其实有救。在 PowerShell 里以 root 身份进入发行版并用一个干净的环境启动 bashwsl -u root如果没有设置默认 root 密码root 用户可能无法直接登录。常规做法是在 Windows 终端执行wsl -u root -e /bin/bash --noprofile --norc--noprofile --norc的意思是绕过所有启动脚本直接给一个干净 shell。进去后手动恢复PATH比如export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin然后用这个干净环境去修复~/.bashrc或/etc/profile.d/里的错误配置。如果还是不行wsl --unregister Ubuntu-22.04然后重装但这会把里面所有数据清空属于最后手段。我的心得是改环境变量前先备份或者至少写好注释。5.4 忘记 Ubuntu 密码密码忘了不要慌在 PowerShell 里直接指定 root 用户进入wsl -u root进去之后用passwd修改你想重置的用户密码passwd 你的用户名回车输入两次新密码就可以。我现在越来越习惯把常用密码放在密码管理器里了WSL 的密码虽然不常用但一旦忘了就是无底洞。5.5 端口被占用在 Windows 上和 WSL 里分别怎么关日常开发最常见的卡点就是端口冲突。Windows 侧查端口占用的命令netstat -ano | findstr :8080看最后一列 PID然后强制结束进程taskkill /PID 12345 /FWSL 侧用ss命令更直观ss -tlnp | grep 8080能看到哪个服务占用了端口配合kill PID就能解决。如果你发现 WSL 里的服务在 Windows 上访问不到也先别急着折腾防火墙确认一下 localhost 转发是否开启。在.wslconfig里设置localhostForwardingtrue是默认行为但如果之前手动改过就会影响 Windows 访问 WSL 服务的行为。5.6 Ubuntu 中文输入法、字体等界面问题WSL 里要不要装中文输入法取决于你有没有用 WSLg 去跑 Linux 图形化界面。如果你用的是 Windows 11 自带 WSLg想直接在 WSL 里开一个带界面的 GUI 应用那确实需要装中文字体和输入法。方案一般是 fcitx5sudo apt install -y fcitx5 fcitx5-chinese-addons fonts-noto-cjk配置环境变量export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx然后重启 WSL。说实话多数情况下我并不推荐在 WSL 里折腾图形界面和输入法因为 WSL 的定位是命令行和后台服务图形界面在 Windows 侧已经有了很成熟的方案。如果真需要长期使用 GUI请回看 1.3 的场景分析。还有一个玄学问题在 WSL 里执行 GUI 程序时显示方框乱码基本是缺少中文字体所致装fonts-noto-cjk可解决如果出现一打开 GUI 就闪退先看看 Windows 侧是否启用了适用于 Linux 的 Windows 子系统 GUI功能进系统设置确认 WSLg 相关组件是打开的。最后再分享一句实在话WSL 绝不是万能的但它确实解决了Windows 和 Linux 只能二选一这个老问题。我用了这几年最大的体会是提前把资源配额、systemd、软件源、端口转发这几件事做好WSL 的体验会稳定到让你忘记它底层是一个虚拟机。希望这篇文章能帮你少走弯路把更多时间花在真正值得研究的事情上。如果你在实操中遇到别的报错欢迎按照文章里的排查思路一步步来大多数问题都逃不出环境、配置、网络这三件事。
企业数字化 ERP 产品动态
相关推荐
开放式代码评审实践:从流程设计到团队知识管理 1. 我为什么会重新审视 Code Review做软件开发这些年,我最怕听到的一句话就是“代码过了,合并吧”。乍一听没毛病,但仔细一问,所谓“过了”往往是:提交者自己在机器上跑通了、CI 绿了、或者同事扫了一眼没发现问题。真… · 2026/9/26 20:55:37
开源AI编程本地部署实战:从模型选型到工具链配置全指南 两年多前,我第一次用AI写代码的时候,怎么也想不到这玩意儿会卷得这么厉害。Cursor火起来之后,几乎每个技术群都在聊AI编程;GitHub Copilot、Windsurf、Trae这些商业产品一个比一个猛,好像不开个会员就没法正常写代码了… · 2026/9/26 21:34:33
模拟退火算法在路径规划中的应用:原理、Python实现与GUI展示 1. 从一次给客户排配送路线说起:路径规划问题到底难在哪几个月前,有个做同城配送的朋友找我帮忙,说手头有二十几个取送货点,每次靠人工排路线,司机跑出来的距离忽高忽低,客户催得紧的时候根本来不及细排。我… · 2026/9/26 21:34:26
SSM商品拍卖系统毕设全攻略:从需求分析到并发控制与答辩 1. 这个毕设题目为什么值得做:拍卖系统的定位与难点拆解先交代个背景。2026年的毕设季,很多同学会在选题阶段卡住很久。我的建议始终是那句老话:选一个"看起来简单、做起来有东西讲"的题目。商品拍卖系统恰好是这种矛盾体——功能边… · 2026/9/26 21:34:26
WorkBuddy + Flask + SQLite:日更个人站自动化建站实战 1. 为什么我选择 WorkBuddy Flask SQLite 这套组合先说结论:这套组合不是拍脑袋选的,是我在试过 WordPress、Shopify 和纯静态源码建站之后,针对“个人内容站 日更 完全掌控数据”这个具体场景,反复权衡下来的结果。WorkBuddy… · 2026/9/26 21:34:26
Oracle 21c Windows客户端安装配置与避坑指南 简介:这是一份面向Windows 32位环境的完整数据库客户端安装资源,对应甲骨文数据库21c客户端21.3版,适合需要在本机部署客户端以连接远程数据库的开发、运维及数据处理人员使用。压缩包共收录一千四百零三个文件,整体大小约八百六十… · 2026/9/26 21:34:26
网盘直链原理与实战:从HTTP协议到NAS挂载 1. 直链不是“魔法”,而是网盘服务协议与HTTP协议博弈的副产品 “网盘免客户端下载”这个说法,乍一听像在绕开平台规则——但事实恰恰相反:它不是钻空子,而是 把网盘本就公开提供的资源访问能力,从封闭的客户端界面里… · 2026/9/26 21:34:26
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46