当前位置: 首页 > 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.jsqmd.com/news/917905/

相关文章:

  • 《Turing Complete》通关笔记:我是如何通过游戏理解‘图灵完备’与处理器架构核心的
  • 从脚本到自动化:用Python和Shell封装YARN应用管理,实现一键终止与巡检
  • 2026年旧房翻新大揭秘!靠谱机构究竟该怎么选?
  • GPU资源利用率暴跌63%?揭秘Gemini v1.5部署后必踩的3类资源配置陷阱,今天不改明天告警爆炸
  • RoadRunner场景导入Carla
  • 树莓派超声波雷达系统:从硬件连接到Python实时扫描界面
  • 技术方案:Figma-to-JSON实现设计文件与结构化数据的双向转换
  • IDEA表数据复制到excle
  • 2026成都花园户型装修设计榜单|一楼庭院+顶楼露台花园专属装企推荐,避坑首选 - 资讯纵览
  • 基于Arduino的防酒驾系统:从传感器到物联网的嵌入式实战
  • 使用图像识别点击评论按钮
  • 2026哈尔滨防水补漏公司排名TOP5|本地专业防水补漏公司推荐 (全域极速上门) - 防水空鼓维修家
  • 物联网卡、流量卡、SIM 卡到底有什么区别?
  • SRC挖洞必备:用Eeyes棱眼快速整理目标C段资产(附实战避坑指南)
  • 2026年企业如何鉴别一家靠谱的AI搜索GEO服务商 - 品牌报告
  • 2026年新闻稿发布平台TOP10权威测评报告 - 资讯纵览
  • AI Agent Harness Engineering 与具身智能:当大脑拥有了身体
  • 2026 年宏碁入局智能眼镜市场,产品亮点不足,软件适配难题待解
  • Beyond Compare 5密钥生成器技术深度解析与实用指南
  • 工业应急指挥调度方案:实时态势感知,防控厂区安全隐患
  • 5.30 南京黄金回收,真实报价不玩虚的 - 资讯纵览
  • DS4Windows终极指南:让PS4/PS5手柄在Windows电脑上完美运行
  • 氙弧老化测试全参数解析:滤镜类型、辐照度与黑标温度设定
  • 步进梁加热炉炉温综合优化控制策略【附仿真】
  • 我让 3 个子 Agent 同时改同一个文件,没打架——因为偷了 Git 的一个冷门功能
  • 2026 常州geo优化公司推荐丨常州网络公司丨常州geo广告丨常州geo系统丨常州豆包优化公司推荐及电话联系 - 资讯纵览
  • 终极指南:如何快速解包Godot游戏资源文件
  • 微信机器人API接口:图片、文件、语音收发快速搞定
  • 5.30 天津黄金回收,今日大盘价无套路 - 资讯纵览
  • HotSpot VM源码剖析2026版开源!