How to build redhat kernel for VMware for time issue

NOTE: This may not work with systems with AMD processors – I tried it on an Athlon64 X4200 and it failed to install a patch – I commented that patch out and the compile failed somewhere further down the line and I just gave up at that point.

VMware ESX 3.0.x supports LSILogic for it’s SCSI controller, so there is no longer a need to compile into the BusLogic driver. You can skip step3.

Anyways, here’s how you do it:

1) download kernel source. I got mine from:

ftp://ftp.redhat.com/pub/redhat/linux/u … EL.src.rpm

2) install source:

rpm -i kernel-2.6.9-34.0.2.EL.src.rpm

(You may need to run “mkdir -p /usr/src/redhat/SOURCES”. If that’s the case, then I’d run “mkdir -p /usr/src/redhat/SOURCES /usr/src/redhat/SPEC /usr/src/redhat/RPMS /usr/src/redhat/SRPMS /usr/src/redhat/BUILD” just in case. )

3) edit files to include BusLogic driver:

cd /usr/src/redhat/SOURCES

edit the following files:

kernel-2.6.9-i686.config

kernel-2.6.9-i686-hugemem.config

kernel-2.6.9-i686-smp.config

replace all instances of:

# CONFIG_SCSI_BUSLOGIC is not set

with:

CONFIG_SCSI_BUSLOGIC=m

4) make a patch change the Internal kernel timer frequency.

cd /usr/src/redhat/SOURCES

tar jxvf linux-2.6.9.tar.bz2

mkdir -p linux-2.6.9-vmware/include/asm-i386

cp -pr linux-2.6.9/include/asm-i386/param.h linux-2.6.9-vmware/include/asm-i386/param.h

open linux-2.6.9-vmware/include/asm-i386/param.h

change

# define HZ 1000 /* Internal kernel timer frequency */

to

# define HZ 100 /* Internal kernel timer frequency */

diff -urN linux-2.6.9/include/asm-i386/param.h linux-2.6.9-vmware/include/asm-i386/param.h > vmware.patch

add the patch to the spec file list

open /usr/src/redhat/SPECS/kernel-2.6.spec

added to where it lists the patches (your numbers may vary):

I just made it Patch 5 since it doesn’t exist:

so after the line: Patch4: linux-2.6.9-selected-ac-bits.patch

Patch5: vmware.patch

and where it does the prep after the line: %patch4 -p1

%patch5 -p1

5) change the release of your kernel to differentiate:

cd /usr/src/redhat/SPECS

open the file: kernel-2.6.spec and change:

%define release 34.0.2.EL

to

%define release 34.0.2.EL.vmware

6) build the rpm.

rpmbuild -ba –target=i686 /usr/src/redhat/SPECS/kernel-2.6.spec

You could use

rpmbuild -bb –target=i686 /usr/src/redhat/SPECS/kernel-2.6.spec

if you only need the binary rpms, but since we modified the source, I like to use ba, so I can reuse the source rpm should I need to compile again.]]>

Tags: , ,

Leave a Reply