Linux – Identify the SCSI module used by EL6’s anaconda installer

anacondalinux

I'm attempting to install CentOS 6 on an older Dell Poweredge 800 server. It has an Intel RAID SRCS14L controller, with a RAID 5 logical volume presented.

I have no problems with CentOS 5.x's anaconda recognizing the device, but CentOS 6's anaconda does not.

I read somewhere to verify which modules are loaded within anaconda, and if the module installed supports the RAID controller, you should be good. However, there is a large difference in the modules loaded by anaconda for the CentOS 5.x install versus that of 6.

I have also installed the kernel-devel package for el6, and the megaraid driver file does not list the Intel RAID SRCS14L adapter(s) explicitly; but some other Intel RAID adapters in the SRC series.

How do I identify the driver or module used by CentOS 5.x's anaconda for my SCSI controller? How do I add support for the Intel RAID SRCS14L into anaconda for CentOS 6?

Thanks.

[updated]

I located the source for the module but I don't understand how to simply compile a kernel module that can be loaded into anaconda at run time. From what I'm reading, I'm not sure if this is the correct way to do this. Can a kernel module be compiled and loaded into anaconda at runtime? Is there another method I am missing?

[update 2]

  • I will utilize lspci -k and/or lspci -nn while in the console during the installation (anaconda) of CentOS 5 (hitting ctrl+alt+f2) to determine which module is used to access the RAID device.
  • I will then need to compile the kernel module against the kernel source that's specified in uname -r of anaconda.
  • I will then need to add it to an initrd.img file and use this file when initializing the CentOS 6 installation (by hitting tab at the "Welcome to CentOS 6.0!" screen)

I am concerned with kernel updates and having the recompile the driver module with each update. Then again, I suppose if I were to compile the driver against the new kernel, this is the only way.

[update 3]

  • The gdth driver/module source is located within the kernel sources for the kernel that is used when loading CentOS from the 6.0 media (2.6.32-71.el6), but it is not located in the initrd.img that is located on the CentOS 6 install media
  • The kernel option CONFIG_SCSI_GDTH [see lkddb] needs to be set in order for the module to be built when compiling the kernel either through the config file located within the source tree at /kernel-2.6.32-71.el6/linux-2.6.32-71.el6.i686/configs/kernel-2.6.32-i686.config or via make menuconfig at Device Drivers> SCSI device support> SCSI low-level drivers< Intel/ICP (former GDT SCSI Disk Array) RAID Controller support.

[update 4]

I've been advised to file an RFE with ELrepo to request the gdth driver, as it has been discontinued in the RHEL upstream.

[update 5]

Some ELRepo guys compiled a driver disk for gdth which worked.

Best Answer

How do I identify the driver or module used by CentOS 5.x's anaconda for my SCSI controller?

You can extract the initrd image file:

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

and take a look at the init file or lib folder:

# 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

how to simply compile a kernel module that can be loaded into anaconda at run time.

I haven't tried but I would suggest you doing the following steps:

  • extract the initrd from the installation media
  • add the modules
  • and repack it all in a image
  • load the new one with initrd parameter

Please refer the below links for more information:

Related Topic