我正在尝试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.x
anaconda 为我的 SCSI 控制器使用的驱动程序或模块?如何将对 Intel RAID SRCS14L 的支持添加到 anaconda 中CentOS 6
?
谢谢。
[更新]
我找到模块的来源但我不明白如何简单地编译一个可以在运行时加载到 anaconda 中的内核模块。从我读到的内容来看,我不确定这是否是正确的方法。内核模块可以在运行时编译并加载到 anaconda 中吗?我是否遗漏了其他方法?
[更新 2]
- 我将在安装(anaconda)CentOS 5(按 ctrl+alt+f2)期间在控制台中使用
lspci -k
and/or来确定使用哪个模块来访问 RAID 设备。lspci -nn
- 然后我需要根据
uname -r
anaconda 中指定的内核源来编译内核模块。 - 然后我需要将它添加到 initrd.img 文件中,并在初始化 CentOS 6 安装时使用此文件(通过在“欢迎使用 CentOS 6.0!”屏幕上点击 Tab)
我担心内核更新以及每次更新时重新编译驱动程序模块。不过,我想如果我要针对新内核编译驱动程序,这是唯一的方法。
[更新 3]
- 驱动
gdth
程序/模块源位于从 6.0 介质(2.6.32-71.el6)加载 CentOS 时使用的内核源中,但它并不位于initrd.img
CentOS 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
答案3
您可以通过执行命令来识别当前加载的模块lsmod
。但是,我注意到,在比较 Centos 5 和 6 时,几乎相同的配置(至少是 VM 配置)加载了不同的 scsi 模块。
一个想法可能是加载内核源包并检查所涉及的驱动程序源。