温馨提示×

CentOS FetchLinux如何安装驱动程序

小樊
36
2025-11-26 04:06:11
栏目: 智能运维

CentOS 安装驱动的通用流程与常见场景

一、通用准备与识别硬件

  • 确认系统与内核版本:cat /etc/redhat-release;uname -r
  • 识别设备型号:lspci | grep -i net(网卡);lspci | grep -i vga(显卡);必要时用 lspci -nn 查看厂商与设备ID
  • 查看当前驱动与固件:ethtool -i <网卡名>(如 eth0);lsmod | grep <驱动名>
  • 准备编译环境(内核模块驱动需要):yum install -y gcc kernel-devel-$(uname -r) kernel-headers
  • 原则:优先使用发行版仓库或厂商提供的 RPM 包;无包可用时再从源码编译安装

二、方法一 使用发行版或厂商仓库安装(推荐)

  • 显卡示例(NVIDIA 数据中心/计算卡):安装本地仓库 RPM 后通过 yum 安装驱动
    • 下载并安装对应系统版本的本地仓库包(示例为 RHEL7/CentOS7 的 Tesla 驱动仓库)
    • 命令:rpm -i nvidia-driver-local-repo-rhel7-<版本>.rpm
    • 更新缓存并安装:yum clean all;yum install cuda-drivers
    • 重启:reboot;验证:nvidia-smi
  • 其他硬件(如部分存储/网卡):优先查找 ELRepo 等第三方仓库,yum 安装对应内核模块包,省去编译与维护成本

三、方法二 源码编译安装(无仓库包或需要特定版本时)

  • 网卡驱动示例(Intel 82545EM,e1000 驱动)
    • 确认型号:lspci | grep -i net;查看现有驱动:ethtool -i eth0
    • 安装依赖:yum install -y gcc kernel-devel-$(uname -r) kernel-headers
    • 下载并解压驱动源码(示例包名 e1000-8.0.35.tar.gz)
    • 编译安装:cd e1000-8.0.35/src;make install
    • 卸载旧模块并加载新模块(建议在控制台执行,避免断网):rmmod e1000;modprobe e1000
    • 验证:ethtool -i eth0 应显示新版本;必要时重启
  • 显卡驱动示例(NVIDIA .run 安装器)
    • 安装编译依赖:yum install -y gcc kernel-devel-$(uname -r) kernel-headers
    • 禁用 nouveau:在 /etc/modprobe.d/blacklist.conf 添加 blacklist nouveau;备份并重建 initramfs
      • mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
      • dracut /boot/initramfs-$(uname -r).img $(uname -r)
    • 切换到文本模式:systemctl set-default multi-user.target 或 init 3;重启
    • 安装驱动:chmod +x NVIDIA-Linux-x86_64-<版本>.run;./NVIDIA-Linux-x86_64-<版本>.run
    • 验证:nvidia-smi;恢复图形界面:systemctl set-default graphical.target 或 init 5

四、常见问题与排查要点

  • 报错 “unable to find the kernel source tree for the currently running kernel”:安装匹配当前运行内核的 kernel-devel,并使用 ./NVIDIA-…run --kernel-source-path=/usr/src/kernels/$(uname -r) 指定路径;必要时加 -k $(uname -r)
  • 新驱动未生效:确认 nouveau 已禁用、initramfs 已重建、系统已切到文本模式安装,安装后重启再验证
  • 网络驱动替换风险:rmmod/modprobe 可能导致当前 SSH 会话中断,务必在本地控制台或带外管理操作
  • 虚拟机/云镜像场景:导入前检查内核是否支持 virtio(grep -i virtio /boot/config-$(uname -r)),以及 initramfs 是否包含 virtio(lsinitrd /boot/initramfs-$(uname -r).img | grep virtio);若缺失,使用 mkinitrd 重新生成并包含 virtio_blk、virtio_pci、virtio_console 等模块

0