BadRAM is a patch that will enable you to use damaged RAM modules with the linux kernel. BadRAM was originally written by Rick van Rein for the linux 2.2.14 kernel with contributions for various kernel versions also available for download. Our patch is specifically designed for the 2.6.9-5.0.3 kernel shipped with RHEL4 / CentOS4 and is also available from Rick's original site. This BadRAM patch is, like the original, released under the terms of the Gnu Public License (GPL). No restrictions for use, private or commercial exist other than the ones mentioned in the Gnu Public License (GPL).

Designed to work with a memory tester like memtest86+.

Download - Kernel 2.6.9-5.0.3 patch (released March 2, 2005)
Patch makes kernel ~400 bytes larger but other than that has no effect on performance.

For those interested...yes, this patch does work with the newest 2.6.9-5.0.5, 2.6.9-11, and 2.6.9-22 updates for EL4.
Simply, make a symbolic link and the patch applies properly (see howto below).

If you just want the patched EL4 RPMs, please download here.

 

Howto:

RedHat included the ability to make modules, but not the kernel, in the kernel-devel package. You must download the kernel-sourecode package as well. After installing that package go to /usr/src/ and perform the following:
For 2.6.9-5.0.5, you must make a symbolic link: ln -s linux-2.6.9-5.0.3.EL linux-2.6.9-5.0.5.EL
patch -p0 < BadRAM-2.6.9.5.patch
  patching file linux-2.6.9-5.0.3.EL/arch/i386/defconfig
  patching file linux-2.6.9-5.0.3.EL/arch/i386/Kconfig
  patching file linux-2.6.9-5.0.3.EL/arch/i386/mm/init.c
  patching file linux-2.6.9-5.0.3.EL/CREDITS
  patching file linux-2.6.9-5.0.3.EL/Documentation/badram.txt
  patching file linux-2.6.9-5.0.3.EL/Documentation/kernel-parameters.txt
  patching file linux-2.6.9-5.0.3.EL/Documentation/memory.txt
  patching file linux-2.6.9-5.0.3.EL/include/asm-i386/page.h
  patching file linux-2.6.9-5.0.3.EL/include/linux/page-flags.h
  patching file linux-2.6.9-5.0.3.EL/mm/bootmem.c
  patching file linux-2.6.9-5.0.3.EL/mm/page_alloc.c
make mrproper
edit the Makefile and change the EXTRAVERSION and NAME lines to the kernel name you want
copy the initial config file you are booting from down from /boot to /usr/src/linux-2.6.9-5.0.3.EL/.config
make oldconfig
make menuconfig / make config / make xconfig

After your changes, build the kernel by:
make bzImage
make modules
make modules_install
cp arch/your_arch/boot/bzImage /boot/vmlinuz-version-name
cd /boot
mkinitrd initrd-version-name.img kernel-version
Lastly, edit your /etc/lilo.conf or /boot/grub/grub.conf to point to your new kernel and initrd.img


`make mrproper' will do a more extensive `clean'ing. It is sometimes necessary; you may wish to do it at every patch. `make mrproper' will also delete your configuration file, so you might want to make a backup of it (.config) if you see it as valuable.
`make oldconfig' will attempt to configure the kernel from an old configuration file; it will run through the `make config' process for you. If you haven't ever compiled a kernel before or don't have an old config file, then you probably shouldn't do this, as you will most likely want to change the default configuration.
'make ARCH=i386 nonint_oldconfig' will do a non-interactive oldconfig for i386