[CentOS] Dell 1950 Perc 6/i with centos 4.5

Mon Jun 9 14:19:16 UTC 2008
Steve Moccio <smoccio at ureach.com>

Jeff,

I cant thank you enough. I not only did this for the kernel but
I did this for the pxeboot's jumpstart installation of 4.5.

Thanks again for taking the time to respond.





---- On Sat, 7 Jun 2008, Jeff Collins (jeff at chpscchome.org)
wrote:



I had a somewhat similar problem with a Dell 2600 running Centos
4.4. I found that 4.6 no longer
had the megaraid driver for my card, so I:Here is a detailed
description of what I did, and
perhaps this may be of help if you adapt it to your
situation.==============================================================================================
This
is a brief description of how to set up the 4.6 kernel so that
it will boot on list.The
reason that the stock CentOS 4.6 kernel will not boot on list is
that LSI and Dell madethe
decision to remove support for the PERC/LSI controller adapter
shipped with the PowerEdge2600
from the 4.6 kernel. The new megaraid subsystem supports the
PERC/LSIcontrollers shipped with
the newer PowerEdge 2900 models. The stock 4.5 and 4.6
kernelswill not boot on an older
2600.The 4.4 kernel is called 2.6.9-42.EL or 2.6.9-42.ELsmp in
the symmetric
multiprocessor version.The 4.6 kernel that first shipped is
called 2.6.9-67. The current
topof tree is 2.6.9-67.0.15 as of May 13 2008). When we compare
the megaraid_sas.cdrivers
(for example), we see that a lot of generic support has been
taken out of the newerversion,
compared with the driver from 4.4 (2.6.9-42.EL).For a full scan
of the differences
between all source files in the megaraid directory,
seenewdifftxt in this directory.So what we have to do is take
out a top of tree 4.6 kernel, wipe out all the code in
themegaraid directory, put back all the old megaraid code, then
build a kernel. To get theold
source kernel, use www.rpmfind.org to search for the proper
kernel:kernel-2.6.9-42.EL.src.rpm.
The current top of tree source magically appears
in/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 when we
performyum install kernel* and follow
the instructions to build a custom kernel.This is not trivial,
but all the instructions are
athttp://wiki.centos.org/HowTos/Custom_KernelThe basic steps I
took were slightly
different:-----------------------------------------------1)
Download the stock 4.4 kernel
source using rpmfind2) Build the stock 4.4 kernel, install, and
test boot it to validate the
process.3) Save off the megaraid directory code which is
probably
in/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/megaraid4.
Change the name of the
prior kernel to something like/usr/src/redhat/BUILD.old, etcSo
you get [root at list scsi]#
ls /usr/src/redhat/BUILD  BUILD.old  RPMS  SOURCES  SOURCES.old 
SPECS  SPECS.old  SRPMS5. Download the top of tree kernel
sources for the version we
are on (Centos 4)6. Blast the contents
of/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/drivers/scsi/megaraidand
replace with the old
megaraid code you saved.7. Build and test the kernel (The
instructions tell us to use rpmbuild
to create a full rpmpackage, but I took the shortcut of just
making a stock kernel from the top
of theBUILD/kernel-2.6.9/linux-2.6.9 directory. The steps area.
make oldconfigb.
make menuconfig (you can take out extra modules if you wish, but
make sureyou know what you are
doing. It is easy to create a kernel that does not boot)c. make
-j 4 bzImaged. cp
./arch/i386/boot/bzImage /boot/vmlinuz-2.6.9-your-versione. cp
System.map
/boot/System.map-2.6.9-your-versionf. make -j 4 modulesg. make
modules_installh.
mkinitrd /boot/mkinitrd-2.6.9-your-version.img
2.6.9-your-versioni. edit /etc/grub.conf to add
your kerneli. sync; rebootj. Choose your kernel (do not make it
the default until it has
been tested!)k. Test your kernelSo on list we end up with four
Linux
kernels:The first is the old smp kernel first shipped as CentOS
4.4.The second is a test
kernel for use in creating a custom install CD set.The third is
the patched 4.6 kernel we are
running.The fourth is the uniprocessor stock kernel shipped as
CentOS 4.4.Since
grub counting is 0 based, we have set the default to 2 so we
boot thethird kernel by default
(2.6.9-jgc).Here is the grub.conf file in
/etc===========================================================================#
grub.conf
generated by anaconda## Note that you do not have to rerun grub
after making changes to
this file# NOTICE:  You have a /boot partition.  This means
that#          all kernel and initrd paths are relative to
/boot/, eg.#          root (hd0,1)#          kernel
/vmlinuz-version ro
root=/dev/sda6#          initrd
/initrd-version.img#boot=/dev/sda2default=2timeout=5splashimage=(hd0,1)/grub/splash.xpm.gzhiddenmenutitle
CentOS-4 i386 (2.6.9-42.ELsmp)        root (hd0,1)        kernel
/vmlinuz-2.6.9-42.ELsmp ro root=LABEL=/ rhgb
quiet        initrd /initrd-2.6.9-42.ELsmp.imgtitle
CentOS-4 i386 (2.6.9-prep)        root (hd0,1)        kernel
/vmlinuz-2.6.9-prep ro root=LABEL=/ rhgb quiet        initrd
/initrd-2.6.9-prepimgtitle CentOS-4 i386
(2.6.9-jgc)        root (hd0,1)        kernel /vmlinuz-2.6.9-jgc
ro root=LABEL=/ rhgb quiet        initrd
/initrd-2.6.9-jgc.imgtitle CentOS-4 i386-up
(2.6.9-42.EL)        root (hd0,1)        kernel
/vmlinuz-2.6.9-42.EL ro root=LABEL=/ rhgb
quiet        initrd /initrd-2.6.9-42.EL.imgtitle
dos        rootnoverify (hd0,0)        chainloader
+1
============================================================================Perhaps
this will be of some help to you, Jeff CollinsCommunity Health
Partnership
of Santa Clara County