Win10+Ubuntu双系统深度学习环境配置:miniconda、CUDA与cuDNN完整指南

发布时间:2026/10/16 21:34:01

Win10+Ubuntu双系统深度学习环境配置:miniconda、CUDA与cuDNN完整指南 1. 为什么这套组合至今仍是深度学习开发的主流选择搞深度学习开发的人绕不开一个现实问题Windows的图形界面用着舒服但很多训练框架、编译工具链在Linux下才跑得顺畅。于是“Win10Ubuntu双系统”这个方案从几年前一直流行到现在不是没有道理的。它让你在一台机器上同时拥有两个世界——白天用Windows写文档、开会、摸鱼晚上重启进Ubuntu跑训练、调环境、压榨显卡。但真正让新手头疼的往往不是装系统本身而是装完之后那一堆环境配置miniconda怎么装、CUDA怎么选版本、cuDNN怎么对应、环境变量怎么配、为什么nvidia-smi能跑但torch.cuda.is_available()返回False。这些问题每一个都能卡住人半天甚至几天。这篇文章面向的是刚拿到带NVIDIA显卡的机器、准备搭建深度学习开发环境的人。不管你之前有没有Linux基础只要跟着走能把这套环境从零配到可用。我会把每个步骤背后的“为什么”讲清楚把踩过的坑提前标出来让你少走弯路。核心关键词就这几个Win10Ubuntu双系统、miniconda、CUDA、环境配置全文围绕它们展开。2. 装系统前的整体规划与关键决策2.1 双系统的分区方案怎么定装双系统第一步不是做启动盘而是想清楚磁盘怎么分。很多人一上来就动手结果要么Ubuntu空间不够用要么把Windows的数据盘误删了。我的建议是先搞清楚你机器上有几块硬盘。如果是单硬盘比如一块512G或1T的NVMe你需要从Windows的磁盘管理里压缩出一块未分配空间给Ubuntu。具体操作右键“此电脑”→“管理”→“磁盘管理”→选中C盘或其他有富余空间的分区→“压缩卷”。压缩出来的空间不要格式化保持“未分配”状态Ubuntu安装程序会自动识别。空间分配上我一般这样建议用途建议大小说明EFI引导分区512MB如果Windows已有EFI分区Ubuntu会复用不用新建交换空间swap16-32GB内存32G以上可以少给甚至不给但保险起见给16G根分区 /100-150GB系统和软件都装这里conda环境也默认在这家目录 /home剩余全部数据集、代码、模型权重都放这重装系统不丢如果是双硬盘比如一块SSD装Windows一块SSD或HDD装Ubuntu那就更简单了——直接把第二块盘整个给Ubuntu分区方案同上但不用动Windows的盘。注意压缩卷之前一定要备份重要数据。虽然正常操作不会丢数据但磁盘操作有风险养成备份习惯。2.2 启动盘制作与BIOS设置要点启动盘制作工具用Rufus或者balenaEtcher都行Ubuntu镜像去官网下LTS版本比如22.04或24.04。这里有个细节Rufus写入时选择GPT分区方案UEFI目标系统因为现在的机器基本都是UEFI启动选MBRBIOS会出问题。BIOS设置里需要关注几个选项Secure Boot建议先关闭。虽然Ubuntu支持Secure Boot但后续装NVIDIA驱动时可能因为签名问题导致驱动加载失败关掉省事。SATA模式确认是AHCI而不是RAID。有些品牌机默认RAIDUbuntu安装程序认不到硬盘。启动顺序把U盘调到第一位装完系统后改回硬盘优先。这些设置因主板品牌而异但关键词就这几个进BIOS后找对应的菜单即可。2.3 为什么选miniconda而不是anacondaAnaconda自带几百个包装完几个G很多你根本用不到。Miniconda只包含conda和Python干净轻量需要什么自己装。对于深度学习环境来说我们本来就要手动装PyTorch或TensorFlowanaconda预装的那些科学计算包反而可能造成版本冲突。另一个原因是conda环境隔离做得比pipvenv更彻底。CUDA toolkit、cuDNN这些非Python的二进制依赖conda也能管理而venv只管Python包。这意味着你可以在不同conda环境里用不同版本的CUDA互不干扰——这对需要复现不同论文代码的人来说太重要了。3. Ubuntu系统安装与基础配置实操3.1 安装过程的关键选择从U盘启动后选择“Install Ubuntu”。语言选英语就行中文路径后续可能带来编码问题。键盘布局默认English (US)。到了“Installation type”这一步选“Something else”手动分区。这就是前面规划好的分区方案落地的时候找到你压缩出来的“free space”点“”新建分区EFI分区如果已有Windows的EFI分区通常几百MB类型是efi不用动它Ubuntu会自动把引导写进去。如果没有新建一个512MB的EFI分区swap分区大小填1638416G类型选“swap area”根分区挂载点选“/”大小填100000约100G类型ext4home分区挂载点选“/home”剩余全部空间类型ext4“Device for boot loader installation”选Windows EFI分区所在的那块硬盘通常是/dev/nvme0n1或/dev/sda不要选具体分区。安装完成后重启应该能看到GRUB菜单让你选进Ubuntu还是Windows。如果直接进了Windows没看到GRUB说明引导没写对需要进BIOS调整启动顺序把“ubuntu”调到Windows Boot Manager前面。3.2 换国内源与基础工具安装装完系统第一件事是换源不然apt安装慢得让人崩溃。打开“Software Updates”在“Ubuntu Software”标签页的“Download from”里选“Other”然后选一个国内的镜像站。或者直接编辑/etc/apt/sources.list把里面的archive.ubuntu.com和security.ubuntu.com替换成国内镜像地址。换完源执行sudo apt update sudo apt upgrade -y然后装一些基础工具sudo apt install -y build-essential git wget curl vim htop net-toolsbuild-essential包含gcc、g、make后面装NVIDIA驱动和编译某些Python包时需要。git和wget不用多说htop看系统资源net-tools提供ifconfig等命令。3.3 禁用nouveau驱动Nouveau是Ubuntu自带的NVIDIA开源驱动它和官方驱动冲突装CUDA之前必须禁用。操作如下sudo vim /etc/modprobe.d/blacklist-nouveau.conf写入blacklist nouveau options nouveau modeset0然后执行sudo update-initramfs -u sudo reboot重启后验证是否禁用成功lsmod | grep nouveau如果没有任何输出说明禁用成功。这一步不做的话后面装NVIDIA驱动会报“nouveau正在使用”的错误。4. NVIDIA驱动与CUDA工具链配置4.1 驱动版本与CUDA版本的对应关系这是最容易出错的地方。很多人以为装最新驱动就万事大吉结果发现PyTorch要求的CUDA版本和驱动不匹配。核心规则是驱动版本决定了你最高能跑哪个CUDA版本但CUDA版本可以向下兼容。举个例子驱动版本535支持CUDA 12.2那么你可以跑CUDA 12.2、12.1、12.0、11.8等但不能跑CUDA 12.3。所以策略是先确定你要用的深度学习框架需要哪个CUDA版本然后反推需要的驱动版本。截至我写这篇文章时PyTorch 2.x稳定支持CUDA 11.8和12.1TensorFlow 2.15支持CUDA 12.2。如果你没有特殊需求CUDA 11.8是兼容性最好的选择因为很多老代码和老版本框架都基于它。查看驱动支持的最高CUDA版本nvidia-smi右上角会显示“CUDA Version: 12.2”之类的信息这就是当前驱动支持的最高版本。4.2 驱动安装的两种方式及选择方式一apt安装sudo apt install nvidia-driver-535简单但版本可能不是最新的而且有时候会连带装一堆依赖。方式二官方runfile安装去NVIDIA官网下载对应显卡的驱动runfile然后sudo sh NVIDIA-Linux-x86_64-535.xx.xx.run这种方式可控性强但需要手动处理一些依赖和签名问题。我一般推荐apt方式省事。装完重启执行nvidia-smi如果能看到显卡信息表格说明驱动装好了。注意如果nvidia-smi报“Failed to initialize NVML: Driver/library version mismatch”说明驱动版本和内核模块不匹配重启一般能解决。如果重启还不行可能需要重新安装驱动。4.3 CUDA Toolkit安装与环境变量配置去NVIDIA官网下载CUDA Toolkit。选择runfile(local)方式因为可以自定义安装路径不污染系统目录。下载后执行sudo sh cuda_11.8.0_520.61.05_linux.run安装过程中取消勾选Driver因为已经装过了保留CUDA Toolkit安装路径默认/usr/local/cuda-11.8装完后配置环境变量编辑~/.bashrcexport PATH/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH然后source ~/.bashrc nvcc -V如果显示CUDA版本信息说明配置成功。4.4 cuDNN的安装细节cuDNN是NVIDIA的深度神经网络加速库PyTorch和TensorFlow都依赖它。下载需要注册NVIDIA开发者账号选对应CUDA版本的cuDNN。下载下来是个tar包解压后把文件复制到CUDA目录tar -xzvf cudnn-linux-x86_64-8.9.x.x_cuda11-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.8/include sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64 sudo chmod ar /usr/local/cuda-11.8/include/cudnn*.h /usr/local/cuda-11.8/lib64/libcudnn*验证cuDNN版本cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2提示cuDNN版本必须和CUDA版本严格对应。CUDA 11.8要用cuDNN 8.9.x for CUDA 11.x下错了会导致框架加载失败。5. Miniconda环境搭建与深度学习框架安装5.1 Miniconda安装与初始化去清华镜像站下载Miniconda安装脚本比官网快得多。下载后bash Miniconda3-latest-Linux-x86_64.sh一路回车最后问是否初始化conda时选yes。然后source ~/.bashrc conda --version配置conda国内源编辑~/.condarcchannels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud这样conda安装包也会走国内源。5.2 创建独立的深度学习环境不要用base环境跑代码养成好习惯conda create -n dl python3.10 conda activate dlPython版本选3.10兼容性最好。3.11和3.12有些包还没适配。然后装PyTorch。去PyTorch官网找到对应CUDA 11.8的命令pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118注意这里用pip而不是conda因为pip的PyTorch包自带CUDA运行时不需要系统CUDA也能跑。但系统CUDA仍然需要因为某些自定义算子编译时会用到。5.3 验证环境是否配置成功这是最关键的一步。进入Pythonimport torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))如果torch.cuda.is_available()返回True恭喜你环境配好了。如果返回False按下面的排查表逐项检查。现象可能原因解决方法nvidia-smi正常但torch.cuda.is_available()为FalsePyTorch装的是CPU版本重新用cu118的index-url安装nvidia-smi报错驱动没装好或nouveau没禁用检查驱动安装和nouveau状态torch.cuda.is_available()为False且无报错CUDA版本和PyTorch不匹配确认PyTorch版本对应的CUDA版本报libcudart.so找不到环境变量没配好检查LD_LIBRARY_PATH6. 常见问题排查与避坑经验6.1 双系统引导丢失的修复Windows更新有时会覆盖GRUB引导导致开机直接进Windows。修复方法用Ubuntu启动盘进入Live模式然后sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repair选“Recommended repair”它会自动重建GRUB。或者手动sudo mount /dev/nvme0n1p2 /mnt # 根分区 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # EFI分区 sudo grub-install --root-directory/mnt /dev/nvme0n1 sudo update-grub6.2 显卡驱动冲突导致的黑屏装完NVIDIA驱动重启后黑屏通常是因为驱动和内核不兼容或者nouveau没禁干净。解决方法开机时在GRUB菜单选“Advanced options”进恢复模式然后卸载驱动sudo apt purge nvidia-* sudo apt autoremove重启后重新按正确步骤安装。6.3 conda环境与系统CUDA的版本冲突有时候系统CUDA是11.8但conda环境里装了个cudatoolkit 12.1导致编译时报错。这是因为conda的cudatoolkit会覆盖系统CUDA的库路径。解决办法要么统一版本要么在conda环境里也装对应版本的cudatoolkitconda install cudatoolkit11.8这样conda环境内的CUDA版本和系统一致不会冲突。6.4 磁盘空间不足的清理策略深度学习开发很容易把磁盘塞满——conda环境、pip缓存、数据集、模型权重。定期清理conda clean --all # 清理conda缓存 pip cache purge # 清理pip缓存数据集和模型权重放/home分区不要放根分区。如果根分区满了可以用du -sh /*逐层排查大文件。7. 日常使用中的效率技巧7.1 用alias简化常用命令在~/.bashrc里加几个aliasalias actconda activate alias deactconda deactivate alias nvnvidia-smi alias clsclear这样每次激活环境不用打全称看显卡状态就敲nv。7.2 环境导出与迁移配好的环境要导出成yml文件方便在其他机器复现conda env export environment.yml在新机器上conda env create -f environment.yml但注意yml里会包含本地路径和pip安装的包跨平台时可能需要手动调整。7.3 多版本CUDA共存的管理如果你需要同时用CUDA 11.8和12.1可以都装在/usr/local/下然后用软链接切换sudo rm -rf /usr/local/cuda sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda环境变量里用/usr/local/cuda切换时只改软链接不用改环境变量。7.4 监控GPU使用情况训练时用watch -n 1 nvidia-smi实时看显卡利用率、显存占用、温度。如果显存快满了减小batch size如果GPU利用率低可能是数据加载成了瓶颈增加num_workers。我在实际使用中发现这套环境配好之后最容易被忽略的是磁盘I/O。数据集放在机械硬盘上GPU利用率可能只有30%不到换成SSD后直接拉满。所以如果条件允许数据集和代码都放SSD模型checkpoint可以放机械盘。最后再分享一个小技巧装完系统后做一个完整的系统备份用Timeshift或者dd以后环境搞崩了直接恢复比重新配一遍省几个小时。这个习惯我坚持了好几年救了我无数次。
延伸阅读

更多相关文章

2026/10/16 21:34:01

IEEE 802.3以太网标准详解:从MAC层到PHY层的技术原理与工程实践

简介:IEEE 802.3-2022 以太网标准官方文档,面向网络工程师、协议研发人员及高校通信专业师生,用于查阅以太网从 1 Mb/s 至 400 Gb/s 的 MAC 规范、物理层接口与管理信息库定义。资源包内含 1 个 PDF 文件,压缩包约 93.77MB&#x…

2026/10/16 21:29:00

降本增效新引擎:制造企业如何应用数据中台优化供应链

引言:供应链不缺系统,缺的是“一条链路”制造企业在供应链数字化上的投入并不少。ERP管订单、SRM管供应商、MES管生产、WMS管仓储、TMS管运输——每一环都有自己的系统。但一个普遍困境随之浮现:系统建了不少,数据接进来了&#x…

2026/10/16 21:29:00

Python PIL实现图像素描转换:从梯度计算到边缘增强

1. 项目概述:为什么一张普通照片能变成素描?这背后不是滤镜,而是图像梯度的数学表达你有没有试过把手机里刚拍的风景照,几秒钟内变成铅笔手绘风格的素描?不是靠美图秀秀一键套用,也不是打开Photoshop调十几…

2026/10/17 0:34:38

降维实战:从PCA到SVD与LDA的完整推导与工程陷阱

降维这个主题,我在学的时候绕了不少弯路。课本上堆了一堆公式,但没人告诉我这些公式到底在干什么。后来自己动手推了一遍,又把主成分分析(PCA)、奇异值分解(SVD)和线性判别分析(LDA&…

2026/10/17 0:34:38

MATLAB GUI机制解析:gui_mainfcn与handles/guidata数据管理

说实话,用 MATLAB 写 GUI 的人不少,但很多人的认知边界就停在“双击 .fig 进 GUIDE、拖几个控件、双击控件写回调”这一层。等哪天点开自动生成的 .m 文件,看到最上面那段调 gui_mainfcn 的骨架代码,第一反应基本都是“这是系统代…

2026/10/17 0:34:38

云平台选型对比指南:从部署形态到避坑实践

简介:《各大云平台对比》文档系统梳理云计算平台的定义、分类与核心价值,并对比阿里云、百度BAE、腾讯云、华为云等国内主流云平台。内容涵盖存储型、计算型及综合型云平台的区别,企业采用云平台在成本、灵活性、安全性上的收益,以…

2026/10/17 0:34:38

Spring Boot整合Shiro权限框架实战:从认证到动态权限配置

1. 为什么在Spring Boot项目里选Shiro而不是别的权限框架先说个现实问题。做Java后端的人一旦涉及登录、权限控制,十有八九会在Shiro和Spring Security之间纠结。Spring Security背靠Spring官方生态,功能全但学习曲线陡峭;Shiro则轻巧、直观&…

2026/10/17 0:34:38

64位OpenGL开发必学:用GLAD加载器解决函数指针链接错误

简介:面向激光与物理光学设计领域的 Glad 5.8(64位)演示资源包,适配需要开展激光器建模、光束传播仿真与谐振腔优化的工程师、科研人员及高校相关专业学生。资源内含完整示例与说明文档,可帮助用户熟悉几何光学追迹、菲…

2026/10/17 0:29:37

用webpack-serve一份配置同时搞定SPA路由回退与API代理

【免费下载链接】webpack-serve Repository has moved: 项目地址: https://gitcode.com/gh_mirrors/we/webpack-serve 点击查看 免费下载 webpack-serve 是一个轻量、现代的 webpack 开发服务器。对于单页应用(SPA)来说,开发时最…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑