ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

CentOS 7下NVIDIA驱动安装全流程及常见故障排查

CentOS 7下NVIDIA驱动安装全流程及常见故障排查 1. 项目背景与环境预检搞GPU服务器的朋友肯定都有体会CentOS 7系统稳是稳但装驱动这件事稍不留神就黑屏、卡死、循环登录甚至内核直接崩溃。我给一台某高校实验室的深度学习服务器装机时就折腾了整整一下午这里把完整流程和踩过的坑都记录下来。先说清楚这台设备的配置CPU是Intel至强系列显卡是某型号的NVIDIA专业卡系统是CentOS 7.9内核版本3.10.0机器上有两块机械硬盘一块装系统一块纯做数据盘内存64G。整个流程的目标很简单装上NVIDIA官方驱动让nvidia-smi能正常输出GPU计算能跑起来后续跑深度学习框架不报错。动手之前这四件事必须先做少一件都容易翻车。1.1 确认显卡型号和系统环境这一步很多人会跳过但偏偏最容易踩坑。驱动不是越新越好显卡型号不同、显存大小不同对应能装的驱动版本差异很大。我遇到过有人拿着老掉牙的卡硬装最新驱动结果编译直接报错报错信息看着像内核头文件缺失其实是驱动压根不支持老架构。lspci | grep -i nvidia cat /etc/redhat-release uname -rlspci显示的是硬件层面的显卡型号比如NVIDIA GeForce GTX 1080或者NVIDIA Tesla V100。这一步确认了实际硬件后去NVIDIA官网查对应驱动版本的适配表。这里有个原则优先选择NVIDIA官网提供的对应显卡型号的长期支持版本Long Lived Branch不要追新。实验室那台服务器最终选的驱动版本是530.41.03适配Tesla系列和部分GeForce系列CUDA 12.2配套也稳定。系统环境主要看内核版本CentOS 7默认是3.10.0如果自己编译过内核或者升级过版本会更高。NVIDIA驱动需要对应版本的内核头文件和源码包这两个东西必须和当前内核完全匹配。我见过有人装完驱动后重启系统起不来排查半天发现是内核头文件版本不对驱动模块编译出来加载不上。1.2 确认nouveau开源驱动占用情况CentOS 7默认带着开源的nouveau驱动这个驱动和NVIDIA官方驱动冲突一起加载必出问题。装官方驱动前必须把nouveau彻底禁用掉否则你在nvidia-installer时它会提示nouveau正在使用然后直接退出。检查nouveau的状态lsmod | grep nouveau只要输出里有nouveau字样就说明它已经加载到内核里了。禁用它的做法是在/etc/modprobe.d/下新建一个配置文件写入黑名单设置然后重建initramfs让系统启动时不再加载nouveau模块。禁用操作本身不难但要注意改完initramfs之后必须重启系统而且重启前要确认配置写对了。我见过有人改了配置没重启就急着装驱动装到一半卡死然后一头雾水。另一个坑是某些系统镜像预装了图形界面拿nouveau做桌面显示的这种机器要进入纯字符模式再操作否则图形界面会占用GPU设备驱动安装时访问/dev/nvidia0失败。1.3 确认内核头文件和gcc等编译环境NVIDIA官方驱动的run包是现场编译内核模块的需要内核头文件包和gcc、make、glibc-devel等基础工具。缺少任何一个装驱动时都会在编译阶段报错而编译报错的类型很多看着吓人但原因往往就是环境不全。yum install -y gcc make kernel-devel-$(uname -r) epel-release上面这条命令的关键在于kernel-devel-$(uname -r)的动态匹配。很多人分不清kernel-headers和kernel-devel的区别前者只提供头文件后者才包含完整的声名和部分源码连接是链接到/usr/src/kernels/目录下的内容NVIDIA驱动编译时需要的是kernel-devel。如果装完后执行ls /usr/src/kernels/没看到对应版本目录那就是装错了。个别情况下yum源里找不到匹配内核版本的kernel-devel这时候要么换一个可用的源要么手动去某软件仓库下载对应RPM包安装。1.4 规划驱动安装方式驱动安装主要有四种方式不同方式适配不同场景我这里简单对比一下后续章节会详细讲其中两条路线安装方式适用场景优点缺点官方run包绝大多数生产环境、服务器最稳定、可选参数多、可控性强需要编译环境、操作繁琐ELRepo kmod-nvidiaCentOS/RHEL官方社区源安装快、自动更新版本滞后、某些特定卡不支持CUDA toolkit捆绑驱动跑深度学习框架一次搞定CUDA版本绑定后续升级驱动麻烦系统自带gnome软件有图形桌面的场景图形化简单兼容性差服务器一般不碰我最终选了官方run包方式原因很简单这台机器是给深度学习用的CUDA版本要自己控制驱动版本也要和CUDA做匹配run包方式可以精准控制这些变量。ELRepo虽然简单快速但它的驱动版本通常滞后几个月新卡支持往往跟不上CUDA toolkit捆绑的驱动则存在互相覆盖的问题后续想单独换驱动版本时会比较绕。2. 驱动安装方案的完整流程CentOS 7下装NVIDIA驱动选官方run包是相对最靠谱的一条路。这里我把每一步操作和背后的逻辑都拆开讲清楚。2.1 禁用nouveau驱动的完整操作先创建一个黑名单配置文件vim /etc/modprobe.d/blacklist-nouveau.conf写入以下内容blacklist nouveau options nouveau modeset0第一行告诉内核不要加载nouveau第二行关闭它的模式设置功能。写完保存后需要重新生成initramfs镜像mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut /boot/initramfs-$(uname -r).img $(uname -r)注意这里不是直接用dracut -f强制覆盖而是先备份原文件这样万一新生成的initramfs有问题还能回滚。重新生成镜像的过程大概十几秒输出会显示/boot/initramfs-3.10.0-1160.99.1.el7.x86_64.img之类的字样后面跟一串模块列表看到nouveau出现在其中也不用慌黑名单配置早就写好了它不会再被加载。改完后重启系统重启后再次执行lsmod | grep nouveau这条命令不输出任何内容就对了。如果还有输出大概率是黑名单配置文件没生效检查一下文件权限和路径拼写。顺便说一下有时候/etc/modprobe.d/里已经有别的文件写入了nouveau相关内容比如某些云镜像生成的blacklist.conf这种需要仔细检查不要一个文件没生效就急着继续。2.2 进入纯命令行模式安装RPM系发行版在安装NVIDIA驱动时通常建议停掉图形界面因为X Server会占用GPU设备。服务器有图形界面的情况虽然不多见但还是提一下CentOS 7如果装了GNOME桌面要先把默认运行级别切到多用户模式。systemctl get-default systemctl set-default multi-user.target如果是临时切换可以用systemctl isolate multi-user.target或者直接init 3进入字符界面。切换之前注意保存工作因为图形界面会直接杀掉。还有一种情况是SSH远程连接安装根本不需要图形界面直接按命令行操作就行但如果机器上装了X Server且正在运行建议还是先停掉。跑安装脚本前需要把驱动run包上传到服务器比如放到/tmp目录下然后加上执行权限chmod x NVIDIA-Linux-x86_64-530.41.03.run ./NVIDIA-Linux-x86_64-530.41.03.run --silent --no-opengl-files--no-opengl-files这个参数很关键OpenGL文件会和系统已有的GL库冲突有时会导致图形界面起不来。如果纯计算服务器不需要桌面显示直接带上这个参数最保险。2.3 处理Secure Boot和内核模块签名问题现在的服务器主板基本都默认开启Secure Boot这会给NVIDIA驱动安装带来额外麻烦。CentOS 7内核如果是在Secure Boot模式下启动的加载第三方内核模块时会要求模块有合法签名否则直接被拒。安装时如果没注意这个装完驱动重启后会看到类似这样的提示Loading /var/lib/dkms/nvidia/530.41.03/build/nvidia.ko Error: Module nvidia not foundnvidia-smi执行时报Failed to initialize NVML: Driver/library version mismatch也是这个原因的一种表现。解决方法有几个最简单的就是进BIOS把Secure Boot关掉。但有些服务器是托管的BIOS密码都在机房管理员手里改不了。这种情况可以走模块签名流程生成自签名密钥然后用mokutil导入系统Linux内核启动时会按MOK列表验证模块签名。生成签名密钥的流程openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj /CNNVIDIA-MODULE-SIGN/然后用mokutil --import MOK.der导入密钥重启后系统会进入MOK管理界面按提示完成密码确认和密钥加载。之后再用/usr/src/kernels/$(uname -r)/scripts/sign-file对编译好的nvidia.ko、nvidia-modeset.ko等一堆内核模块逐一签名。这个操作比较繁琐但却是唯一的正规路线。我分享一个经验签名脚本要对lib/modules/$(uname -r)/extra/nvidia下所有.ko文件执行不要只签主模块。漏签一个对应的功能就会受限比如nvidia-modeset.ko没签显示器驱动就加载不上nvidia-uvm.ko没签CUDA统一内存就不可用。2.4 DKMS方式的替代方案CentOS 7里还可以通过DKMS框架来管理NVIDIA驱动模块。DKMS的好处是当内核升级时驱动模块会自动重编译不用每次升级内核后手动重装驱动。yum install -y dkms装好DKMS框架后在安装NVIDIA run包时加上--dkms参数模块文件会交给DKMS维护。装完后每次系统通过yum升级内核DKMS都会检测到新内核在重启前自动把NVIDIA模块编译好避免升级内核后驱动失效的尴尬。我在生产环境里更推荐这种方式因为服务器总要打安全补丁升级内核的不会自动重编驱动的话每次升级都要心惊胆战。DKMS方式有几个注意点第一kernel-devel必须和当前运行内核完全一致DKMS编译就是依赖它第二导入MOK密钥的频率也要跟上内核升级后签名密钥不会自动变但模块会重新编译所以建议保留MOK密钥文件方便重新签名。第三NVIDIA驱动run包在DKMS安装模式下会往/usr/src/nvidia-530.41.03/写入源码不要手动删否则DKMS无从编译。2.5 设置环境变量和持久化配置驱动装完后还需要设置CUDA相关的环境变量。虽然NVIDIA驱动本身不依赖CUDA但跑深度学习框架时需要让系统找到nvcc编译器和CUDA运行库。在/etc/profile.d/下新建一个文件vim /etc/profile.d/cuda.sh写入export PATH/usr/local/cuda-12.2/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH保存后source /etc/profile生效。这里要注意/usr/local/cuda是一个软链接指向实际安装的CUDA版本目录。系统里如果之前装过别的版本软链接指向可能不是你想要的需要确认一下。ls -l /usr/local/ | grep cuda看清楚链接目标别配了个幽灵路径。还要处理电源管理问题GPU服务器功耗这块需要配置持久化模式否则每次重启NVIDIA驱动都会恢复到默认的非持久化模式GPU工作频率管理混乱而且在某些虚拟化环境下会随机掉卡。nvidia-smi -pm 1这条命令的意义是让NVIDIA驱动服务在后台常驻管理GPU状态。它会把电源管理配置写入/etc/nvidia/目录下的配置文件中SDK服务随开机自动启动不用每次手动开。顺便说一下加了-pm 1后nvidia-smi每次查询GPU状态的速度会明显变快算是个意外之喜。3. 简单测试与性能验证装完驱动最要紧的就是立刻验证这一步能确认驱动是否真的对系统所有组件都兼容而不是仅仅“装上没报错”。3.1 nvidia-smi基础信息检查刚装完驱动先跑一下nvidia-smi这是判断驱动安装是否成功的最直接手段。正常输出会显示显卡名称、驱动版本、CUDA版本、显存使用情况等。常见的问题场景是驱动版本显示出来了但CUDA Version显示N/A或者显示版本号但和预期不一致。如果是N/A说明CUDA toolkit没有装或者系统环境变量没配对驱动本身没问题。根据经验先检查/usr/local/cuda软链接是否存在再检查LD_LIBRARY_PATH里的路径是否正确大多数情况是环境变量配置漏了。nvidia-smi下方会有一个进程列表显示当前占用GPU的进程。正常状态下这里是空的但如果之前有过别的进程运行会看到残留这个不用管如果显示错误进程名或者PID异常可以用fuser -v /dev/nvidia*查具体占用者。供电方面nvidia-smi -q -d POWER可以查看当前功耗注意如果是老平台的PCIe 2.0插槽供电限制可能导致GPU性能跑不满但这类问题一般不是驱动故障是硬件槽位约束。3.2 检查内核模块加载状态lsmod | grep nvidia正常情况下至少会有nvidia、nvidia_uvm、nvidia_drm、nvidia_modeset这几个模块输出。其中nvidia_drm是显示输出模块纯计算场景下有没有它不太影响CUDA计算但如果有桌面显示需求它必须存在且正确加载。模块加载情况的顺序也值得注意。nvidia_modeset和nvidia_drm依赖nvidia父模块如果父模块没加载成功后面这几个也会显示不可用。用dmesg | grep nvidia查看内核日志能看到模块加载的具体错误信息。我遇到过nvidia_uvm模块加载失败的情况nvidia-smi能正常显示但跑CUDA程序时统一内存初始化报错。原因是有个特定的内核参数匹配问题重新加载一次模块就正常了modprobe -r nvidia_uvm nvidia_modeset nvidia_drm nvidia modprobe nvidia_uvm3.3 图形渲染能力测试Ubuntu桌面用户或者有大规模可视化需求的朋友可以在装有图形界面的CentOS 7机器上运行glxinfo查看OpenGL渲染器信息。如果显示的是NVIDIA型号说明硬件加速已经生效如果显示的是llvmpipe或者Mesa说明还在用软件模拟渲染性能会差太多。glxinfo | grep OpenGL renderer软件渲染通常是因为没装glxinfo工具或者X Server没有正确加载NVIDIA的GLX模块。如果显示libGL error: failed to load driver: swrast那就是GL库文件路径混乱了常见的解决办法是用--no-opengl-files参数重新跑一遍安装流程把OpenGL文件的选择权交给系统本身。3.4 计算能力测试与CUDA基础验证如果CUDA toolkit已经装好最简单的计算测试就是写一段CUDA的向量加法或者直接跑deviceQuery示例。这里有个更简单的方法用Python加PyTorch来验证import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.cuda.get_device_capability(0)) a torch.randn(10000).cuda() b torch.randn(10000).cuda() c a b assert torch.allclose(c, a b, rtol1e-5) print(CUDA runtime test passed)PyTorch能正确输出显卡名称和计算能力说明CUDA驱动部分已经工作正常。向量加法的结果验证能确保显存读写没有异常。在实验室机器上实测输出计算能力是(7,5)一张Tesla V100级别的卡跑起来单精度乘加运算快得出奇几毫秒的运算根本没必要用性能计数器去测损耗直接用torch.cuda.synchronize()卡一下时间就能测出大致水平。真实场景中跑深度学习计算测试时要注意显存占用torch.randn(10000).cuda()这种小规模计算占不了多少显存但如果是大模型的加载测试显存不够时PyTorch会抛出CUDA out of memory错误这个错误和驱动故障无关是要调batch size。3.5 用NVIDIA自带工具做压力测试驱动包自带的nvidia-bug-report.sh和nvidia-smi diag这些工具可以更深入地检测GPU健康状态。nvidia-smi -q -d PERFORMANCE nvidia-smi -q -d TEMPERATURE nvidia-smi -q -d MEMORY跑一次完整的显存压力测试可以用nvidia-smi -q -d ECC查看ECC纠错计数在深度学习训练环境中ECC计数如果持续增长说明显存有硬件问题需要立刻排查。另一个方法是编译驱动包里的NVIDIA CUDA Sample里面的bandwidthTest和deviceQuery示例非常适合验证计算和带宽。make -C /usr/local/cuda/samples/1_Utilities/bandwidthTest ./bandwidthTest输出结果中Host to Device和Device to Host的带宽值如果远低于理论峰值或者波动很大就要检查PCIe通道是不是没跑在满速状态。我遇到过一次显卡插在PCIe 3.0 x4槽位上带宽只有x16的五分之一装驱动时一切正常但训练速度非常慢。最后发现是主板上第二根PCIe插槽实际只有x4通道换槽后性能大幅提升。4. 常见问题与故障排查实录驱动装多了总会遇到各种问题这一节我把遇到的典型故障和排查路径整理成速查表也把几条重要的排查思路单独讲清楚。4.1 安装完成后启动卡在登录界面或黑屏现象重启后无法进入系统显示器黑屏或者卡在登录界面循环跳转。在CentOS 7这种以X Server为主的系统里最常见的原因是OpenGL库被覆盖。解决办法分两种路径如果是已经装好了驱动系统起不来进单用户模式重装驱动加上--no-opengl-files参数如果驱动还没装只是预先配置了nouveau黑名单导致桌面起不来那就进字符模式把/etc/modprobe.d/blacklist-nouveau.conf里内容注释掉先恢复系统再重新规划安装。新老司机都要记住纯计算服务器上完全没必要装OpenGL相关的文件显存计算和OpenGL没有任何关系驱动包带的那份OpenGL库是针对桌面Linux用户写的服务器上加了它反而容易出事。4.2 NVIDIA-SMI报错Failed to initialize NVMLFailed to initialize NVML: Driver/library version mismatch是频率最高的报错。原因通常是驱动/内核模块和用户态库的版本不一致比如内核里还是老版本的nvidia.ko而用户态的libnvidia-ml.so已经被更新到新版了。排查思路nvidia-smi --version cat /proc/driver/nvidia/version两者版本对不上就要用lsmod | grep nvidia看内核模块状态用modprobe -r nvidia卸载再重新加载。如果重新加载后直接被拒绝需要重启系统进入新内核后用干净的方式重新加载模块。另一种类似报错是NVML library version mismatch这种多数是驱动run包重装但没有彻底清理旧文件导致的。装新版本前建议用nvidia-uninstall卸载一遍或者手动删掉/usr/lib64/libnvidia*下的旧库文件再重装。4.3 内核升级后驱动失效CentOS 7如果通过yum update升级了内核重启后往往发现nvidia-smi无法运行因为新内核需要重新编译NVIDIA内核模块。这就是前面提到DKMS价值的活案例没配DKMS就要手动把驱动run包重新执行一遍。重新执行的方法很简单./NVIDIA-Linux-x86_64-530.41.03.run --silent如果没勾DKMS记得先检查kernel-devel版本是否匹配新内核不匹配先装kernel-devel-$(uname -r)。升级内核这个操作还有个大坑CentOS 7的yum update默认会保留多个内核版本重启时如果不小心选错了旧内核nvidia-smi也会报版本不匹配错误。所以升级完内核重启时最好确认一下当前启动的是哪个内核版本uname -r一查便知。4.4 编译错误Kernel header not found安装run包时在编译阶段报Kernel header not found这个错误很多新手看到就慌。排查方向很简单yum list installed | grep kernel-devel ls /usr/src/kernels/kernel-devel没装或者版本和uname -r不一致。有时候yum install kernel-devel会自动装一个最新版本的内核头文件但这个最新版本和当前运行的内核不是同一个这就会导致问题。解决方法是明确指定版本号安装yum install -y kernel-devel-$(uname -r)如果当前运行的内核版本在yum源里找不到对应的kernel-devel包极大概率是机器内核被手动升级过了而CentOS 7的基础yum源没有新到那个内核版本的开发包需要额外添加源或者直接去官网镜像站点找那个版本的RPM文件。4.5 CUDA版本与驱动版本不匹配CUDA运行时对驱动版本有下限要求比如CUDA 12.2要求驱动版本530.30.0。驱动版本太老时运行CUDA程序会报CUDA driver version is insufficient for CUDA runtime version。NVIDIA官方有个CUDA兼容矩阵表格列出每个CUDA版本要求的最低驱动版本。查这张表再决定是升级驱动还是降级CUDA不要凭感觉来。我遇到过CUDA库版本和驱动版本都满足要求但运行程序仍报这个错的情况最后发现是LD_LIBRARY_PATH里混入了多个CUDA版本的路径系统优先加载了旧CUDA运行库。用ldd检查当前程序的动态库依赖就能发现ldd /path/to/your_binary | grep libcuda正常应显示libcuda.so.1如果是libcuda.so.530.41.03这类带完整驱动版本号的库文件说明库路径混乱了需要调整LD_LIBRARY_PATH。4.6 显卡掉卡与PCIe链路异常有些双卡甚至四卡服务器会遇到某张卡间歇性检测不到nvidia-smi里卡的数量时多时少。这个问题在虚拟化环境下特别常见宿主机的PCIe拓扑隔离不彻底会出现物理服务器通常没那么容易掉卡但PCIe插槽接触不良仍然可能。排查分两步lspci | grep -i nvidia nvidia-smi -L第一句看系统是否识别了所有卡第二句看驱动是否管理了所有卡。如果lspci能看到但驱动管理不到可以用nvidia-smi -r重置这张卡或者用nvidia-smi --gpu-reset强制重置指定GPU。物理接触不良的情况关机断电重新插拔显卡和供电线才是终极办法这个问题在密集机架环境中出现概率不小移动服务器后经常遇到装了再好的驱动也解决不了接触不良。5. 实战心得与后续优化建议跑了这么多年Linux服务器装NVIDIA驱动像是每个运维都要走过的独木桥。这里把后续值得做的事情和最终的体会写一下给新接触GPU服务器的朋友一个落地的收尾。5.1 单卡与多卡环境的差异单卡服务器装驱动相对简单多卡环境在多卡互联、中断路由、PCIe带宽分配上会有更多需要检查的点。多卡环境装好驱动后nvidia-smi topo -m可以查看GPU之间的拓扑关系是NVLink直连还是走PCIe交换。运行深度学习任务时尽量让通信频繁的进程跑在同一根PCIe交换机下的GPU组合上延迟会低不少。双卡环境还有一个常见问题系统默认的MMIO映射空间不够两块卡共用一个中断分组会导致性能异常。这种问题一般通过内核参数pcirealloc解决配置到/etc/default/grub的CMDLINE_LINUX里执行grub2-mkconfig -o /boot/grub2/grub.cfg后重启生效。5.2 驱动程序占用的显存和MIG配置nvidia-smi启动后每个GPU会预留一部分显存给驱动上下文显存越大预留比例越高。初步估算驱动预留显存通常是数十到两三百MB的量级对训练任务只占用个位数GB显存的时候影响不明显但如果是小显存卡跑模型这个开销不能忽视。预留的显存可以在nvidia-smi输出里看到分成FB Memory Usage的used项。新一代专业卡支持MIG多实例GPU可以把一块物理GPU切成多个独立分区每个分区拥有独立的显存和计算单元。配置MIG后面向多租户场景非常有用但要注意MIG开启后驱动必须在root权限下运行nvidia-smi -mig 1启用并且CUDA版本要支持MIG特性。跑深度学习多任务分片时这种方式能大幅提升单卡资源利用率。5.3 推荐自动监控脚本方案生产环境建议写一个简单的Shell脚本监控GPU的功耗、温度和显存使用出现异常自动重启驱动或记录日志。分享一个简化版的监控思路#!/bin/bash GPU_TEMP$(nvidia-smi --query-gputemperature.gpu --formatcsv,noheader | awk {sum$1} END {print sum/NR}) if [ $GPU_TEMP -gt 85 ]; then echo $(date) GPU temperature $GPU_TEMP 85, please check cooling /var/log/gpu_monitor.log fi脚本思路很简单做不做取决于现场环境。个人建议如果机器放在机房里散热没把握或者跑的是长时间训练任务这类监控一定不能省。至少每周看一眼nvidia-smi的功耗和温度走势花不了两分钟能省掉不少半夜被叫起来处理故障的麻烦。5.4 安装之后需要养成的习惯装机完成不是终点日常维护才是重点。根据个人经验装机后会再养成的习惯包括工具链全家桶保持干净kernel-devel和gcc这些编译组件不要随便卸载指不定哪天升级内核就要用。安装驱动时生成的各种备份文件不要急着删比如initramfs的bak文件留着占不了多少空间关键时刻能救命。涉及/etc/modprobe.d/和/etc/profile.d/的修改记得写注释表明改了什么和原因不然三个月后你再回来看自己写的配置文件多半会一头雾水。更重要的一点CentOS 7已经在逐步进入维护末期如果新装机项目还在规划阶段建议同步评估新版系统的迁移路径。NVIDIA驱动在新系统上装机流程更顺因为新版系统自带的内核模块签名机制和DKMS管理更成熟不用像CentOS 7里这样费劲手动管理模块。但如果短期跑的是存量CentOS 7环境这套流程稳定用几年是没问题的。5.5 回归一下装驱动这件事的心态把驱动装上nvidia-smi能打印出来训练能跑起来这只是起步。真正的价值在于通过这次折腾把系统底层、显卡硬件、内核模块之间的关系理清楚了后续再遇到类似问题就不再是黑盒试探而是有思路可循的排查过程。我个人在实际操作中的体会是装NVIDIA驱动这件事情最大的敌人不是复杂的技术难点而是心急。每一步都验证过了再往前走比一口气跑完所有命令要稳妥得多。尤其是重启这个环节每次重启前想清楚要不要备份、要不要改启动项、确认哪些服务会受影响这些习惯能省掉的麻烦远超你的想象。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表