识别 EL6 的 anaconda 安装程序使用的 SCSI 模块?

识别 EL6 的 anaconda 安装程序使用的 SCSI 模块?

我正在尝试CentOS 6在较旧的 Dell Poweredge 800 服务器上进行安装。它有一个 Intel RAID SRCS14L 控制器,并显示一个 RAID 5 逻辑卷。

CentOS 5.x我对的 anaconda 识别设备没有任何问题,但是CentOS 6的 anaconda 却没有。

我读到过一些文章,可以验证 anaconda 中加载了哪些模块,如果安装的模块支持 RAID 控制器,那么应​​该没问题。但是,anaconda 为安装加载的模块与 有很大CentOS 5.x不同6

我还安装了kernel-devel软件包el6和 megaraid 驱动程序文件才不是明确列出英特尔 RAID SRCS14L 适配器;但 SRC 系列中还有一些其他英特尔 RAID 适配器。

如何识别 的CentOS 5.xanaconda 为我的 SCSI 控制器使用的驱动程序或模块?如何将对 Intel RAID SRCS14L 的支持添加到 anaconda 中CentOS 6

谢谢。

[更新]

我找到模块的来源但我不明白如何简单地编译一个可以在运行时加载到 anaconda 中的内核模块。从我读到的内容来看,我不确定这是否是正确的方法。内核模块可以在运行时编译并加载到 anaconda 中吗?我是否遗漏了其他方法?

[更新 2]

  • 我将在安装(anaconda)CentOS 5(按 ctrl+alt+f2)期间在控制台中使用lspci -kand/or来确定使用哪个模块来访问 RAID 设备。lspci -nn
  • 然后我需要根据uname -ranaconda 中指定的内核源来编译内核模块。
  • 然后我需要将它添加到 initrd.img 文件中,并在初始化 CentOS 6 安装时使用此文件(通过在“欢迎使用 CentOS 6.0!”屏幕上点击 Tab)

我担心内核更新以及每次更新时重新编译驱动程序模块。不过,我想如果我要针对新内核编译驱动程序,这是唯一的方法。

[更新 3]

  • 驱动gdth程序/模块源位于从 6.0 介质(2.6.32-71.el6)加载 CentOS 时使用的内核源中,但它并不位于initrd.imgCentOS 6 安装介质中
  • 内核选项CONFIG_SCSI_GDTH[参见 lkddb] 需要进行设置,以便在编译内核时通过位于源树中的配置文件或/kernel-2.6.32-71.el6/linux-2.6.32-71.el6.i686/configs/kernel-2.6.32-i686.config通过make menuconfig来构建模块Device Drivers> SCSI device support> SCSI low-level drivers< Intel/ICP (former GDT SCSI Disk Array) RAID Controller support

[更新 4]

我被告知向 ELrepo 提交 RFE 以请求 gdth 驱动程序,因为它已经在 RHEL 上游已停用

[更新 5]

一些 ELRepo 的人编译了一个驱动程序磁盘对于 gdth 来说,它起作用了。

答案1

如何识别 CentOS 5.x 的 anaconda 为我的 SCSI 控制器使用的驱动程序或模块?

您可以提取 initrd 映像文件:

# mkdir /tmp/initrd
# cp /boot/initrd-`uname -r`.img /tmp/initrd
# cd /tmp/initrd
# gzip -dc initrd-`uname -r`.img | cpio -id

并查看init文件或lib文件夹:

# grep scsi init
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko 

# ls -l lib/ | grep scsi
-rw------- 1 root root 294024 Nov 15 16:20 scsi_mod.ko

如何简单地编译一个可以在运行时加载到anaconda的内核模块。

我还没有尝试过,但我建议您执行以下步骤:

  • 从安装介质中提取 initrd
  • 添加模块
  • 并将其全部重新打包到图像中
  • initrd使用参数加载新的

请参阅以下链接了解更多信息:

答案2

戴尔已经实施了很长时间,使用知识管理系统。有两种方法可以获取有效的内核模块:

  1. 下载适用于 RedHat 6 的 Dell-DKMS-SRC 并在您的服务器上安装 gcc,在启动新内核后启动两次(第一次启动将构建模块并将其放入 initrd,第二次启动将在启动期间激活新模块)
  2. 如果您不想在实时服务器上使用 gcc:请在构建服务器上构建 DKMS 模块并将其传输到您的服务器(dkms ldtarball

更新 2011-11-17:由于您在安装过程中需要驱动程序来进行启动过程,因此您应该阅读

答案3

您可以通过执行命令来识别当前加载的模块lsmod。但是,我注意到,在比较 Centos 5 和 6 时,几乎相同的配置(至少是 VM 配置)加载了不同的 scsi 模块。

一个想法可能是加载内核源包并检查所涉及的驱动程序源。

相关内容