1. 为什么要在 Windows 11 上折腾 WSL 离线安装
很多人第一次接触 WSL,都是直接敲一句wsl --install,然后等着它自己从微软的服务器上把 Ubuntu 拉下来。网络顺畅的时候这确实是最省事的做法,但只要你经历过一次下载卡在 0%、进度条半天不动、或者公司内网根本连不上外部源的情况,就会明白"离线安装"这四个字有多重要。我自己的主力开发机就是 Windows 11,平时写代码、跑脚本、做数据处理都离不开 Linux 环境,但办公网络对外访问限制得比较死,在线安装经常失败,于是硬生生把 WSL 的离线安装流程摸了个透。
这篇内容要解决的核心问题很明确:在没有稳定外网、或者外网速度极慢的环境下,如何把 Ubuntu 22.04 完整地装进 Windows 11 的 WSL 里,并且把软件源换成国内镜像,让后续的apt install也能跑得飞快。它适合几类人:一是公司内网受限、无法直接访问外部资源的开发者;二是家里网络访问境外源速度感人、想一次性把环境搭好的同学;三是需要批量给多台机器部署统一 Linux 环境的运维人员。整个流程不依赖任何特殊工具,用的全是 Windows 自带能力和公开的镜像资源。
先说清楚 WSL 到底是什么。WSL 全称 Windows Subsystem for Linux,是 Windows 提供的一套兼容层,让你能直接在 Windows 上运行 Linux 的用户态程序,而不需要开虚拟机。WSL2 更进一步,用了一个轻量级的虚拟化层跑真正的 Linux 内核,性能和兼容性都比一代好很多。Ubuntu 22.04 LTS 是目前最主流的长期支持版本之一,软件生态成熟,社区资料多,作为开发环境非常稳。把这两个东西组合起来,你就能在 Windows 11 上得到一个几乎和原生 Linux 一致的命令行体验,同时还能和 Windows 的文件系统、VS Code、Docker 等工具无缝配合。
那为什么非要"离线"?因为在线安装的本质是 WSL 去微软的 CDN 下载一个发行版镜像包,这个包动辄几百 MB 到 1GB 以上。网络好的时候几分钟搞定,网络差的时候可能半小时都下不完,中途断了还得重来。离线安装的思路是:我们自己提前把发行版镜像包下载好,放到本地,然后让 WSL 直接从本地文件导入。这样一来,下载这一步可以借助国内镜像站或者任意能下到文件的方式完成,安装过程完全不依赖网络,速度快、可重复、可批量。
这里有个关键概念要先建立起来:WSL 的发行版本质上就是一个打包好的根文件系统(rootfs),通常以.tar.gz或者微软自己的打包格式存在。在线安装时,WSL 帮你下载并解压这个包;离线安装时,我们自己下载这个包,然后用wsl --import命令手动导入。理解了这一点,后面所有操作就都顺了。下面我会从环境准备开始,一步步把整个流程拆开讲,包括镜像从哪来、怎么导入、怎么换源、怎么验证,以及我踩过的那些坑。
2. 动手前的环境盘点与依赖确认
2.1 确认 Windows 11 版本和虚拟化支持
离线安装 WSL 对系统本身有要求,不是随便一台 Windows 11 都能直接上。第一步是确认你的系统版本和虚拟化功能是否就绪。按下Win + R,输入winver回车,能看到具体的版本号。WSL2 要求 Windows 10 版本 1903 及以上、内部版本 18362 及以上,Windows 11 全系都满足,所以版本这块基本不用担心。真正容易出问题的是虚拟化。
WSL2 依赖 Hyper-V 的底层虚拟化能力,需要在 BIOS/UEFI 里开启虚拟化支持(Intel 叫 VT-x,AMD 叫 AMD-V),同时在 Windows 功能里启用"虚拟机平台"和"适用于 Linux 的 Windows 子系统"这两个可选组件。检查虚拟化是否开启,可以打开任务管理器,切到"性能"标签页,看 CPU 那一栏右下角有没有"虚拟化:已启用"。如果显示已禁用,就得进 BIOS 打开,这一步不同主板操作不一样,通常在 Advanced 或者 CPU Configuration 里找 Virtualization Technology 之类的选项。
启用 Windows 功能有两种方式。图形界面是打开"控制面板 → 程序和功能 → 启用或关闭 Windows 功能",勾选"适用于 Linux 的 Windows 子系统"和"虚拟机平台",然后重启。命令行方式更利索,用管理员权限打开 PowerShell,执行下面两条:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完必须重启,否则功能不生效。重启之后,还需要确认 WSL 的内核更新包已经装上。WSL2 的 Linux 内核是独立于 Windows 更新的,微软会单独发布内核更新包。离线环境下,这个内核更新包(wsl_update_x64.msi)也需要提前下载好。如果你之前在线装过 WSL,内核大概率已经是最新的;如果是全新系统,建议手动装一下这个 msi 包,否则wsl --import导入后可能起不来。
提示:判断内核是否需要更新,可以执行
wsl --status,如果提示内核版本过低或者直接报错,就去装内核更新包。这个包在微软官方文档里有下载链接,离线场景下提前存到本地即可。
2.2 把 WSL 主程序本身准备好
这里有个容易被忽略的点:wsl --import这个命令本身是由 WSL 主程序提供的,而这个主程序在较新的 Windows 11 上是通过 Microsoft Store 分发的。也就是说,即使你要离线导入发行版,WSL 的主程序还是得先存在。全新系统上,如果从来没装过 WSL,wsl命令可能根本不存在,或者是个很老的版本。
解决办法是安装"适用于 Linux 的 Windows 子系统"这个应用。在线情况下,Store 里搜一下就能装。离线情况下,可以下载它的离线安装包(.msixbundle格式),然后用 PowerShell 的Add-AppxPackage命令安装:
Add-AppxPackage .\MicrosoftCorporationII.WindowsSubsystemForLinux_xxx.msixbundle装完之后,wsl --version应该能正常输出版本信息。如果提示"你的 Windows 子系统版本过旧",说明主程序版本太低,需要更新到较新版本才能支持完整的导入导出功能。我遇到过一台老机器,wsl命令存在但版本很老,--import参数都不认,最后就是靠更新主程序解决的。
另外,wsl --import和wsl --export这对命令是离线安装的核心。--export可以把一个已经装好的发行版导出成 tar 文件,--import则把 tar 文件导入成一个新的发行版。理解这对命令,你甚至可以在有网的机器上装好、导出,再拷到没网的机器上导入,这是内网批量部署最常用的套路。
2.3 磁盘空间和目录规划
Ubuntu 22.04 导入后,初始占用大概 1GB 出头,但随着你装各种开发工具,很快会涨到几个 GB 甚至十几 GB。WSL2 的虚拟磁盘文件(ext4.vhdx)会随着使用动态增长,而且默认不会自动收缩。所以规划好存放位置很重要。
默认情况下,wsl --import会把发行版装到你指定的目录里。我建议专门建一个目录,比如D:\WSL\Ubuntu-22.04,放在非系统盘上,避免 C 盘被撑爆。导入命令里指定的目标目录就是虚拟磁盘的落盘位置,这个目录一旦确定,后续迁移比较麻烦(虽然可以导出再导入),所以一开始就想清楚。
还有一点,WSL2 的虚拟磁盘默认上限是 1TB,一般够用。但如果你要做大数据处理,可能需要调整。这个可以在.wslconfig文件里配置,放在用户目录下(C:\Users\你的用户名\.wslconfig),内容类似:
[wsl2] memory=8GB processors=4 swap=2GB这个文件控制 WSL2 虚拟机能用的内存、CPU 核数和交换空间。默认情况下 WSL2 会吃掉宿主机一半的内存,如果你机器内存不大,建议手动限制一下,否则开着 WSL 再开别的重型软件会卡。
3. Ubuntu 22.04 镜像从哪来:离线包的获取思路
3.1 官方 rootfs 包与国内镜像站
离线安装的关键是拿到 Ubuntu 22.04 的 rootfs 包。这个包有几种来源,我按推荐程度排一下。
第一种是 Ubuntu 官方提供的 WSL rootfs 包。Ubuntu 官方为 WSL 专门构建了 rootfs,文件名类似ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar.gz,放在 Ubuntu 的 cloud-images 仓库里。这个包是官方维护的,干净、可靠,导入后就是一个最小化的 Ubuntu 系统。缺点是官方源在国内访问速度不稳定,这时候国内镜像站就派上用场了。
国内几大镜像站(比如清华 TUNA、中科大 USTC、阿里云、华为云等)都同步了 Ubuntu 的镜像仓库,包括 cloud-images。你可以从这些镜像站下载 rootfs 包,速度通常能跑满带宽。以清华源为例,路径大致是https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/下面找对应的 release 和 wsl 目录。具体路径会随镜像站结构调整,建议直接进镜像站搜索wsl.rootfs关键字定位。
第二种思路是"曲线救国":在一台有网的机器上,用wsl --install -d Ubuntu-22.04正常在线装好,然后用wsl --export导出成 tar 包,再拷到目标机器上wsl --import。这个方法的优势是导出的包包含了在线安装时的所有初始配置,兼容性最好。缺点是导出包会比官方 rootfs 大一些,因为包含了安装过程中产生的一些元数据。
第三种是从 Microsoft Store 的离线包入手。Store 应用本质上也是可以离线下载的,有一些第三方工具能抓取 Store 应用的安装包。不过这个方法相对绕,而且 Store 版本的 Ubuntu 包格式和 rootfs 不完全一样,导入时可能需要额外处理,我不太推荐新手走这条路。
3.2 校验下载文件的完整性
不管从哪个渠道下载,拿到文件后第一件事是校验完整性。大文件下载过程中断或者被篡改,导入时会报各种莫名其妙的错误。官方镜像站一般会提供 SHA256 校验值,下载完用命令算一下对比:
# Linux/macOS sha256sum ubuntu-22.04-xxx.rootfs.tar.gz # Windows PowerShell Get-FileHash .\ubuntu-22.04-xxx.rootfs.tar.gz -Algorithm SHA256两个值一致才说明文件没问题。我踩过一次坑,从某个非官方渠道下的包,导入后系统能起来但apt各种报错,折腾半天才发现是包本身损坏了。从那以后我养成了下载必校验的习惯,几分钟的事,能省掉后面几小时的排查。
另外要注意文件格式。WSL 的--import支持.tar、.tar.gz、.tar.xz等格式,但如果你下到的是.zip或者.7z,得先解压出里面的 tar 包再导入。还有些镜像站提供的是.vhdx格式的虚拟磁盘,那种是直接挂载用的,导入方式和 tar 包不同,别搞混了。
3.3 国内镜像源在离线场景下的双重作用
这里要区分两个概念:安装包的镜像和软件源的镜像。安装包镜像是用来下载 rootfs 的,解决的是"怎么把系统装进去";软件源镜像是系统装好之后,apt install时用的,解决的是"装完系统后怎么快速装软件"。这两个都换成国内源,整个体验才完整。
很多人离线装完系统就不管了,结果第一次apt update卡在那里半天不动,因为默认源指向的是境外的 archive.ubuntu.com。所以导入系统后的第一件事,就是把/etc/apt/sources.list换成国内镜像。这一步在离线安装流程里是必须的,否则你只是把系统装进来了,用起来还是难受。
Ubuntu 22.04 默认用的是/etc/apt/sources.list这个传统格式(不是新版 deb822 格式),换源就是替换文件内容。国内常用的源有清华、中科大、阿里云、华为云等,选一个你网络访问最快的就行。下面给一个清华源的配置示例,注意 Ubuntu 22.04 的代号是jammy:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse把这几行写进sources.list,保存后执行apt update,速度会有质的提升。这一步做完,你的离线安装才算真正闭环。
4. 导入与初始化:把 Ubuntu 22.04 装进 WSL
4.1 wsl --import 命令的完整参数拆解
核心命令就一条,但每个参数都值得说清楚:
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\Downloads\ubuntu-22.04.rootfs.tar.gz --version 2逐个拆解。Ubuntu-22.04是你给这个发行版起的名字,后续wsl -d Ubuntu-22.04就用这个名字启动,起个好记的,别用中文和特殊字符。第二个参数D:\WSL\Ubuntu-22.04是安装目录,WSL 会在这里生成ext4.vhdx虚拟磁盘文件,这个目录必须存在,WSL 不会自动创建。第三个参数是 rootfs 包的路径,支持绝对路径和相对路径。--version 2明确指定用 WSL2,不加的话在某些系统上可能默认用 WSL1,性能和兼容性都差一截。
导入过程其实就是把 tar 包解压到虚拟磁盘里,几百 MB 到 1GB 的包,机械硬盘上可能要一两分钟,SSD 上几十秒就完事。导入完成后不会有花哨的提示,命令行直接返回,这时候用wsl -l -v就能看到新导入的发行版,状态是 Stopped。
有个细节要注意:导入后的默认用户是 root,不是普通用户。这是离线导入和在线安装最大的区别之一。在线安装时,Ubuntu 会引导你创建一个普通用户并设置密码;离线导入的 rootfs 里没有这个引导过程,所以你进去就是 root。用 root 日常操作不是不行,但不太安全也不符合习惯,所以下一步就是创建普通用户。
4.2 创建普通用户并配置默认登录
先用 root 身份进入系统:
wsl -d Ubuntu-22.04进去之后,创建一个和你 Windows 用户名对应的普通用户,比如叫dev:
useradd -m -s /bin/bash dev passwd dev-m表示同时创建家目录,-s指定默认 shell 为 bash。然后给这个用户加上 sudo 权限:
usermod -aG sudo dev接下来配置 WSL 默认用这个用户登录。有两种方式。第一种是在发行版内部写配置文件,编辑/etc/wsl.conf:
[user] default=dev保存后退出 WSL,在 PowerShell 里执行wsl --terminate Ubuntu-22.04重启这个发行版,再进去就是dev用户了。第二种方式是在 Windows 端用命令设置,但wsl.conf这种方式更通用,迁移到别的机器也带着走,我推荐用这种。
注意:
/etc/wsl.conf的修改需要重启 WSL 实例才生效,光退出终端不够,必须wsl --terminate或者wsl --shutdown。这个坑我踩过,改完配置发现没生效,以为配置写错了,其实是没重启。
4.3 首次启动后的基础配置
普通用户建好之后,还有几件基础的事要做。第一是更新软件源并升级系统,前面换源之后执行:
sudo apt update && sudo apt upgrade -y这一步会拉取最新的软件包列表并升级已安装的包。离线环境下如果暂时没网,可以先跳过,等有网了再补。
第二是配置时区和语言环境。默认 rootfs 的时区可能是 UTC,改成东八区:
sudo timedatectl set-timezone Asia/Shanghai语言环境方面,如果locale输出有警告,可以装一下语言包:
sudo apt install -y locales sudo locale-gen en_US.UTF-8 zh_CN.UTF-8第三是确认网络。WSL2 默认走 NAT 模式,能正常访问外部网络。用ping或者curl测一下:
curl -I https://mirrors.tuna.tsinghua.edu.cn如果这一步不通,检查 Windows 的防火墙或者 DNS 设置。WSL2 的 DNS 有时候会抽风,表现为能 ping 通 IP 但域名解析不了,这种情况可以手动改/etc/resolv.conf,或者用wsl.conf里的generateResolvConf=false关掉自动生成,手动指定 DNS。
5. 换源加速:让 apt 和常用工具都跑起来
5.1 备份并替换 sources.list
换源之前先备份原文件,这是个好习惯,出问题能快速回滚:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后用你熟悉的编辑器打开/etc/apt/sources.list,把内容全部替换成国内源。除了前面给的清华源,中科大源也很稳:
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse如果你不确定哪个源快,可以几个都试试,用curl测一下响应时间。换完执行sudo apt update,观察下载速度。正常情况下国内源能跑到几 MB/s 甚至更高,比默认源快一个数量级。
有个细节:Ubuntu 22.04 的sources.list里如果混用了http和https,或者源地址写错,apt update会报错。报错信息里会明确指出哪一行有问题,照着改就行。另外,某些公司内网会拦截https流量,这种情况把源地址改成http试试。
5.2 其他常用工具的国内镜像配置
系统源换完只是第一步,实际开发中还会用到 pip、npm、docker 等工具,它们各自有自己的源,也建议一并换成国内镜像,否则装个 Python 包等半天。
pip 的配置,创建~/.pip/pip.conf:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cnnpm 的配置:
npm config set registry https://registry.npmmirror.comDocker 的镜像源配置在/etc/docker/daemon.json,不过 WSL 里装 Docker 通常是直接用 Docker Desktop 的 WSL 集成,或者装 docker-ce,配置方式略有不同。如果是在 WSL 里独立装 Docker,编辑 daemon.json:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }这些配置看起来琐碎,但一次性配好,后面省心很多。我的习惯是装完系统后写一个初始化脚本,把这些源配置、常用工具安装都串起来,新机器导入后跑一遍脚本就完事。
5.3 验证换源效果与常见报错
换源后执行sudo apt update,正常输出应该是每个源地址后面跟着Hit或者Get,最后显示有多少包可以升级。如果出现Could not resolve或者Connection timed out,说明源地址不通,换一个源或者检查网络。
常见的报错还有Release file is not valid yet,这通常是系统时间不对导致的。WSL2 的时间一般和 Windows 同步,但如果 Windows 时间本身不准,WSL 里也会跟着错。执行date看一下,不对的话在 Windows 端同步一下时间,或者手动设置。
还有一种报错是NO_PUBKEY,表示缺少 GPG 公钥。这个在换源后偶尔出现,执行提示里的命令导入公钥即可,通常是sudo apt-key adv --keyserver ...或者sudo apt install ubuntu-keyring。Ubuntu 22.04 推荐用signed-by方式管理密钥,不过对于官方源,一般不会遇到这个问题。
6. 踩坑实录:离线安装中最容易翻车的几个点
6.1 导入后启动报错 0x800701bc
这个错误码是 WSL 离线安装里出现频率最高的。现象是wsl --import成功,但一启动就报The Windows Subsystem for Linux instance has terminated或者直接弹 0x800701bc。根本原因是 WSL2 的 Linux 内核没有安装或者版本太旧。
前面 2.1 节提到的内核更新包就是解决这个的。去下载wsl_update_x64.msi装上,然后执行wsl --set-default-version 2确保默认版本是 2,再重新启动发行版。如果还是不行,执行wsl --update强制更新内核(这个需要网络),或者手动指定内核路径。
还有一种情况是虚拟化没开。虽然wsl --import不报错,但启动时因为底层虚拟化不可用而失败。回到 2.1 节确认 BIOS 里的虚拟化开关和 Windows 功能都开了。
6.2 导入的发行版默认用户是 root 的连锁反应
前面说过离线导入默认是 root,这个问题本身好解决,但它会引发一系列连锁反应。比如你用 root 装了一些工具,配置文件都写在了/root下,后来切到普通用户,发现工具用不了,因为配置不在~里。又比如某些工具检测到 root 身份会改变行为,或者拒绝运行。
我的建议是:导入后第一件事就是创建普通用户并设为默认,然后再开始装任何东西。顺序反了,后面清理起来很麻烦。如果已经用 root 装了一堆东西,可以把/root下的相关配置拷到普通用户家目录,并改一下属主:
sudo cp -r /root/.config /home/dev/ sudo chown -R dev:dev /home/dev/.config6.3 磁盘空间只增不减的虚拟磁盘
WSL2 的ext4.vhdx是个动态磁盘,用多少涨多少,但删了文件它不会自动缩回去。用久了你会发现这个文件可能有几十 GB,但系统里df -h显示只用了几个 GB。这是 WSL2 的已知行为,不是 bug。
解决办法是手动压缩。先关闭 WSL:
wsl --shutdown然后用diskpart或者Optimize-VHD压缩。diskpart的方式是:
diskpart # 进入 diskpart 后 select vdisk file="D:\WSL\Ubuntu-22.04\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit压缩过程可能比较慢,取决于磁盘大小。压缩完ext4.vhdx会明显变小。这个操作建议定期做,尤其是你经常在 WSL 里编译、删文件的话。
6.4 网络与 DNS 的间歇性抽风
WSL2 的网络走的是 NAT,宿主机和 WSL 之间通过虚拟网卡通信。大部分时候没问题,但偶尔会出现 DNS 解析失败、或者访问某些地址超时。表现是ping 8.8.8.8通,但ping baidu.com不通。
根因通常是 WSL 自动生成的/etc/resolv.conf指向了一个不可用的 DNS。可以手动改:
sudo rm /etc/resolv.conf sudo bash -c 'echo "nameserver 223.5.5.5" > /etc/resolv.conf'但这样改重启后会失效,因为 WSL 会重新生成。要永久生效,在/etc/wsl.conf里加:
[network] generateResolvConf = false然后手动维护/etc/resolv.conf。注意关掉自动生成后,这个文件不会被 WSL 覆盖,但你需要确保它一直存在且内容正确。
7. 从离线安装到日常使用的衔接
7.1 和 VS Code 的配合
装好 WSL 后,最常用的搭配就是 VS Code。在 Windows 上装好 VS Code,再装一个 "WSL" 扩展,然后在 WSL 终端里进入项目目录,执行code .,VS Code 就会以远程模式打开这个目录,编辑器跑在 Windows 上,终端和运行环境在 WSL 里,体验非常顺。
这里有个离线场景的坑:VS Code 的 WSL 扩展需要在 WSL 里装一个 server 组件,这个组件默认是从微软服务器下载的。如果 WSL 里网络受限,code .会卡在 "Installing VS Code Server"。解决办法是提前在有网的机器上装好,或者手动下载 server 包放到指定目录。VS Code 的 server 包下载地址可以从它的更新日志里找到,放到~/.vscode-server/bin/下对应版本号的目录里即可。
7.2 文件系统互访的正确姿势
WSL 和 Windows 之间可以互相访问文件。Windows 访问 WSL 文件,通过\\wsl$\Ubuntu-22.04\这个路径;WSL 访问 Windows 文件,通过/mnt/c/、/mnt/d/这些挂载点。
但这里有个性能陷阱:不要在/mnt/c/下跑 Linux 项目。因为跨文件系统的 IO 性能很差,npm install或者编译操作会慢到怀疑人生。正确做法是把项目放在 WSL 自己的文件系统里(比如~/projects),需要和 Windows 共享的文件才放到/mnt/下。这个坑几乎每个 WSL 新手都会踩,我当初也是把项目放在 Windows 盘里,装个依赖等了好几分钟,后来挪到 WSL 内部,秒装。
7.3 备份与迁移:export 的妙用
离线安装的流程反过来就是备份流程。当你把环境配置得差不多,想备份一份,或者想迁移到另一台机器,用wsl --export:
wsl --export Ubuntu-22.04 D:\Backup\ubuntu-22.04-backup.tar导出的 tar 包包含了整个系统,包括你装的所有软件和配置。换机器时,在新机器上wsl --import这个包,环境原样恢复。这个套路在内网批量部署时特别有用:在一台机器上配好标准环境,导出,然后分发到其他机器导入,省去重复配置的时间。
导出前建议先清理一下系统,删掉缓存和临时文件,能显著减小包体积:
sudo apt clean sudo rm -rf /tmp/*导出的包大小取决于你装了多少东西,纯净系统大概 1GB 左右,装了开发环境可能 5GB 以上。压缩一下再传更省事,tar 包本身可以再 gzip 一层。
7.4 一些提升日常体验的小配置
最后分享几个让 WSL 用起来更舒服的配置。第一是给apt开启并行下载,在/etc/apt/apt.conf.d/下新建一个文件,写入:
Acquire::Languages "none"; Acquire::http::Pipeline-Depth "10";第二是配置 git 的用户信息和常用别名,这些在 WSL 里重新配一遍就行。第三是如果你用 Windows Terminal,可以把 WSL 发行版加到配置文件里,设置好字体和配色,用起来比默认终端舒服很多。
还有个小技巧:WSL 的启动速度可以通过wsl.conf里的[boot]段配置启动命令,比如自动启动某些服务。不过别塞太多东西,否则每次开终端都要等。我一般只放必要的环境变量和路径配置。
整个离线安装流程走下来,核心其实就是三件事:准备好 rootfs 包、用wsl --import导入、换国内源。听起来简单,但每个环节都有细节,尤其是内核版本、默认用户、磁盘压缩这几个点,不注意就会卡住。我自己的经验是,第一次装的时候把每一步都记下来,形成自己的 checklist,以后再装就是照着走一遍的事。环境这种东西,一次配好,后面省下的时间远超投入。