WSL2 安装配置与实用运维技巧详解
WSL(Windows Subsystem for Linux)是 Windows 内置的 Linux 子系统功能,WSL2 版本引入了完整的 Linux 内核,在性能与兼容性上优于传统虚拟机或双系统方案。其架构与 Docker 类似:所有发行版共享同一套 Linux 内核(bootfs),各自独立保存根文件系统(rootfs)。因此,安装多个发行版时只会占用额外 rootfs 空间,内核是共用的。安装前需确保 BIOS 中已开启 CPU 虚拟化(VT),否则 WSL2 内核无法启动。现代 Windows 10/11 系统已内置 wsl 命令,直接以管理员身份打开 cmd 或 Windows Terminal,执行:
wsl --install
该命令默认安装 Ubuntu 发行版。若需其他发行版,先用如下命令查看可安装列表:
wsl -l -o
随后通过 -d 参数指定,例如安装 Debian:
wsl --install -d Debian
安装完成后可能提示重启。重启后系统会自动弹出终端窗口,要求设置 Linux 子系统的用户名和密码,依次输入即可完成初始化。同一命令可重复执行以添加多个发行版。
进入已安装的发行版只需执行:
wsl -d 发行版名称
例如:wsl -d Debian。多个发行版可同时打开多个终端窗口分别进入,输入 exit 退出子系统。子系统的操作与原生 Linux 一致,可正常配置软件源、安装软件包。
通过 Windows 资源管理器可直接访问子系统文件——在“此电脑”左侧导航栏中会显示“Linux”条目,点开即可浏览对应发行版的文件系统。需注意跨文件系统操作时的权限问题,建议查阅官方文档了解 Windows 与 Linux 权限映射规则。
子系统内运行的服务(如 Nginx)可直接通过 Windows 的 localhost 加端口号访问,无需额外配置网络映射。
常用运维操作:
1. 启用 systemctl
WSL2 默认未开启 systemd,导致部分服务(如 docker)无法通过 systemctl 管理。进入子系统后创建并编辑 /etc/wsl.conf:
sudo touch /etc/wsl.conf
sudo vim /etc/wsl.conf
(若 vim 未安装,先用 apt install vim 或改用 vi)添加如下内容:
systemd=true
保存后退出子系统,执行以下命令重启 WSL2 内核:
wsl --shutdown
再次进入子系统即可正常使用 systemctl。
2. 软件镜像源配置
与原生 Linux 发行版完全相同,以 Debian/Ubuntu 为例,修改 /etc/apt/sources.list 或对应发行版的源列表文件即可。
3. 命令自动补全
安装 bash-completion:
sudo apt install bash-completion
重启终端或执行 source /etc/bash.bashrc 即可生效。
4. 中文语言环境
进入子系统后安装语言包并设置 locale,步骤与普通 Linux 一致,参照相应发行版的中文化教程。
5. 关闭 WSL2 内核
即使退出所有子系统,WSL2 内核进程仍可能占用内存。在 Windows 中执行:
wsl --shutdown
可彻底停止内核,下次进入子系统时会自动重启。
6. 卸载发行版
执行下列命令将删除该发行版的所有用户数据:
wsl --unregister 发行版名称
内核不会被删除,可后续重新安装发行版。
7. 导出与导入发行版(迁移或备份)
导出当前发行版为 tar 文件:
wsl --export 发行版名称 "导出路径.tar"
例如:wsl --export Debian "C:\Users\swsk33\Downloads\debian.tar"
导入到其他位置或电脑:
wsl --import 新发行版名称 "安装目录" "tar文件路径"
例如:wsl --import Debian-recovery "C:\Users\swsk33\Downloads\deb" "C:\Users\swsk33\Downloads\debian.tar"
若 C 盘空间不足,可先导出当前发行版,注销原发行版,再导入到其他盘符,实现安全迁移。
参考官方文档可获取更详细的配置说明,包括 /etc/wsl.conf 选项、跨文件系统性能优化及网络代理设置等。
Re: WSL2 安装配置与实用运维技巧详解
感谢楼主的详细分享!内容非常实用,尤其关于启用 systemd 和导出导入发行版的部分,我之前一直没太搞懂迁移的办法,这下清楚了。另外想请教一下,如果在 WSL2 里跑 Docker,还需要额外配置网络或者端口映射吗?还是直接像其他服务一样用 localhost 就能访问?Re: WSL2 安装配置与实用运维技巧详解
感谢楼主的详细教程!WSL2 确实比传统虚拟机轻量很多,特别是共享内核的设计省了不少磁盘空间。我之前一直卡在 systemctl 无法使用的问题上,按你的方法修改 wsl.conf 后重启就好了,非常实用。 另外想补充一点:跨文件系统操作时,建议把项目文件放在 Linux 子系统的 home 目录下,用 Windows 工具(如 VSCode 的 Remote-WSL 插件)远程访问,这样能避免权限混乱和性能损失。楼主提到的导出导入功能也很适合迁移场景,之前 C 盘爆满时靠这个把 Ubuntu 挪到了 D 盘,完全无痛。 期待楼主后续能讲讲 WSL 与 Docker 配合使用的最佳实践,或者网络代理的配置技巧。再次感谢分享!Re: WSL2 安装配置与实用运维技巧详解
感谢楼主如此详尽的分享!WSL2 确实让 Windows 下的 Linux 开发体验提升了一个档次,特别是 systemd 启用和导出导入功能,对日常维护和迁移非常实用。 想请教一下,关于跨文件系统性能优化这一点,楼主是否有实际测试过 /mnt 下的 I/O 性能?或者有没有推荐的挂载参数设置(比如在 /etc/fstab 里使用 metadata 和 case 等选项)来提升跨系统文件的读写速度?另外,网络代理配置上,如果子系统内要使用 Windows 宿主机的代理(比如 clash),除了 export 环境变量外,有没有更稳定的方案(比如使用 WSL2 的 .wslconfig 文件配置 networkingMode=mirrored)?期待楼主的进一步指点。
页:
[1]