ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

WSL安装迁移D盘及默认账户、root密码、sudo权限配置指南

WSL安装迁移D盘及默认账户、root密码、sudo权限配置指南 WSL 现在基本是我在 Windows 上干活的默认入口。不管是跑 Python 脚本、编译前端项目、临时起个 Redis 调接口还是拿 binwalk 拆个固件包我都会先wsl一下而不是去折腾虚拟机。但真正把它用顺手中间有几道坎是绕不过去的装的时候wsl --install卡住或者被拦装完之后 C 盘被一个几十 GB 的ext4.vhdx吃掉每次开终端进去发现默认登录账户不是自己想临时切 root 又发现 Ubuntu 的 root 根本没设密码普通用户执行sudo报一句不在 sudoers 文件中。这篇就把 WSL 安装、迁移 D 盘、设置默认登录账户、更改 root 密码和授予普通用户 sudo 权限这一整套流程按我自己反复装过十几台机器的顺序完整梳理一遍参数怎么算、坑在哪里、每一步为什么这么干都会说清楚。不管你是刚听说 WSL 的新手还是已经装过但一直被这几个问题绊住的老用户下面这套流程都能直接照着抄。1. WSL 安装前的方案选型与环境确认1.1 先想清楚为什么要用 WSL而不是虚拟机或双系统先把选型这件事说透因为后面所有的操作细节都是从这个选择推导出来的。WSL 的本质是让 Linux 用户态程序直接跑在 Windows 的 Hyper-V 轻量虚拟化层之上WSL2 跑的是一个真正的 Linux 内核只是这个内核由微软维护并和 Windows 深度互操作。它和传统虚拟机的区别就像合租和整租虚拟机给你一整间房水电网络全套配齐但你也要自己交全部账单启动慢、吃内存、文件来回传WSL 更像合租一个单间共享 Windows 的网络栈、磁盘挂载和进程调度启动只要一两秒内存按需分配。我选 WSL 的核心原因有三个。第一是文件互通在 WSL 里可以直接访问/mnt/d/code/myproject反过来 Windows 资源管理器地址栏敲\\wsl.localhost\Ubuntu\home\alice就能看到 Linux 侧的文件这是虚拟机和双系统都很别扭的地方。第二是终端体验配合 Windows Terminal标签页、分屏、字体渲染一次性解决比在虚拟机窗口里敲命令舒服太多。第三是资源占用低一个空闲的 Ubuntu 发行版大概只占几百 MB 内存而一台 Ubuntu 虚拟机空载也要 1.5 GB 起步。但 WSL 也有明确的短板得提前知道。它对 systemd 的支持是后来才补齐的早期版本里systemctl直接报错它的网络模型是 NAT外部设备要主动连进来需要额外配置端口转发还有那个经典问题——把项目放在/mnt/c/...下编译速度会比放在 Linux 原生文件系统里慢好几倍。所以我的实际做法是日常开发用 WSL需要完整内核行为或者跑图形化桌面环境时才回到虚拟机双系统我基本已经放弃了切换成本太高。1.2 安装前的系统检查清单版本、虚拟化、磁盘很多人第一次装就失败八成是卡在系统版本或虚拟化开关上。安装前请先把下面这几项挨个确认一遍这一步花五分钟能省掉后面两小时的排查。检查项要求查看方式Windows 版本Windows 10 2004 及以上内部版本 19041或 Windows 11winver虚拟化功能BIOS/UEFI 中已开启 Intel VT-x 或 AMD-V任务管理器 → 性能 → CPU → 虚拟化已启用系统功能需要开启虚拟机平台和适用于 Linux 的 Windows 子系统optionalfeatures磁盘空间C 盘至少预留 30 GB或提前规划好迁移目标盘资源管理器网络能访问微软官方源公司网络需确认出口策略浏览器测试这里要单独说一个高频疑点Windows 10 长期服务版LTSC能不能用 WSL。答案取决于具体版本。LTSC 2019 基于内部版本 17763这个版本只支持 WSL1不支持 WSL2而且微软商店组件缺失安装会比较折腾LTSC 2021 基于 19044已经可以正常用 WSL2。所以如果你手上是企业统一分发的 LTSC 2019 机器最稳妥的做法是走离线安装 WSL1或者干脆申请升级镜像。至于 Windows 11只要是最新累积更新基本不会遇到版本问题。另一个容易被忽略的点是虚拟化开关。WSL2 依赖虚拟机平台而虚拟机平台依赖 CPU 的硬件虚拟化。如果你之前开过 Hyper-V、Docker Desktop、安卓模拟器通常已经开好了如果是全新的品牌机BIOS 里可能是关闭状态需要重启进 BIOS 手动打开不同主板菜单名不一样通常在 Advanced → CPU Configuration 里找 Intel Virtualization Technology 或 SVM Mode。1.3 三种安装路径对比在线、离线、手动装包WSL 的安装方式我实测下来主要有三条路各有适用场景先上对比表。方式适用场景优点风险点wsl --install在线安装网络通畅的个人电脑一条命令全自动连功能开启都帮你做下载慢企业网络可能返回 403离线包安装.appx / .AppxBundle内网机器、下载受限环境不依赖微软商店联网需要手动确认系统功能已开启手动开启功能 商店安装想精确控制每一步过程透明便于排错步骤多容易漏掉内核更新包第一条路在线安装。以管理员身份打开 PowerShell 或 Windows Terminal执行wsl --install这条命令会自动完成三件事开启虚拟机平台和适用于 Linux 的 Windows 子系统两个功能、下载并安装 WSL2 内核更新、拉取默认发行版目前通常是 Ubuntu。想指定发行版就用-d参数想指定安装位置在新版 WSL 里还可以配合--locationwsl --install -d Ubuntu-22.04 wsl --list --online注意执行完wsl --install之后必须重启一次电脑否则虚拟化功能不会真正生效重启后系统会自动弹出 Ubuntu 的初始化窗口让你设置用户名和密码。这个初始用户名就是后面要设置成默认登录账户的那个。第二条路离线包安装。当你在内网环境里遇到wsl --install 已禁止(403)或者wsl --list --online 连接超时不要死磕在线命令。正确姿势是先从能联网的机器上下载好 WSL2 内核更新包和对应发行版的 appx 安装包拷贝进内网然后手动导入。内核更新包是一个 msi 文件双击装完即可发行版包是一个.appx或.AppxBundle用 PowerShell 安装Add-AppxPackage .\Ubuntu_2204.1.7.0_x64.appx至于wsl --update报 403 或者下载极慢新版 WSL 提供了一个走网页下载通道的参数可以在商店通道不通时作为备选wsl --update --web-download如果这条也走不通那就是整个出口策略的问题不要再尝试各种绕行手段直接找 IT 走内部镜像源或者用离线包。这是我在企业环境里踩过最多的坑浪费时间还容易触发安全告警。第三条路手动开启功能 商店安装。适合想搞清楚每一步到底改了什么的人。用管理员 PowerShell 依次执行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启之后再把 WSL2 设为默认版本这一步很关键不做的话新装发行版会默认落在 WSL1wsl --set-default-version 2最后去商店搜 Ubuntu 安装或者用离线包。安装完成后用wsl --list --verbose看一眼版本号VERSION那一列应该是 2。1.4 装完后的第一件事升级组件与初始化很多人装完就开始写代码结果三天后遇到一个奇怪的报错一查发现是 WSL 组件太旧。这里有个典型提示your version of windows subsystem for linux (wsl) is too old. run the command...。这时候要做的就是把 WSL 本体更新到最新wsl --version wsl --update wsl --shutdownwsl --shutdown会停掉所有正在运行的发行版和 WSL 的轻量虚拟机相当于彻底重启 WSL 环境很多改了配置不生效的情况一条--shutdown就解决了建议把它当成肌肉记忆。进入发行版之后按顺序做三件事。第一换到国内镜像源内网用户跟着内部源走因为默认的archive.ubuntu.com在国内速度感人sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo apt update sudo apt upgrade -y第二装一套基础工具链我每次都会装这些sudo apt install -y build-essential git curl wget vim unzip zip tree htop net-tools第三确认一下时区和语言环境避免日志时间对不上timedatectl locale实操心得apt update如果报Could not resolve之类的域名解析错误先别急着改一堆配置先在 WSL 里cat /etc/resolv.conf看 DNS 指向再用ping测一下连通性。WSL2 的 DNS 是由 Windows 侧自动生成的偶尔会因为 Windows 上装了某些网络软件导致解析异常这时候wsl --shutdown重启一次往往就好了。另外wsl --install 太慢大多数时候不是命令的问题而是发行版包体积本身就有几百 MB耐心等或者走离线包才是正解。2. 把 WSL 发行版从 C 盘迁移到 D 盘2.1 为什么必须迁移C 盘空间与 vhdx 的真实关系先讲清楚 WSL 到底把数据放在哪。WSL2 每个发行版对应一个虚拟磁盘文件ext4.vhdx默认位于用户目录下的隐藏文件夹里路径大概是C:\Users\用户名\AppData\Local\Packages\发行版包名\LocalState\ext4.vhdx。这个文件有个非常讨厌的特性它只涨不缩。你在 Linux 里下载了 20 GB 数据集、编译了一堆中间产物然后删掉vhdx 文件大小依然保持 20 GB 的峰值因为它记录的是曾用过的最大空间。所以在 C 盘上跑几个月 WSLC 盘莫名其妙少了五六十 GB 是家常便饭。这就是迁移到 D 盘最直接的动机。但迁移还有第二个理由很多人没意识到系统盘上的 I/O 竞争。C 盘要同时承担 Windows 系统更新、页面文件、应用缓存WSL 的大量随机读写会跟这些任务抢带宽表现出来就是 Windows 偶尔卡顿、编译变慢。把 vhdx 放到一块独立的 SSD注意必须是 SSD机械盘上跑 WSL 会慢到怀疑人生上两边都清净。第三个理由是备份和重装友好。Windows 重装的时候如果 WSL 的数据在 D 盘你只需要在新系统里装好 WSL 组件用wsl --import把原来导出的 tar 包导回去环境原封不动数据在 C 盘的话重装格式化一上来就全没了。迁移前先算一下空间别搬一半发现目标盘满了。估算方法是看当前 vhdx 的实际大小再留出 30% 以上余量导入过程中会同时存在 tar 包和新的 vhdx峰值占用接近两倍。发行版典型 vhdx 初始大小装了工具链项目后导入过程峰值占用Ubuntu 22.04 纯净1.5 GB8~15 GB约 2 倍Ubuntu 22.04 Node Python4 GB20~40 GB约 2 倍Ubuntu 22.04 CUDA8 GB40~80 GB约 2 倍2.2 迁移前的两件必做事备份与停机迁移操作本身有一定风险尤其是用导出/导入方案时一旦 tar 包损坏或者中途断电发行版可能直接进不去。所以请务必做两件事。第一完整备份。先把发行版停干净再导出wsl --shutdown wsl --list --verbose wsl --export Ubuntu D:\wsl-backup\ubuntu-20250601.tarwsl --export的第一个参数是发行版名称必须是wsl --list里显示的那个区分大小写Ubuntu-22.04 和 Ubuntu 是两个不同的名字。导出的 tar 建议带日期放在一个和迁移目标不同的目录里不要图省事放在同一个文件夹导入失败时连回滚的机会都没有。如果你的 WSL 版本比较新还可以用--vhd参数直接导出虚拟磁盘速度会快很多因为省掉了打包解包wsl --export Ubuntu D:\wsl-backup\ubuntu-20250601.vhdx --vhd第二确认没有正在运行的任务。这一步极其重要。如果 WSL 里有正在跑的数据库、正在编译的项目、正在写入的日志导出出来的 tar 包可能是损坏的或者状态不一致的。养成习惯迁移前先把所有终端窗口关掉再wsl --shutdown然后用wsl --list --running确认列表是空的。注意wsl --shutdown是强制停止不会给你保存的机会。请在关闭前手动停掉 MySQL、Redis、Docker 这些服务否则轻则数据文件损坏重则容器镜像层损坏需要重拉。2.3 两种迁移方案新版 --move 与经典导出导入现在有两种做法选哪种取决于你的 WSL 版本。方案 Awsl --manage --move适合 WSL 2.1 以上的 Store 版本。这是最省事的做法一条命令搞定不需要导出导入也不会丢默认用户配置wsl --shutdown wsl --manage Ubuntu --move D:\WSL\Ubuntu执行完之后 WSL 会把ext4.vhdx原样搬到新目录名字和用户配置全部保留。前提是你得先用wsl --version确认版本足够新如果报无法识别的参数说明版本太旧走方案 B。这个命令还有一个同族用法是设置稀疏文件来回收空间wsl --manage Ubuntu --set-sparse true稀疏模式让 vhdx 在删除文件后能真正把空间还给 Windows代价是某些场景下写入性能会略降我个人是开着的。**方案 B导
返回列表