WSL 完整教程:从零入门到熟练掌握

Linux 是一种操作系统,和 Windows、macOS 是同类东西。但与 Windows 不同的是: Linux 有很多"发行版"(distributions,简称 distros),就像不同的手机品牌都基于 Android 一样。常见的 Linux 发行版包括: 在 WSL 里,默认安装的就是 Ubuntu。 Bash 是一种命令行 shell(解释器),你可以把它理解为 Linux 的"命令输入窗口"。当你打开 WSL 终端时,看到的 Ubuntu 默认使用 Bash 作为命令行解释器,有些发行版默认用 ZSH(功能更强),但原理一样:都是用来接收并执行你输入的命令。 终端是一个程序,用来显示命令行界面(CLI)。在 Windows 上,你有几种选择: WSL 安装后,你可以在任何一个终端里输入 在 WSL 语境下,"发行版"就是一个独立的 Linux 系统实例。你可以同时安装多个发行版,比如同时有 Ubuntu 22.04、Debian、Kali,它们互相独立、各自有自己的文件系统和软件。 WSL(Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统)是 Windows 10/11 内置的一个功能,它让你可以在 Windows 里直接运行 Linux 环境,无需虚拟机,也不用双系统。 WSL 的核心价值在于:同时使用 Windows 和 Linux 两者同时运行、无缝切换,文件互通、环境互通。 WSL 有两个主要版本,它们的工作原理完全不同: WSL 1 是"翻译层": Windows 在内核层面实现了一个 Linux 系统调用(system call)翻译器。当 Linux 程序发出一个系统调用时(比如"读取文件"),WSL 1 会把这个调用实时翻译成 Windows NT 内核能理解的形式,然后执行。 这种方式的优点是运行 Windows 文件系统里的文件特别快(因为本来就是 Windows 的文件系统),缺点是不是所有 Linux 程序都能完美兼容(部分系统调用没有完整翻译)。 WSL 2 是"虚拟机": WSL 2 内部运行了一个真正的轻量级 Linux 虚拟机(基于 Hyper-V),里面有一个真实的 Linux 内核。因此所有 Linux 程序都能完美运行,兼容性是 100%。 代价是:因为多了一层虚拟化,访问 Windows 文件( 绝大多数人应该用 WSL 2。以下是 WSL 1 的极少数适用场景: 结论:除非有明确理由要用 WSL 1,否则无脑用 WSL 2。 很多人把"WSL 2"里的"2"理解为"第二版软件",其实它是"第二个架构版本"的意思。正确的理解是: 这和 Ubuntu 22.04 里的"22.04"是两回事,别搞混。 前置知识: 需要 Windows 10 1903+(内部版本 18362+)或 Windows 11,或 Windows Server 2019+。WSL 2 需要 CPU 支持虚拟化(Intel VT-x / AMD-V)和 SLAT。 开机按主板热键进入 BIOS(F2/Del/Esc,联想 F2、戴尔 F2、华硕 Delete、惠普 Esc),找到 "Virtualization Technology" → 设为 Enabled → 保存退出。 图形操作:按 或一条命令(管理员 PowerShell): 注意:开启"虚拟机平台"是使用 WSL 2 的必要条件。开启后必须重启。 适用:Windows 10 2004 及以上,或 Windows 11,或 Windows Server 2022/2025 桌面体验 以管理员身份打开 PowerShell 或 Windows Terminal,运行: 这条命令会自动完成所有步骤:启用 WSL 功能 → 安装 Linux 内核更新包 → 安装 Ubuntu → 设置 WSL 2。 首次安装需要重启电脑,不要跳过。 重启后 Ubuntu 自动打开(或从开始菜单手动打开),按提示: 看到以下提示符表示安装成功: 示例: 示例: 示例: 示例: Windows 自带终端体验差,建议安装微软官方 Windows Terminal: Windows Terminal 支持多标签页(同时开 Ubuntu/PowerShell/CMD)、快捷键自定义、主题美化,体验远比默认终端好。 查看可安装的发行版列表: 安装额外的发行版:【安装完后重启下电脑】 设置默认发行版(运行 设置默认 WSL 版本(新建发行版用 WSL 1 还是 2): 切换已有发行版的 WSL 版本: 打开 PowerShell 或 CMD,运行: 预期输出示例: 含义说明: 第一次启动 Ubuntu 后,第一件事是更新软件包列表和已安装的软件。这和 Windows Update 类似,Linux 需要定期做这件事。 在 Ubuntu 终端里输入: 解释一下这条命令: 为什么先 WSL 使用安装时创建的第一个用户账号。如果有多个账号,可以设置默认登录用户: 在文件中添加: 按 Ctrl + O 保存,Ctrl + X 退出。然后关闭 WSL( 下次启动时就会以默认用户登录。 刚装好的 Ubuntu 是一个"最小系统",默认只有基础工具。按需安装: Python(机器学习/数据分析): Node.js(前端/后端开发): Git(代码版本控制): Go(后端开发): 打开终端后,你看到类似这样的内容: 含义如下: Linux 里没有 Windows 的"C 盘 D 盘",所有文件都在一棵目录树里。 小技巧: 按 警告: Linux 没有"回收站", 管道和重定向是 Linux 命令行最强大的特性。 管道 重定向 stderr 重定向 后台运行程序: 查看和杀死进程: systemd 服务(Ubuntu 22.04+): WSL 有两个文件系统: Linux 根文件系统 这是 WSL 自己的文件系统,存储在 Windows 的一个虚拟硬盘文件里( 重要目录: Windows 驱动器挂载 Windows 的硬盘驱动器被"挂载"到 Linux 文件系统的 方式一:通过网络路径(推荐) 在 Windows 文件资源管理器的地址栏输入: 注意:修改 WSL Linux 文件系统里的文件时,不要使用 Windows 的编辑器直接修改(比如不要在 Windows 里用 Notepad++ 直接编辑 6.3 在 Linux 里访问 Windows 文件 在 WSL 终端里: WSL 会把 Windows 文件系统当作外部挂载的驱动器来对待,所以操作时要小心:不要用 Linux 有严格的权限模型。每个文件有三组权限: 每组有三种权限: 查看权限: 输出示例: 分解: 修改权限: 修改所有者和组: Linux 文件系统区分大小写,Windows NTFS 不区分大小写。 这会导致一个常见问题: 反过来,如果你把一个叫 解决方案: 在项目里保持统一的命名规范(推荐全小写 + 连字符或下划线)。 环境变量是 Linux 系统的核心概念。PATH 是最重要的环境变量,它告诉系统去哪里找可执行程序。 添加一个路径到 PATH: WSL 2 运行在一个轻量级虚拟机里,有自己的 IP 地址,和 Windows 主机不在同一个网络里。架构如下: 默认情况下,WSL 2 通过 NAT(网络地址转换)方式连接外部网络:WSL 里的程序访问互联网时,Windows 帮它做地址转换,就像普通路由器的工作方式。 最常见场景 —— 在 WSL 里跑了一个 Node.js 网站(端口 3000),想在 Windows 浏览器里访问。 WSL 2 默认支持 localhost 转发,直接访问即可: WSL 2 会自动把 Windows 的 localhost 请求转发到 WSL 虚拟机里。 例如 Windows 上跑了 MySQL(端口 3306),想从 WSL 连接: 启用后 WSL 和 Windows 在同一网络,互相访问更简单。通过 .wslconfig 文件配置。 启用方法: 编辑 Windows 侧的配置文件 重启 WSL: 启用后效果: WSL 有两个配置文件,控制不同层面。掌握它们是进阶使用的关键。 注意: 修改这两个文件后,都需要重启 WSL 才能生效。用 .wslconfig 控制 WSL 2 虚拟机的硬件资源配置(内存、CPU、交换空间等)和实验性网络功能。 文件位置: 创建/编辑方法: 在 PowerShell 中运行: 或者手动到 常用配置项: 配置生效后验证: 然后在 WSL 里查看资源分配: wsl.conf 针对单个 Linux 发行版进行配置,比如启动行为、自动挂载、网络、默认用户等。 文件位置: WSL 里的 创建/编辑方法: 常用配置项: systemd 特别说明: Ubuntu 22.04 及更高版本默认使用 systemd 作为初始化系统: 场景 1:分配更多内存给 WSL(机器学习/编译大型项目) 场景 2:让 Docker 在 WSL 启动时自动运行 场景 3:解决 VPN 导致 DNS 解析失败 然后手动创建 写入: WSL 2 支持 GPU 加速计算,这对于机器学习(ML)训练尤为重要。不同于 CPU 纯软件计算,GPU 可以并行处理大量矩阵运算,使 ML 模型训练速度提升数倍甚至数十倍。 WSL 2 支持三种主流 GPU 加速方案: 如何选择? 如果你用的是 NVIDIA 显卡,首选 NVIDIA CUDA,性能最强。如果用的是 AMD 或 Intel 显卡,或者需要更好的兼容性,选择 DirectML 方案。 CUDA 是 NVIDIA 官方推出的并行计算平台,在 WSL 2 中通过 Docker 容器运行效果最佳。 第一步:安装 NVIDIA 显卡驱动 从 NVIDIA 官网下载并安装最新驱动程序: 第二步:安装 Docker 第三步:安装 NVIDIA 容器工具包 第四步:运行 TensorFlow + CUDA 容器 进入容器后,运行内置示例测试 GPU 是否正常工作: 如果看到训练过程显示 GPU 内存占用,说明 CUDA 已成功配置。 DirectML 是微软的 GPU 加速库,支持 AMD、Intel 和 NVIDIA 显卡。 第一步:安装显卡驱动 第二步:安装 Miniconda(Python 环境管理) 第三步:创建虚拟环境并安装 TensorFlow-DirectML 第四步:验证安装 在 Python 中运行: 第一步:安装依赖 第二步:安装 PyTorch-DirectML 第三步:验证安装 如果电脑有多块显卡,WSL 默认只使用一块。如需指定特定显卡: 例如设置为 WSL 2 通过 WSLg(WSL GUI)支持在 Windows 上直接运行 Linux 图形应用程序。安装后,Linux GUI 应用会: 全新安装 WSL: 在管理员 PowerShell 中运行: 重启后会自动安装 WSLg。 已有 WSL 安装: 更新到支持 GUI 的版本: 注意:Linux GUI 应用仅支持 WSL 2,WSL 1 不可用。 先更新软件包列表: Gnome 文本编辑器(gedit 替代品) GIMP(图像编辑) Nautilus(文件管理器) VLC(多媒体播放器) X11 工具集(xcalc、xclock、xeyes 等) Google Chrome Microsoft Edge(Linux 版) 参考官方页面选择命令行安装: 安装后启动命令: 安装完成后,Linux GUI 应用会出现在开始菜单的发行版名称分类下,例如: 应用可像 Windows 应用一样固定到任务栏或创建桌面快捷方式。 错误:"无法打开显示"(cannot open display) 如果运行 GUI 应用时出现此类错误: 更多排查方法参考 WSLg 官方 Wiki: Docker 是一种容器化平台,它允许开发者将应用及其所有依赖(库、框架、环境)打包为一个轻量级容器,确保应用在任何环境下都能一致运行。 容器 vs 虚拟机: 在 WSL 2 中,Docker 可以原生运行(不模拟),性能和互操作性远超 WSL 1。 检查 WSL 版本: 第一步:下载并安装 Docker Desktop 从官网下载:https://docs.docker.com/desktop/install/windows-install/ 安装时确保勾选"Use WSL 2 instead of Hyper-V"选项。 第二步:启动 Docker Desktop 从开始菜单启动 Docker Desktop,任务栏图标变稳定后表示启动完成。 第三步:确认安装成功 打开 Ubuntu 终端: 如果看到 hello-world 容器正常运行,说明 Docker 安装成功。 启用 WSL 2 引擎: Docker Desktop → 设置 → General → 勾选 "Use WSL 2 based engine" 启用特定发行版的 Docker 集成: Docker Desktop → Settings → Resources → WSL INTEGRATION → 开启对应发行版的开关 安装 VS Code 扩展: 配置开发容器: 注意:代码应保存在 WSL Linux 文件系统中,而非 /mnt/c,这样文件访问速度更快。 在容器内运行和调试: 如果不使用 Docker Desktop,也可以直接在 WSL 里安装 Docker 引擎: 然后安装 NVIDIA 容器工具包(如需 GPU 支持): 注意:Docker Desktop 和 WSL 内直接安装的 Docker 不能同时运行。如需同时运行 Linux 和 Windows 容器,使用 Docker Desktop;如只需 Linux 容器,可直接安装 Docker 引擎。 错误:docker wsl open //./pipe/docker_wsl:系统找不到指定的文件 这是旧的 WSL Docker 预览版遗留问题。检查并删除已弃用的 wsl 上下文: 之后使用默认上下文即可。 查找 Docker 镜像存储位置 Docker 在 WSL 中创建两个存储文件夹:目录
第一章:前置知识——搞清楚这些概念
1.1 什么是 Linux?
1.2 什么是 Bash?
$ 或 # 提示符就是 Bash。1.3 什么是终端(Terminal)?
wsl 命令来启动 Linux Bash。1.4 什么是发行版(Distribution)?
第二章:WSL 是什么?深入理解 WSL 1 和 WSL 2
2.1 WSL 是什么
2.2 WSL 1 vs WSL 2——到底有什么区别?
技术原理
/mnt/c)时比 WSL 1 稍慢,但访问 Linux 自己的文件时反而更快。详细对比
快 快 日常首选 什么时候用 WSL 1?
2.3 WSL 的版本号和命名澄清
第三章:安装 WSL——从零开始,实操成功
3.1 前置检查(三步确认)
第一步:检查 Windows 版本
Win + R → 输入 winver → 回车
第二步:确认虚拟化已开启
Ctrl + Shift + Esc 打开任务管理器 → "性能" → "CPU"第三步:开启 WSL 功能(如未开启)
Win + R → 输入 appwiz.cpl → "启用或关闭 Windows 功能" → 勾选 ☑ "适用于 Linux 的 Windows 子系统" + ☑ "虚拟机平台" → 确定 → 重启。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /featurename:VirtualMachinePlatform /all /norestart
3.2 标准安装流程(Windows 10 1903+ / Windows 11 推荐)
方式一:Microsoft Store 图形安装(最简单,无需命令)
Win → 打开 Microsoft StoreUbuntu Ubuntu 24.04 LTS Debian Kali Linux Arch Linux Alpine WSL 方式二:一条命令安装(开发者推荐)
wsl --install

安装完成后设置用户名密码:
john)
验证 WSL 版本:
wsl --list --verbose3.3 WSL 常用命令详解
安装与初始化命令
wsl --installwsl --install -d <发行版>wsl --install -d Debianwsl --list --onlinewsl --list --verbosewsl --updatewsl --version# 查看可用发行版
wsl --list --online
# 安装 Ubuntu
wsl --install -d Ubuntu
# 安装 Debian
wsl --install -d Debian
# 更新 WSL 内核
wsl --update发行版管理命令
wsl -d <发行版>wsl --shutdownwsl --terminate <发行版>wsl --unregister <发行版>wsl --set-default <发行版>wsl 时启动的版本)wsl --import <名称> <安装路径> <tar文件>wsl --export <发行版> <tar路径># 启动 Ubuntu
wsl -d Ubuntu
# 关闭所有 WSL
wsl --shutdown
# 终止 Ubuntu
wsl --terminate Ubuntu
# 将 Ubuntu 从 WSL 1 切换到 WSL 2
wsl --set-version Ubuntu 2
# 设置默认发行版
wsl --set-default Ubuntu
# 导出 Ubuntu 为备份
wsl --export Ubuntu D:\Backup\ubuntu.tar
# 从备份导入 Ubuntu
wsl --import Ubuntu D:\WSL\Ubuntu D:\Backup\ubuntu.tar在 WSL 里执行的命令
wsl --command "<命令>"wsl -- <命令>wsl --distribution <发行版> <命令>exit# 从 PowerShell 在 WSL 里执行命令
wsl --command "ls -la"
wsl --command "sudo apt update"
# 查看 WSL 系统信息
wsl --command "uname -a"
# 在指定发行版里执行
wsl --distribution Debian uname -aWSL 系统运维命令
wsl --statuswsl --debug-shellwsl --manage <发行版> <选项>wsl -e <命令>--command)# 查看 WSL 详细状态
wsl --status
# 打开调试 shell
wsl --debug-shell
# 用默认发行版执行命令
wsl -e bash -c "echo hello"3.4 安装 Windows Terminal(强烈推荐)


3.5 安装多发行版 / 更换默认发行版
wsl --list --online
wsl --install -d Debian # 安装 Debian
wsl --install -d kali-linux # 安装 Kali Linuxwsl 时启动哪个):wsl --set-default Ubuntu
wsl --set-default-version 2 # 推荐默认 WSL 2
wsl --set-version Ubuntu 2 # Ubuntu 改为 WSL 2
wsl --set-version Ubuntu 1 # Ubuntu 改为 WSL 13.6 验证安装成功
wsl --list --verbose
NAMESTATEVERSION*wsl 命令时启动的版本)3.7 提示:安装过程中常见错误
%LocalAppData%\Packages\ 下 LocalState 文件夹的"压缩内容"勾选第四章:第一次启动——搞定初始化配置
4.1 更新系统软件包
sudo apt update && sudo apt upgrade -y
sudo = 以管理员(root)权限执行(类似 Windows 的"以管理员身份运行")apt = Ubuntu 的软件包管理器update = 从服务器获取最新软件包列表upgrade = 把已安装的软件升级到最新版本-y = 自动确认所有提示,无需手动输入 yesapt update 再 apt upgrade?apt update 只是"刷新软件包目录",apt upgrade 才是真正升级。顺序不能颠倒。4.2 设置默认用户
# 编辑配置文件
sudo nano /etc/wsl.conf[user]
default = your_usernameexit),在 PowerShell 里执行:wsl --shutdown
4.3 安装开发工具
sudo apt install python3 python3-pip python3-venv -y
python3 --versioncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重启终端后
nvm install --lts
node --versionsudo apt install git -y
git config --global user.name "Your Name"
git config --global user.email "you@example.com"sudo apt install golang-go -y
go version4.4 认识终端和基础命令
4.4.1 理解终端提示符
john@DESKTOP-ABC123:~$
john = 当前用户名DESKTOP-ABC123 = 计算机名~ = 当前所在目录(~ 代表用户主目录,即 /home/john)$ = 普通用户提示符(如果是 # 代表 root 管理员用户)
4.4.2 目录操作命令
pwdlsls -lls -lacd 目录cd ~cdcd ..cd -Tab 键可以自动补全目录/文件名。4.4.3 文件操作命令
mkdir 目录mkdir -p a/b/ctouch 文件cp 文件 目标cp -r 目录 目标mv 文件 目标rm 文件rm -rf 目录cat 文件less 文件head -n 20 文件tail -n 20 文件rm -rf 删除的文件无法恢复。第五章:进阶命令——管道、查找与进程管理
5.1 管道和重定向
| —— 把一个命令的输出送给另一个命令:# 找出当前目录中最大的 5 个文件
ls -lh | sort -k5 -h | tail -5
# 在文件中搜索包含 "error" 的行
cat app.log | grep "error"
# 统计文件总行数
cat readme.md | wc -l> —— 把输出写入文件:echo "Hello" > greeting.txt # 覆盖写入
echo "More" >> greeting.txt # 追加写入2> —— 错误信息也能单独保存:command > output.txt 2> error.txt # 正确输出和错误分别保存
5.2 查找文件
find —— 在目录树中查找文件:find . -name "app.py" # 查找文件
find /var/log -name "*.log" # 查找所有 .log 文件
find . -mtime -7 # 查找 7 天内修改过的文件grep —— 在文件内容中搜索:grep "function" app.py # 在文件中搜索关键词
grep -r "TODO" ./src/ # 在目录递归搜索
grep -i "error" app.log # 忽略大小写
grep -n "main" app.py # 显示行号
grep -v "debug" app.py # 反向搜索(显示不包含的行)5.3 系统信息命令
uname -a # 查看系统信息(内核版本等)
hostname # 查看主机名
whoami # 查看当前用户名
top # 查看进程和资源占用(q 退出)
df -h # 查看磁盘空间
free -h # 查看内存使用情况5.4 进程和服务管理
./my_script.sh & # 在命令后加 &,后台运行
nohup ./script.sh & # 关闭终端后继续运行ps aux # 查看所有进程
ps aux | grep python # 查找 python 相关进程
kill PID # 温柔地结束进程(推荐)
kill -9 PID # 强制杀死(极端情况)sudo systemctl start nginx # 启动服务
sudo systemctl stop nginx # 停止服务
sudo systemctl restart nginx # 重启服务
sudo systemctl status nginx # 查看状态
sudo systemctl enable nginx # 开机自启动第六章:文件系统与跨系统互操作
6.1 WSL 的文件系统结构
/ext4.vhdx),完全由 Linux 管理。/home/用户名~/root/etc/usr/var/tmp/mnt//mnt/ 目录下:C:\/mnt/cD:\/mnt/dC:\Users\用户名/mnt/c/Users/用户名
6.2 在 Windows 里访问 Linux 文件
\\wsl$\Ubuntu\home\john
这会直接访问 Ubuntu 里 john 用户的主目录。你可以像操作普通文件夹一样复制粘贴文件。
/home/john 下的文件),这可能导致文件损坏。正确做法是通过 WSL 终端里的编辑器(如 nano、vim、或者 code 命令调用 VS Code)来编辑。
cd /mnt/c/Users/YourName/Documents # 访问 Windows 文档目录chmod/chown 修改 Windows 文件的权限(在 /mnt/c 里的文件),这可能产生意外结果。6.4 文件权限基础
ls -l
-- = 普通文件,d = 目录)rwxr-xr--john john4096May 7 22:30
chmod +x app.py # 给文件添加执行权限
chmod 755 app.py # 设置为 rwxr-xr-x(所有者完全权限,其他人读和执行)
chmod 600 app.py # 设置为 rw-------(只有所有者可读写)
chmod -R 755 mydir/ # 递归修改目录及所有子文件(-R = recursive)
sudo chown john:john app.py # 修改文件所有者
sudo chgrp developers app.py # 修改所属组
sudo chown -R john:developers dir/ # 递归修改6.5 区分大小写——Windows 和 Linux 的重要差异
# 在 Linux 里,这是三个不同的文件
touch file.txt File.txt FILE.txt # 成功创建三个文件
# 在 Windows 里,这三个名字指的是同一个文件MyApp 的文件夹从 WSL 移到 Windows,然后又在 Windows 里创建了一个叫 myapp 的文件夹,再移回 WSL,就会出问题。6.6 环境变量和 PATH
# 查看 PATH 的内容
echo $PATH
# 查看单个环境变量
echo $HOME # 等价于 Windows 的 %USERPROFILE%
echo $USER
echo $PWD # 当前目录
# 临时添加(仅当前终端有效)
export PATH=$PATH:/opt/myprogram/bin
# 永久添加(写入配置文件)
echo 'export PATH=$PATH:/opt/myprogram/bin' >> ~/.bashrc
source ~/.bashrc # 重新加载配置第七章:网络与进阶配置
7.1 WSL 2 的网络架构
7.2 从 Windows 访问 WSL 里跑的服务
http://localhost:3000
7.3 从 WSL 访问 Windows 上的服务
# 先获取 Windows 主机的 IP(在 WSL 里执行)
ip route show | grep -i default | awk '{ print $3}'
# 假设输出是 172.30.96.1
# 连接 Windows 上的 MySQL
mysql -h 172.30.96.1 -u root -p7.4 镜像网络模式(Windows 11 22H2+)
%UserProfile%\.wslconfig:[wsl2]
networkingMode=mirroredwsl --shutdown
配置文件体系
7.5 两个配置文件速查
wsl --shutdown 关闭所有 WSL。7.6 .wslconfig——全局配置(Windows 侧)
C:\Users\你的用户名\.wslconfignotepad $env:USERPROFILE\.wslconfig
C:\Users\你的用户名 路径下,新建一个名为 .wslconfig 的文件(注意文件名有前导点,没有扩展名)。[wsl2]
# WSL 2 虚拟机最大内存(建议留一半给 Windows)
memory=4GB
# WSL 2 虚拟机使用的 CPU 核心数
processors=4
# 交换空间大小(物理内存不够时用硬盘代替)
swap=2GB
# 是否启用 localhost 转发(默认 true,WSL 2 NAT 模式需要)
localhostForwarding=true
# 是否启用嵌套虚拟化(在 WSL 里运行虚拟机)
nestedVirtualization=true
[experimental]
# 自动代理——自动读取 Windows 的代理设置
autoProxy=true
# DNS 隧道——改善 VPN 兼容性(Windows 11 默认开启)
dnsTunneling=true
# 镜像网络模式——WSL 和 Windows 在同一网络
networkingMode=mirroredwsl --shutdown
wsl -d Ubuntucat /proc/meminfo | head -2
7.7 wsl.conf——单发行版配置(Linux 侧)
/etc/wsl.confsudo nano /etc/wsl.conf
# 默认登录用户
[user]
default=john
# systemd 初始化(Ubuntu 22.04+ 默认开启)
[boot]
systemd=true
# 启动时运行的命令(以 root 身份)
command=service docker start
# 自动挂载 Windows 驱动器
[automount]
enabled=true # 是否自动挂载(默认 true)
mountFsTab=true # 是否处理 /etc/fstab
root=/mnt/ # 挂载根目录
options="uid=1000,gid=1000,umask=22,metadata" # 挂载选项
# 网络配置
[network]
generateHosts=true # 是否生成 /etc/hosts(默认 true)
generateResolvConf=true # 是否生成 /etc/resolv.conf(默认 true,用于 DNS)
hostname=wsl-demo # 设置 WSL 虚拟机的主机名
# Windows 和 Linux 互操作性
[interop]
enabled=true # 是否允许从 WSL 启动 Windows 程序(默认 true)
appendWindowsPath=true # 是否把 Windows PATH 添加到 Linux PATH(默认 true)# 检查 systemd 是否在运行
systemctl list-units --type=service | head -10
# 启动一个服务
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx7.8 常用配置场景
# .wslconfig
[wsl2]
memory=8GB
processors=8
swap=4GB# wsl.conf
[boot]
systemd=true
command=service docker start# wsl.conf
[network]
generateResolvConf=false/etc/resolv.conf:sudo nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4第八章:GPU 加速计算——在 WSL 里跑机器学习
8.1 概述
NVIDIA CUDA TensorFlow-DirectML PyTorch-DirectML 8.2 先决条件
8.3 NVIDIA CUDA 配置
https://www.nvidia.com/Download/index.aspx# 安装 Docker(如果你还没有安装)
curl https://get.docker.com | sh
sudo service docker start# 添加 NVIDIA 仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 安装
sudo apt-get update
sudo apt-get install -y nvidia-docker2docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
cd nvidia-examples/cnn/
python resnet.py --batch_size=648.4 TensorFlow-DirectML 配置
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.shconda create --name directml python=3.7 -y
conda activate directml
pip install tensorflow-directmlimport tensorflow as tf
print("GPU:", tf.config.list_physical_devices('GPU'))8.5 PyTorch-DirectML 配置
sudo apt install libblas3 libomp5 liblapack3
pip install torch-directml
import torch
torch_directml.is_available() # 返回 True 表示可用8.6 多 GPU 配置
export MESA_D3D12_DEFAULT_ADAPTER_NAME="<设备管理器中显示的显卡名称>"
"NVIDIA" 会匹配第一个以 NVIDIA 开头的显卡。第九章:Linux GUI 应用——在 WSL 里运行桌面程序
9.1 概述
9.2 先决条件
9.3 启用 Linux GUI 支持
wsl --install
wsl --update
wsl --shutdown # 重启 WSL 使更新生效9.4 安装常用 GUI 应用
sudo apt update
sudo apt install gnome-text-editor -y
gnome-text-editor ~/.bashrcsudo apt install gimp -y
gimpsudo apt install nautilus -y
nautilussudo apt install vlc -y
vlcsudo apt install x11-apps -y
xclock # 启动时钟
xeyes # 启动眼睛跟随鼠标的程序cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install -f ./google-chrome-stable_current_amd64.deb
google-chrome
https://www.microsoft.com/edge/download/insider?platform=linux#linux-commandmicrosoft-edge9.5 从开始菜单管理 GUI 应用
9.6 故障排除
wsl --updatewsl --shutdown
https://github.com/microsoft/wslg/wiki/Diagnosing-"cannot-open-display"-type-issues-with-WSLg第十章:Docker 容器——在 WSL 里使用容器
10.1 Docker 概述
10.2 先决条件
wsl --version
10.3 安装 Docker Desktop
docker --version
docker run hello-world10.4 Docker Desktop 配置
10.5 常用 Docker 命令
# 查看 Docker 版本
docker --version
# 查看所有命令
docker
# 查看详细命令帮助
docker run --help
# 列出本地镜像
docker image ls --all
# 列出容器(正在运行)
docker container ls
# 列出所有容器(含已停止)
docker container ls --all
# 或
docker ps -a
# 查看 Docker 系统信息
docker info
# 启动一个容器
docker run -it ubuntu bash
# 停止容器
docker stop <容器ID>
# 删除容器
docker rm <容器ID>
# 删除镜像
docker rmi <镜像ID>10.6 使用 VS Code 开发容器应用
git clone https://github.com/你的用户名/你的项目.git
cd 你的项目
code .10.7 在 WSL 里直接安装 Docker 引擎(不使用 Docker Desktop)
curl -fsSL https://get.docker.com | sh
sudo service docker startdistribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker210.8 故障排除
docker context ls
docker context rm wsl附录:命令速查表
安装与更新
发行版管理
日常使用命令
本文链接:https://www.kinber.cn/post/6581.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
