在 Fedora 上设置 CUDA
在本指南中,我们将在工具箱容器中设置 Nvidia CUDA。本指南适用于:
- Fedora Workstation
- Fedora 原子桌面
- Fedora Spins
- 其他发行版,包括
Red Hat Enterprise Linux >= 8.5、Arch Linux和Ubuntu
目录
- 先决条件
- 使用 Fedora 41 CUDA 仓库
- 创建 Fedora 工具箱环境
- 安装基本开发工具
- 添加 CUDA 仓库
- 安装 Nvidia 驱动程序库
- 安装 CUDA 元包
- 配置环境
- 验证安装
- 结论
- 故障排除
- 补充说明
- 参考资料
先决条件
- 主机系统已安装工具箱
Fedora Silverblue和Fedora Workstation默认都有工具箱,其他发行版可能需要安装 工具箱软件包。 - 主机系统已安装 NVIDIA 驱动程序和显卡(推荐) 要运行 CUDA 程序,如
llama.cpp,主机应该设置为可以访问您的 NVIDIA 硬件。Fedora 主机可以使用 RPM Fusion 仓库。 - 互联网连接 用于下载软件包。
使用 Fedora 41 CUDA 仓库
最新版本是 41。
注意: 我们建议使用工具箱环境来防止系统冲突。
创建 Fedora 工具箱环境
本指南主要针对 Fedora 主机,但稍作调整也可以在其他主机上使用。使用 Fedora 工具箱允许我们安装必要的软件包而不影响主机系统。
注意: 工具箱可用于其他系统,即使没有工具箱,也可以使用 Podman 或 Docker。
-
创建 Fedora 41 工具箱:
toolbox create --image registry.fedoraproject.org/fedora-toolbox:41 --container fedora-toolbox-41-cuda -
进入工具箱:
toolbox enter --container fedora-toolbox-41-cuda在工具箱内,您拥有 root 权限,可以安装软件包而不影响主机系统。
安装基本开发工具
-
同步 DNF 包管理器:
sudo dnf distro-sync -
安装 Vim 默认文本编辑器(可选):
sudo dnf install vim-default-editor --allowerasing--allowerasing标志将允许删除冲突的nano-default-editor软件包。 -
安装开发工具和库:
sudo dnf install @c-development @development-tools cmake这将安装编译软件的必要软件包,包括
gcc、make和其他开发头文件。
添加 CUDA 仓库
将 NVIDIA CUDA 仓库添加到您的 DNF 配置中:
sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora41/x86_64/cuda-fedora41.repo
添加仓库后,再次同步包管理器:
```bash
sudo dnf distro-sync
安装 Nvidia 驱动程序库
首先,我们需要检测主机是否向工具箱提供了 NVIDIA 驱动程序库:
ls -la /usr/lib64/libcuda.so.1
如果 libcuda.so.1 缺失:
ls: cannot access '/usr/lib64/libcuda.so.1': No such file or directory 说明: 主机未提供 CUDA 驱动程序,现在安装它们:
在客户端安装 Nvidia 驱动程序库:
sudo dnf install nvidia-driver-cuda nvidia-driver-libs nvidia-driver-cuda-libs nvidia-persistenced
如果 libcuda.so.1 存在:
lrwxrwxrwx. 1 root root 21 Mar 24 11:26 /usr/lib64/libcuda.so.1 -> libcuda.so.570.133.07 说明: 主机正在提供 CUDA 驱动程序,我们需要相应地更新客户端 RPM 数据库:
更新工具箱 RPM 数据库以包含主机提供的库:
注意:我们实际上不安装库,只是更新数据库,以便客户端系统知道它们由主机提供。
1. 下载由主机 RPM 提供的 nvidia- 部分(包含依赖项)
sudo dnf download --destdir=/tmp/nvidia-driver-libs --resolve --arch x86_64 nvidia-driver-cuda nvidia-driver-libs nvidia-driver-cuda-libs nvidia-persistenced
2. 更新 RPM 数据库以假定安装了这些软件包。
sudo rpm --install --verbose --hash --justdb /tmp/nvidia-driver-libs/*
注意:
--justdb选项仅更新 RPM 数据库,而不触及文件系统的其他部分。
检查 RPM 数据库是否已正确更新:
注意: 这与
libcuda.so.1缺失时的 "在客户端安装 Nvidia 驱动程序库" 命令相同。
sudo dnf install nvidia-driver-cuda nvidia-driver-libs nvidia-driver-cuda-libs nvidia-persistenced
(这次不会安装任何东西,因为数据库认为这些软件包已经安装)
Updating and loading repositories: Repositories loaded. Package "nvidia-driver-cuda-3:570.124.06-1.fc41.x86_64" is already installed. Package "nvidia-driver-libs-3:570.124.06-1.fc41.x86_64" is already installed. Package "nvidia-driver-cuda-libs-3:570.124.06-1.fc41.x86_64" is already installed. Package "nvidia-persistenced-3:570.124.06-1.fc41.x86_64" is already installed.
Nothing to do.
安装 CUDA 元包
现在驱动程序库已安装,继续安装 CUDA:
sudo dnf install cuda
这将安装 CUDA 工具包和相关软件包。
配置环境
要使用 CUDA,需要将其二进制目录添加到系统的 PATH 中。
-
创建配置文件脚本:
sudo sh -c 'echo "export PATH=\$PATH:/usr/local/cuda/bin" >> /etc/profile.d/cuda.sh'说明:
- 我们添加到
/etc/profile.d/因为/etc/文件夹对这个特定容器是唯一的,不与其他容器或主机系统共享。 $PATH前的反斜杠\确保变量正确写入脚本。
- 我们添加到
-
使脚本可执行:
sudo chmod +x /etc/profile.d/cuda.sh -
加载脚本以更新您的环境:
source /etc/profile.d/cuda.sh注意: 此命令使用新的
PATH更新您当前的 shell 会话。/etc/profile.d/cuda.sh脚本确保 CUDA 二进制文件在所有未来会话的PATH中可用。
验证安装
要确认 CUDA 已正确安装和配置,请检查 NVIDIA CUDA 编译器(nvcc)的版本:
nvcc --version
您应该看到类似的输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
此输出确认 CUDA 编译器可访问并指示已安装的版本。
## 结论
您已成功在 Fedora 工具箱环境中使用 Fedora 41 CUDA 仓库设置了 CUDA。通过手动更新 RPM 数据库和配置环境,您可以开发 CUDA 应用程序而不影响主机系统。
## 故障排除
- **安装失败:**
- 如果在安装过程中遇到错误,请仔细阅读错误消息。它们通常指示文件冲突或缺少依赖项。
- 您可以在手动 RPM 安装期间使用 `--excludepath` 选项与 `rpm` 来排除冲突文件。
- **重启容器:**
- 有时 NVIDIA 驱动程序主机透传可能有错误(如缺少共享库)。重启容器可能解决此问题:
```bash
# 在主机系统上
podman container restart --all
- 环境变量未设置:
- 如果安装后找不到
nvcc,请确保/usr/local/cuda/bin在您的PATH中。 - 运行
echo $PATH检查路径是否包含在内。 - 重新加载配置文件脚本或打开新的终端会话。
- 如果安装后找不到
补充说明
-
将来更新 CUDA:
- 关注官方 NVIDIA 仓库以获取您的 Fedora 版本的更新。
- 当有更新的仓库可用时,相应调整您的
dnf配置。
-
构建
llama.cpp:- 安装 CUDA 后,您可以按照这些
llama.cpp构建说明 使用 CUDA 支持编译它。 - 确保在构建配置中正确设置任何 CUDA 特定的构建标志或路径。
- 安装 CUDA 后,您可以按照这些
-
使用工具箱环境:
- 工具箱环境与主机系统隔离,这有助于防止冲突。
- 请记住,工具箱内的系统文件和配置与主机是分离的。默认情况下,用户的主目录在主机和工具箱之间共享。
免责声明: 手动安装和修改系统软件包可能导致容器不稳定。上述步骤仅作为指导提供,可能需要根据您的特定系统配置进行调整。在进行重大系统更改之前,请始终备份重要数据,特别是因为您的主文件夹是可写的并与工具箱共享。
致谢: 特别感谢 Fedora 社区和 NVIDIA 文档提供的资源,这些资源协助创建了本指南。