当前位置: 首页 > news >正文

不得不用的WSL

1 一、注意事项

1.1 1.默认wsl --instal,会安装在C盘

1.2 2.注意wsl和window是有挂载关系的

2 二、先干净卸载安装在C盘上的wsl

[[wsl干净卸载wsl,从C盘]]

这个过程非常直接和推荐,因为你不需要先安装到 C 盘再迁移。

我将以 Ubuntu 22.04 LTS 为例进行说明,因为它是最常用且官方支持的发行版。如果你想安装其他发行版,只需替换下载链接和文件名即可。
太好了!很高兴这次的链接可以正常工作,并且你已经开始下载 ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz 文件。

现在,我将为你提供一个完整的教程,详细说明如何使用这个文件将 Ubuntu 22.04 LTS 安装到你的 D 盘,并为机器学习做好准备。这个教程假设你已经按照之前的指示,干净地卸载了你自己的 WSL 发行版,并保留了 Docker Desktop 所需的 WSL 组件。

2.1 步骤 1:下载 Ubuntu 22.04 LTS 根文件系统

  • 文件名称: ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz
  • 下载链接: https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz
  • 保存位置: 将此文件保存到 D:\temp\ 文件夹中。

2.2 步骤 2:在 D 盘上创建目标安装目录

这个目录将是你的 Ubuntu 22.04 LTS 发行版实际的虚拟硬盘文件(ext4.vhdx)存放的位置。

  1. 打开 PowerShell 或 CMD。
  2. 执行命令创建目录:
mkdir D:\WSL\Ubuntu_2204
  • 你可以根据自己的喜好命名 Ubuntu_2204 这个文件夹,例如 D:\WSL\MyUbuntuForML

2.3 步骤 3:使用 wsl --import 命令将发行版安装到 D 盘

现在,我们将使用下载的 .tar.gz 文件,将其解压并安装到你刚刚创建的 D 盘目录中。

  1. 打开 PowerShell 或 CMD。
  2. 执行导入命令:
wsl --import ubuntu2204 D:\WSL\Ubuntu_2204_ML D:\temp\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz --version 2
  • Ubuntu2204:这是你给这个新 WSL 发行版起的名称。当你运行 wsl -l -v 时,它将显示为这个名称。你也可以将其更改为其他名称,如 MyUbuntuML
  • D:\WSL\Ubuntu_2204_ML:这是你在步骤 2 中创建的,发行版将实际安装到的目录。
  • D:\temp\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz:这是你在步骤 1 中下载的 .tar.gz 文件的完整路径。
  • --version 2强烈建议使用 WSL 2,它提供了更好的性能和功能,对于机器学习任务至关重要。
  • 这个命令会开始解压文件并创建虚拟硬盘。这个过程可能需要几分钟,请耐心等待,直到命令行提示符再次出现。

2.4 步骤 4:创建用户、配置 systemd 和设置默认用户

导入后,新的 WSL 实例的默认登录用户将是 root。为了安全和方便,我们需要创建一个普通用户 (zhang),并配置 /etc/wsl.conf 文件来启用 systemd 并将 zhang 设置为默认登录用户。

  1. 彻底关闭所有 WSL 实例:
  • 在 PowerShell 或 CMD 中运行此命令,确保所有 WSL 实例都已停止。这是为了让后续对 /etc/wsl.conf 文件的更改能够正确生效。
wsl --shutdown
  1. root 身份启动你的 ubuntu2204 发行版:
  • 打开 PowerShell 或 CMD,运行:
wsl -d ubuntu2204
  • 你现在应该会以 root@Z-Y7000P:/mnt/c/Windows/System32# 这样的提示符登录到 Ubuntu 命令行。
  1. 在 Ubuntu 内部创建新用户 (zhang) 并设置密码:
adduser zhang
  • 系统会提示你输入密码,并确认密码。请务必记住这个密码。
  • 之后会要求你输入一些用户信息(如全名、房间号等),这些信息可以跳过,直接按回车键即可。
  1. 将新用户 (zhang) 添加到 sudo 组:
  • 为了让你的新用户能够执行管理员命令(例如安装软件),需要将其添加到 sudo 组。
usermod -aG sudo zhang
  1. 使用 nano 编辑器创建或编辑 /etc/wsl.conf 文件:
  • 这个文件是 WSL 的配置文件,我们将在这里启用 systemd 和设置默认用户。
sudo nano /etc/wsl.conf
  • 如果文件不存在,nano 会为你创建一个新文件。
  • 如果文件已存在,它会打开文件进行编辑。
  1. 添加或修改以下内容:
  • 在文件中添加以下内容。如果文件已存在,请确保这些行是正确的,并且没有冲突的设置。
[boot]
systemd=true[user]
default=zhang
  • [boot] 部分的 systemd=true 明确告诉 WSL 在启动时启用 systemd
  • [user] 部分的 default=zhangzhang 设置为默认登录用户。
  1. 保存并退出编辑器:
  • 如果你使用 nano:按 Ctrl + O (保存),然后按 Enter 确认文件名,最后按 Ctrl + X (退出)。
  1. 退出 WSL 实例:
    在 Ubuntu 命令行中输入 exit
exit
  • 你将返回到 Windows 的 PowerShell 或 CMD 命令行。

为了让 /etc/wsl.conf 的更改生效,你需要再次完全关闭所有 WSL 实例,然后重新启动你的发行版。

  1. 打开 PowerShell 或 CMD。
  2. 运行关闭命令:
wsl --shutdown
  • 这会关闭所有正在运行的 WSL 实例,包括 Docker Desktop 的。
  1. 重新启动你的 ubuntu2204 发行版:
  • 现在,当你再次启动 ubuntu2204 时,它应该会以 zhang 作为默认用户登录,并且 systemd 应该能正常启动。
wsl -d ubuntu2204

如果一切顺利,你现在应该会看到 zhang@Z-Y7000P:~$ 这样的提示符,并且不会再看到 systemd 的错误信息了。

2.5 步骤 5:清理临时文件

安装成功并确认一切正常后,你可以删除之前下载的 .tar.gz 文件,以释放临时空间。

  1. 在文件资源管理器中导航到 D:\temp\ 文件夹。
  2. 删除 ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz 文件。

2.6 步骤 6 :设置wsl为wsl -d ubuntu2204 直接默认用wsl就能启动自己装的2204

wsl --set-default ubuntu2204

2.7 步骤7:更改默认路径,从window路径改到linux自己的路径

我发现 进入后,默认路径其实是我window的路径 他能操作我window的文件

  • 代码和数据: 将你的机器学习代码、数据集、Python 环境等都放在 /home/zhang/ 或其他 Linux 原生文件系统路径下。
  • 访问 Windows 文件: 如果确实需要访问 Windows 文件,可以通过 /mnt/c/ 等路径进行,但尽量避免在这些路径下进行大量文件操作。
  • VS Code Remote - WSL: 如果你使用 VS Code 进行开发,它的 Remote - WSL 扩展会自动将你的工作区映射到 WSL 内部,并提供良好的性能。

2.7.1 解决方法——修改 ~/.bashrc 文件

  • 无法通过配置 Ubuntu 内部的 /etc/wsl.conf 文件来"直接"指定 WSL 启动时所在的初始目录。 /etc/wsl.conf 文件不支持 defaultCwd 这个键。
  • (进入wsl后,不是powershell里或者进入powershell之前)可以通过修改你 Ubuntu 用户(zhang)的 Shell 配置文件 (~/.bashrc~/.profile) 来实现这个效果。当你的 Shell 启动时,这些文件会被执行,你可以在其中加入 cd 命令。
  • 编辑~/.bashrc文件
nano ~/.bashrc
  • 滚动到最后一行,添加
cd ~
  • 然后exit退出,wsl --shutdown 重启

3 三、其他基于wsl特性的操作建议

3.1 意外删除/修改 Windows 文件 (最直接的风险)

  • 谨慎使用 sudo 和 rm 在 Linux 中,sudo 赋予你管理员权限,rm -rf 是一个非常危险的命令。在执行任何涉及 /mnt 路径的删除或修改操作时,务必再三确认当前目录和目标路径。
  • 将项目文件放在 WSL 原生文件系统: 强烈建议将你的所有开发项目、代码、数据集等都放在 WSL 的 Linux 原生文件系统内部(例如 /home/zhang/),而不是 /mnt/c 或 /mnt/d。这样可以避免在 Windows 文件系统上进行大量操作,从而降低误操作的风险,同时还能获得更好的性能。
  • 设置默认启动目录: 按照我们之前讨论的,通过 Windows 终端设置 startingDirectory 到 /home/zhang,可以减少你意外在 Windows 路径下开始操作的机会。
  • 备份: 定期备份你的重要数据,无论是 Windows 上的还是 WSL 内部的。

3.2 2.资源消耗过高 (性能风险)

WSL 2 在轻量级虚拟机中运行。如果 WSL 内部的 Linux 进程出现内存泄漏、CPU 占用过高或磁盘 I/O 密集型操作失控,可能会消耗大量的 Windows 系统资源,导致 Windows 运行缓慢甚至卡死。

  • 监控资源: 在 Windows 任务管理器中,你可以看到 WSL 相关的进程(例如 Vmmem 进程),监控它们的资源使用情况。
  • 限制 WSL 资源 (高级): 你可以通过创建 C:\Users\<你的Windows用户名>\.wslconfig 文件来限制 WSL 2 虚拟机的内存和 CPU 使用。例如:
[wsl2]
memory=4GB  # 限制内存为 4GB
processors=2 # 限制 CPU 核心数为 2
  • 修改后需要运行 wsl --shutdown 使其生效。
  • 及时关闭不用的 WSL 实例: 当你不再使用 WSL 时,运行 wsl --shutdown 可以释放所有资源。

3.3 内存限制:如果不限制,WSL 会使用多少内存?

  • 默认行为: 如果你不通过 .wslconfig 文件对 WSL 2 虚拟机进行内存限制,它会默认使用动态分配的内存。这意味着 WSL 2 虚拟机启动时只占用少量内存,然后会根据 Linux 内部运行的应用程序的需求,动态地增加其内存使用量,最高可达你 Windows 总内存的 80%
  • 示例: 如果你的 Windows 电脑有 16GB 内存,WSL 2 虚拟机理论上最高可以使用大约 12.8GB 内存。
  • 影响: 这种动态分配机制通常是高效的,但如果你的机器学习任务需要大量内存,并且你同时在 Windows 上运行其他内存密集型应用程序,可能会导致 Windows 和 WSL 之间争抢内存,最终导致整个系统变慢或卡顿。

3.4 4.怎么限制CPU内存?

3.4.1 (1)打开该路径

C:\Users\738354\

3.4.2 (2)在文件中输入以下格式的配置(以纯文本保存,无需扩展名)

文件命名为:.wslconfig

[wsl2]
memory=8GB
  • memory 参数指定最大内存分配,支持 GB 或 MB 单位(如 2GB 或 2048MB)。
  • 您还可以添加其他参数,例如 processors=2(限制 CPU 核心数)或 swap=0(禁用交换空间),以进一步优化资源。

3.4.3 (3)文件保存后重启wsl

wsl --shutdown

3.5 机器学习场景下,有必要限制内存和 GPU 吗?

  • 内存限制 (推荐考虑):
    • 有必要。 对于机器学习任务,尤其是训练大型模型时,内存消耗巨大。如果你的 Windows 内存是 16GB,而你同时在 Windows 上运行浏览器、IDE 等,WSL 占用 80% 内存可能导致 Windows 卡顿。
    • 建议: 如果你的 Windows 总内存是 16GB,可以考虑将 WSL 内存限制在 8GB 到 12GB 之间,具体取决于你 Windows 端需要保留多少内存。

两个系统都需要各自的组件,但它们协同工作。Windows 驱动提供底层支持,Linux CUDA Toolkit 提供开发和运行时环境。你不能直接在 WSL 中使用 Windows 安装的 CUDA Toolkit,反之亦然。

http://www.gsyq.cn/news/1429225.html

相关文章:

  • 杭州周边高空景区对比测评榜:马岭天观佛手桥 vs 其他网红玻璃桥,谁更出片? - 玖叁鹿geo
  • GPU资源利用率暴跌63%?揭秘Gemini v1.5部署后必踩的3类资源配置陷阱,今天不改明天告警爆炸
  • RoadRunner场景导入Carla
  • 树莓派超声波雷达系统:从硬件连接到Python实时扫描界面
  • IDEA表数据复制到excle
  • 2026哈尔滨防水补漏公司排名TOP5|本地专业防水补漏公司推荐 (全域极速上门) - 防水空鼓维修家
  • SRC挖洞必备:用Eeyes棱眼快速整理目标C段资产(附实战避坑指南)
  • 2026 年宏碁入局智能眼镜市场,产品亮点不足,软件适配难题待解
  • Beyond Compare 5密钥生成器技术深度解析与实用指南
  • 5.30 南京黄金回收,真实报价不玩虚的 - 资讯纵览
  • 微信机器人API接口:图片、文件、语音收发快速搞定
  • 我让 3 个子 Agent 同时改同一个文件,没打架——因为偷了 Git 的一个冷门功能
  • 法律AI工具选型终极决策矩阵(含22家供应商穿透式测评+17项等保2.0/《人工智能法(草案)》适配度评分)
  • Arduino自制反应计时器:从硬件搭建到数据分析全流程
  • 【系统学AI】14 RAG工程实践(2026版):从0到生产的全栈技术选型
  • 2026 苏州黄金回收避坑指南!4 家通过 10 项核查店铺推荐+口碑实测汇总 - 资讯纵览
  • AI技术热点简报 | 2026.05.29
  • 终极指南:3分钟快速激活Windows和Office的完整解决方案
  • Kazumi WebDAV同步功能终极指南:3步实现跨设备番剧数据互通
  • 您的岗位情报官上线,ArkClaw「每日情报助手」带您吃透全行业
  • 项目实战:中风数据分析
  • 洛阳市中央空调维修师傅推荐|全城各区金牌师傅,靠谱选欧米到家 - 欧米到家
  • 【紧急更新】2024春招已启用新一代AI简历筛查引擎:你的ChatGPT求职信正在被自动降权(附3分钟急救校验清单)
  • 如何用Scarab为《空洞骑士》打造智能模组管理生态:3大核心机制深度解析
  • 基于ESP32与Firebase的智能安防系统:从硬件到云端的物联网实战
  • 5.30 合肥黄金回收,今日大盘附近正常报价 - 资讯纵览
  • 2026年C++最热实测(二)——C++26那些“不起眼”却救命的新特性
  • 【紧急预警】传统知识库系统将在18个月内集体失效:AI原生知识管理迁移倒计时启动(含兼容性评估工具包)
  • 基于ESP32与LVGL的嵌入式GUI开发:圣诞雪花球交互项目全解析
  • TypeScript高级特性:提升代码质量