在无网络连接的生产环境或隔离服务器中,为CentOS系统安装NVIDIA驱动是一项常见但具有挑战性的任务,整个过程的核心在于“先在线准备好,后离线来安装”,本文将详细阐述这一流程,确保您能够顺利完成离线安装,并解决可能遇到的常见问题。
第一步:在线环境下的准备工作
在拥有互联网访问权限的、与目标离线机系统环境(CentOS版本、内核版本)尽可能一致的“准备机”上,我们需要下载所有必需的文件。
确认目标离线机的系统信息
在离线机上执行以下命令,获取关键信息,并记录下来,这些信息将指导我们在准备机上下载正确的驱动和依赖包。
# 查看CentOS版本 cat /etc/centos-release # 查看当前内核版本,此版本号至关重要 uname -r # 示例输出:3.10.0-1160.83.1.el7.x86_64 # 查看GPU型号 lspci | grep -i nvidia # 示例输出:01:00.0 VGA compatible controller: NVIDIA Corporation ...
要点: uname -r
的输出必须与即将下载的kernel-devel
和kernel-headers
包的版本号严格一致,任何差异都会导致驱动编译失败。
下载NVIDIA官方驱动程序
访问NVIDIA官方驱动下载页面:https://www.nvidia.com/Download/index.aspx
。
根据之前记录的GPU型号、操作系统(选择Linux 64-bit)和CentOS版本,搜索并下载合适的驱动程序文件,文件通常为.run
格式,NVIDIA-Linux-x86_64-525.147.05.run
。
下载核心依赖包
NVIDIA驱动的安装过程需要编译内核模块,因此必须安装开发工具和内核头文件,在准备机上,使用yumdownloader
工具来下载这些包及其所有依赖项,而无需实际安装它们。
确保安装了yum-utils
:
sudo yum install -y yum-utils
创建一个目录用于存放所有下载的文件,并进入该目录:
mkdir nvidia-offline-packages cd nvidia-offline-packages
使用yumdownloader
命令下载以下关键包。--resolve
参数会自动下载所有必需的依赖项。
# 下载与离线机内核版本完全匹配的 kernel-devel 和 kernel-headers # 请将 "3.10.0-1160.83.1.el7.x86_64" 替换为您离线机实际的内核版本 yumdownloader --resolve kernel-devel-3.10.0-1160.83.1.el7.x86_64 kernel-headers-3.10.0-1160.83.1.el7.x86_64 # 下载编译工具链和其它关键库 yumdownloader --resolve gcc make dkms elfutils-libelf-devel
将下载的NVIDIA .run
文件也移动到此目录中,至此,准备工作完成,这个nvidia-offline-packages
文件夹包含了离线安装所需的一切。
第二步:离线环境下的安装过程
将准备好的nvidia-offline-packages
文件夹通过U盘、移动硬盘或内部网络共享等方式传输到目标CentOS离线机上。
安装所有依赖包
在离线机上,进入存放依赖包的目录,使用yum localinstall
命令进行本地安装,此命令能自动处理本地RPM包之间的依赖关系。
cd /path/to/nvidia-offline-packages sudo yum localinstall ./*.rpm
等待安装完成,确保没有报错。
禁用系统默认的nouveau驱动
CentOS默认使用开源的nouveau
驱动,它会与NVIDIA官方驱动冲突,必须将其禁用。
创建一个新的黑名单文件:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
在文件中添加以下两行内容:
blacklist nouveau
options nouveau modeset=0
保存并退出后,需要重新生成initramfs
并重启系统以使更改生效。
sudo dracut --force sudo reboot
执行NVIDIA驱动安装
系统重启后,进入命令行模式(非图形界面),如果系统默认启动图形界面,可以通过以下命令切换:
sudo systemctl isolate multi-user.target
进入存放NVIDIA驱动的目录,为.run
文件添加执行权限并运行安装程序:
cd /path/to/nvidia-offline-packages chmod +x NVIDIA-Linux-x86_64-*.run sudo ./NVIDIA-Linux-x86_64-*.run
安装过程中,会显示NVIDIA的用户许可协议(EULA),选择Accept
接受,后续步骤,如安装32位兼容库等,通常选择默认选项即可(按回车键或选择Yes
),安装程序会自动编译并安装内核模块。
安装成功后,重启系统以加载新驱动:
sudo reboot
验证安装
系统再次启动后,打开终端,输入以下黄金命令来验证驱动是否安装成功:
nvidia-smi
如果看到类似下图的表格输出,包含了驱动版本、CUDA版本、GPU型号、温度、功耗和使用率等信息,那么恭喜您,NVIDIA驱动已成功安装。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A |
| 30% 28C P8 15W / 350W | 256MiB / 12288MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
相关问答FAQs
问1:为什么在安装NVIDIA驱动之前,必须禁用nouveau驱动?
答: nouveau
是Linux内核中自带的开源NVIDIA显卡驱动程序,而我们要安装的是NVIDIA官方提供的闭源私有驱动,这两个驱动都试图控制同一块硬件,如果同时存在,会发生严重的冲突,导致系统无法正常启动GUI、黑屏或驱动加载失败,必须通过黑名单机制在内核层面彻底禁用nouveau
,为官方驱动的安装和运行扫清障碍。
答: 如果版本不匹配,NVIDIA安装程序在编译内核模块时会失败,并报错,提示找不到与当前内核对应的头文件,这会导致安装中断,内核模块是驱动与内核沟通的桥梁,必须精确匹配,为了避免这个问题,最可靠的方法是在准备机上,使用uname -r
获取离线机的确切内核版本号,然后在下载kernel-devel
和kernel-headers
包时,使用完整的版本号(包括el7.x86_64
等后缀)进行指定下载,确保万无一失。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复