Thursday, July 20, 2006

Kickstarting HP360 and Redhat 4

Recently we picked up a number of HP DL360 G4p servers. We wanted to kick start all the servers with the standard Redhat kick start. This would be fairly trivial except for the fact that the HP NC340T cards as well as the onboard HP cards are Intel not Broadcom and are not supported by Redhat out of the box, so the kick starts failed with pumpsetup interface - no such device for kick start.

We did do some research with HP who noted: HP NC340T PCI-X 4-port 1000T Gigabit Server Adapter is a 4 port Broadcom card. Its really not, it’s Intel and the chipset has it stamped all over it. I'm not sure how they got this one wrong! In addition the onboard nics would be the same chipset. They were correct about the chipset on the server and the cards being the same though! Kudos to HP for getting that correct.

All the docs on Redhat site show the NC370 card is supported. Not sure why HP thought the NC340 was as well. It’s definitely not out of the box.

Ok - So enough bashing on HP. What we needed to do was to build a custom init image to get these boxes kick starting off the network. I already had a Redhat Blade running Redhat 4 smp. This will be the box used to build the new image. If you don't have another similar Redhat 4 box, you will have to do one manual install.

We surfed HP's site for some supported Intel e1000 drivers for the quad card. At the time of this writing they were located here:

You will need to download these to the Redhat server.

1) Boot the existing Redhat 4 server off the non smp kernel. This is required since the init image does not support smp. At least the one we are working on out of the box.

2) Install the rpm source, cd to the directory and make it.
cd /usr/src/redhat/SOURCES/e1000-6.2.19b/src
make clean

3) Once you have the driver built the next step is to add it into the default initrd.img. Here is the process for doing this.

- Create a dir to mount into:
mkdir /mnt/loop
- Move the file so you can unzip it wherever you currently have it I will be working out of /home/mjohnson/tmp:
mv initrd.img initrd.gz
- Unzip the image:
gunzip initrd.gz
- Mount the image directory so you can work on it.
mount -o loop /home/mjohnson/tmp/initrd /mnt/loop
- cp the modules file to /tmp to work on it:
cp /mnt/loop/modules/modules.cgz /tmp
- uncompress modules cgz:
mv modules.cgz modules.gz ; gunzip modules.gz
- Modules is a cpio archive so we need to extract it:
cpio –idmv < modules

- Copy e1000.ko from the directory we compiled it earlier into this archive:
cp /usr/src/redhat/SOURCES/e1000-6.2.19b/src/e1000.ko /tmp/2.6.9-34.EL/i686

- Now we just need to put everything back together!
find 2.6.9-34.EL | cpio -o -H crc > modules.cpio
gzip modules.cpio
mv modules.cpio.gz modules.cgz
cp modules.cgz /mnt/loop/modules/
umount /mnt/loop/

Thats all there is to this. So to save you the time of doing this yourself, I uploaded my Red Hat Enterprise Linux ES release 4 (Nahant Update 3), just download it and replace your current initrd.img file with it and you should be good to go.

Read more!

Last posts