ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 24.04双系统下Nvidia驱动与CUDA 12.4安装指南

Ubuntu 24.04双系统下Nvidia驱动与CUDA 12.4安装指南 简介这份PDF资料面向需要在Windows 11上搭建Ubuntu 24.04双系统的开发者与深度学习初学者重点解决从系统安装到GPU开发环境配置的完整流程问题。内容覆盖Ubuntu 24.04安装、Nvidia驱动、CUDA、cuDNN、Anaconda、Python虚拟环境以及VS Code与PyCharm专业版配置并附有新手参考链接与快速安装路径兼顾零基础与有一定经验的读者。资源包共1个PDF文件大小约1.74MB以图文步骤形式呈现便于按章节对照操作。目前已有17606人学习下载说明该流程经过较多读者验证。读者可据此完成双系统共存、显卡驱动与CUDA/cuDNN环境搭建、conda虚拟环境创建及常用开发工具配置减少在驱动版本匹配、环境变量设置等环节反复试错的时间适合作为深度学习环境部署的参考手册。1. 双系统不是终点而是把 Windows 11 和 Ubuntu 24.04 的算力打通很多人装 Ubuntu 24.04 是为了跑深度学习但机器上还留着 Windows 11 处理日常事务于是双系统成了最省钱的方案。真正麻烦的不是分区而是装完系统后那套 Nvidia 驱动、CUDA、cuDNN 的版本链条Ubuntu 24.04 默认带的是较新的内核和开源驱动装闭源驱动时容易黑屏CUDA 版本又和驱动、cuDNN 强绑定选错一个后面全崩。这篇内容面向需要在 Windows 11 主机上保留 Ubuntu 24.04 双系统、并且要在这套 Ubuntu 里把 Nvidia 显卡算力跑起来的开发者。我会按“系统安装 → 驱动 → CUDA → cuDNN → 验证与排错”的顺序把每一步的命令、参数和判断依据写清楚让新手能照着走熟手能直接跳到参数表核对版本边界。2. Ubuntu 24.04 安装与 Nvidia 驱动选型2.1 双系统分区与 U 盘启动的实操要点Windows 11 这边先做两件事关闭快速启动以及在磁盘管理里压缩出至少 80GB 未分配空间。Ubuntu 24.04 的 ISO 用 Rufus 或 balenaEtcher 写入 U 盘分区方案选 GPT、目标系统 UEFI。启动时按厂商快捷键进 Boot Menu选 U 盘条目注意要选带 UEFI 前缀的那个否则装完可能进不去 Windows。安装类型选“Something else”手动分区常见做法是分三个区EFI 分区 512MB如果 Windows 已有 EFI 分区直接复用不要新建、根分区/给 60GB 以上 ext4、交换分区按内存大小给 816GB。分区时务必确认没有动到 Windows 的 NTFS 分区。# 装完后确认引导和磁盘布局 lsblk -f efibootmgr -vlsblk -f看分区文件系统和挂载点efibootmgr -v看 UEFI 启动项里 Windows 和 Ubuntu 是否都在。如果 Ubuntu 启动项排在 Windows 后面用efibootmgr -o调整顺序或者进 BIOS 改 Boot Order。2.2 为什么 Ubuntu 24.04 装 Nvidia 驱动容易黑屏Ubuntu 24.04 默认启用nouveau开源驱动同时内核版本较新。用官方.run包安装闭源驱动时安装器会尝试卸载 nouveau 并重建 initramfs如果 Secure Boot 开着且没有签名重启后就会黑屏或卡在登录界面。另一个高频问题是驱动版本和内核不匹配尤其是 4060、4060 Ti 这类较新的笔记本/桌面卡需要 535 以上的驱动分支。我一般优先用 Ubuntu 仓库里的驱动而不是官网.run包原因是仓库版本会和当前内核做适配升级内核时不容易翻车。先查可用版本# 查看推荐驱动和可用版本 ubuntu-drivers devices输出里会标出recommended的那一行比如nvidia-driver-550。如果机器是 4060 笔记本推荐版本通常在 535 或 550 分支。确认后直接装sudo apt update sudo apt install -y nvidia-driver-550 sudo rebootnvidia-driver-550是驱动元包它会拉取对应的内核模块、用户态库和nvidia-smi。重启后执行nvidia-smi能打印出显卡型号、驱动版本、CUDA Version 那一行才算驱动层通了。如果nvidia-smi报 “couldnt communicate with the NVIDIA driver”先看dkms status里模块有没有编译成功再看 Secure Boot 是否拦截了模块加载。提示如果必须用官网.run包先在 BIOS 里关掉 Secure Boot或者用mokutil给模块签名否则重启后大概率黑屏。2.3 驱动版本、CUDA 版本、cuDNN 版本的对应关系这三者的关系是驱动决定能跑的最高 CUDA 运行时版本CUDA Toolkit 决定编译和运行环境cuDNN 必须匹配 CUDA 的主版本。nvidia-smi右上角显示的 “CUDA Version” 是驱动支持的上限不是你已安装的 CUDA 版本。组件查看命令关键判断Nvidia 驱动nvidia-smi右上角 CUDA Version 是上限CUDA Toolkitnvcc -V显示实际安装的编译器版本cuDNNcat /usr/local/cuda/include/cudnn_version.h看CUDNN_MAJOR和CUDNN_MINOR常见组合是驱动 550 配 CUDA 12.4cuDNN 选 9.x 对应 CUDA 12.x。如果后面要用 PyTorch还要看 PyTorch 官方 wheel 支持的 CUDA 版本不要只看驱动上限。3. CUDA Toolkit 在 Ubuntu 24.04 上的安装与验证3.1 用 apt 仓库装 CUDA 12.x 的完整命令Nvidia 官方给 Ubuntu 24.04 提供了 apt 仓库比.run包更好管理。先下载并安装仓库配置包注意 URL 里的ubuntu2404对应 24.04x86_64对应架构# 下载 CUDA 仓库配置包以 12.4 为例 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update # 安装 CUDA Toolkit 12.4 sudo apt install -y cuda-toolkit-12-4cuda-keyring包负责写入 GPG key 和 apt 源cuda-toolkit-12-4是元包会拉取nvcc、cuda-runtime、cuda-libraries等组件。装完后 CUDA 默认在/usr/local/cuda-12.4并且/usr/local/cuda是指向它的软链接。3.2 环境变量配置与 nvcc 验证只装完还不够nvcc不在默认 PATH 里。把下面几行加到~/.bashrc末尾export CUDA_HOME/usr/local/cuda export PATH$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATHCUDA_HOME给编译系统找头文件和库PATH让nvcc可直接调用LD_LIBRARY_PATH让运行时能找到libcudart.so。执行source ~/.bashrc后验证nvcc -V # 输出应包含 release 12.4 和 V12.4.xx如果nvcc -V报 command not found先确认/usr/local/cuda/bin/nvcc是否存在再检查 PATH 是否写对。如果nvcc版本和nvidia-smi的 CUDA Version 不一致属于正常现象前者是 Toolkit 版本后者是驱动上限。3.3 编译一个最小 CUDA 程序确认链路光看版本号不够编译一个最小程序才能确认驱动、Toolkit、编译器三者真的通了# device_query.cu cat device_query.cu EOF #include cstdio.h int main() { int dev 0; cudaDeviceProp prop; cudaGetDeviceProperties(prop, dev); printf(Device: %s\n, prop.name); printf(Compute Capability: %d.%d\n, prop.major, prop.minor); return 0; } EOF nvcc device_query.cu -o device_query ./device_querycudaGetDeviceProperties会返回显卡名称和计算能力4060 系列一般是 8.9。如果编译报找不到cuda_runtime.h说明CUDA_HOME没生效如果运行时报no CUDA-capable device回到驱动层查nvidia-smi。4. cuDNN 安装与深度学习框架对接4.1 cuDNN 9.x 的 tar 包安装与文件放置cuDNN 从 9.x 开始改成 tar 包分发不再提供 deb 的单独安装方式部分版本仍有 deb但 tar 更通用。下载时要选和 CUDA 主版本匹配的包比如 CUDA 12.x 就选cudnn-linux-x86_64-9.x.x.x_cuda12-archive.tar.xz。# 解压并复制到 CUDA 目录 tar -xvf cudnn-linux-x86_64-9.x.x.x_cuda12-archive.tar.xz cd cudnn-*-archive sudo cp include/cudnn*.h /usr/local/cuda/include/ sudo cp lib/libcudnn* /usr/local/cuda/lib64/ sudo chmod ar /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*include下的头文件给编译期用lib64下的.so给运行期用。chmod ar保证普通用户也能读否则非 root 跑框架时会报权限错误。复制完验证版本cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2输出里CUDNN_MAJOR 9、CUDNN_MINOR x就是实际生效的 cuDNN 版本。4.2 用 conda 隔离 CUDA 与 cuDNN 的取舍很多教程推荐用 conda 装cudatoolkit和cudnn好处是环境隔离坏处是 conda 渠道的 CUDA 版本往往滞后而且和系统驱动之间多了一层。我的做法是系统层装好驱动和 CUDA Toolkitconda 环境里只装框架让框架去链接系统 CUDA。conda create -n dl python3.11 -y conda activate dl pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124--index-url指向 PyTorch 官方 CUDA 12.4 的 wheel 源这样装出来的 torch 会自带对应的 CUDA 运行时但底层仍然调用系统驱动。装完验证import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.backends.cudnn.version())torch.cuda.is_available()返回 True 说明驱动和运行时链路通了cudnn.version()返回的数字应该和系统 cuDNN 主版本一致。如果返回 False先看nvidia-smi是否正常再看 torch 版本是否和 CUDA 版本匹配。4.3 4060 笔记本与桌面卡的驱动差异4060 笔记本和 4060 Ti 桌面卡在驱动层面用的是同一分支但笔记本有 Optimus 混合显卡默认可能走核显输出。装完驱动后如果nvidia-smi正常但程序跑在核显上需要在 BIOS 里切换独显直连或者在 Ubuntu 的“关于”里确认图形设备。另一个差异是笔记本驱动对电源管理更敏感nvidia-smi -q -d POWER可以看当前功耗状态跑训练前建议用nvidia-smi -pm 1开持久模式避免频繁掉卡。5. 版本冲突与黑屏的排查路径5.1 驱动装完重启黑屏的三类原因第一类是 Secure Boot 拦截未签名模块表现是启动时卡在厂商 logo 或黑屏进 recovery 模式执行dmesg | grep -i nvidia能看到 “module verification failed”。第二类是 nouveau 没被完全禁用lsmod | grep nouveau还有输出。第三类是驱动版本和内核不匹配dkms status显示模块 build 失败。# 进 recovery 或 tty 后依次排查 lsmod | grep nouveau dkms status dmesg | grep -i nvidia | tail -30如果确认是 Secure Boot进 BIOS 关掉或者用mokutil --import导入签名。如果是 nouveau创建/etc/modprobe.d/blacklist-nouveau.conf写入blacklist nouveau和options nouveau modeset0然后sudo update-initramfs -u。5.2 CUDA 安装报 gzip invalid compressed data 的处理这个报错通常出现在下载.run包或 tar 包时网络中断文件不完整。先校验文件大小和哈希再重新下载。如果是 apt 安装过程中报类似错误清掉 apt 缓存重来sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update sudo apt install -y cuda-toolkit-12-4apt clean清掉下载的 deb 缓存删掉 lists 后重新拉索引能解决大部分因为索引损坏导致的解压错误。如果仍然失败检查/etc/apt/sources.list.d/cuda-ubuntu2404-x86_64.list里的 URL 是否可访问。5.3 用 nvidia-smi 和 PyTorch 交叉验证最终状态最终验证分三层驱动层nvidia-smi能出表运行时层nvcc -V版本正确框架层torch.cuda.is_available()为 True。三层都过才算这套 Ubuntu 24.04 Nvidia 驱动 CUDA cuDNN 的链路完整。检查项命令期望结果驱动nvidia-smi显示显卡型号和驱动版本CUDA 编译器nvcc -Vrelease 12.4cuDNNgrep CUDNN_MAJOR /usr/local/cuda/include/cudnn_version.h9框架python -c import torch; print(torch.cuda.is_available())True任何一层失败就停在那层排查不要跳步。驱动没通就装 CUDA后面全是无效功。6. 双系统下保持 CUDA 环境可复现的两个技巧第一个技巧是把驱动和 CUDA 的版本组合写进一个setup.sh每次重装或换机器直接跑。脚本里固定nvidia-driver-550、cuda-toolkit-12-4、cuDNN 9.x 的下载链接和校验步骤避免凭记忆装错版本。第二个技巧是用update-alternatives管理多 CUDA 版本当项目需要 CUDA 11.8 时不用卸载 12.4sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.4 100 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 50 sudo update-alternatives --config cuda--install的最后一个数字是优先级数字大的默认选中--config手动切换。切换后重新source ~/.bashrcnvcc -V会跟着变。这样在 Windows 11 和 Ubuntu 24.04 双系统之间来回切换时Ubuntu 这边的 CUDA 环境不会因为一次误操作就推倒重来。本文还有配套的精品资源点击获取
返回列表