[Samsung Epic 4G Touch] SweetwaterBurns:
Since I can't build my own kernel at the moment, I've been doing some research instead.

I've attached a build.sh that I stole from the Siyah kernel source and modified a bit. It should automate some things and it also builds it's own initramfs.cpio instead of relying on the kernel build system to do it.

Make sure you use a clean initramfs that you have not used for any previous builds and place it in the kernel directory under initramfs. The script keeps this directory clean in order to prevent residual files from previous builds causing issues.

The script assumes that the toolchain you're going to use is located in the directory above the kernels under toolchain/bin/arm-none-eabi- but you can modify that to whatever you want.

This does 2 full builds of the kernel, one clean to get the modules and a second dirty build to create the final zImage with the initramfs. I suspect this *might* affect the module version checking that has been causing issues, but can't test. It's also a bit future proofed in that it will find all built modules and not just the default ones from the OP.

If you have more than 2 cores or CPUs and want faster builds, change the number of jobs (-j3) to the number of processors in your system + 1 (i.e. A quadcore system would use '-j5')

I'm also attaching an empty zip file that you can just drop the zImage in and it should flash the kernel under CWM instead of having to rely on Odin/Heimdall to test.

I'm going to see if I can set up a build environment on the computer I've been borrowing and then maybe I can actually do some real work/slacking-off-productively.

#!/bin/sh
# Modified version of build.sh taken from Siyah kernel source
# https://bitbucket.org/gokhanmoral/siyahkernel
# http://xdaforums.com/showthread.php?t=1263838

#Finds the full path for the current directory
export KERNELDIR=`readlink -f .`

#Finds the full path for the unmodified initramfs
export INITRAMFS_SOURCE=`readlink -f $KERNELDIR/initramfs`
export PARENT_DIR=`readlink -f ..`

# Uncomment and set to whatever you want...
#export CONFIG_DEFAULT_HOSTNAME=gm-ubuntu
export ARCH=arm

# This sets the directory for the toolchain, modify as needed
export CROSS_COMPILE=$PARENT_DIR/toolchain/bin/arm-none-eabi-

# Sets the working directory for creating the initramfs, useful because it keeps the original clean of any modules, etc. that might cause issues
INITRAMFS_TMP="$KERNELDIR/initramfs-tmp"

# Check to see if .config exists and if it doesn't runs a defconfig(set to your choice)
if [ ! -f $KERNELDIR/.config ];
then
make c1_rev05_na_spr_defconfig
fi

. $KERNELDIR/.config

# Remove any old initramfs stuff to make sure we build clean
rm -rf $INITRAMFS_TMP
rm -rf $INITRAMFS_TMP.cpio
mkdir $INITRAMFS_TMP

echo compiling modules...
cd $KERNELDIR/
# Compile whole kernel, not just modules, to get the errors sooner
make -j3 || exit 1

# Copies the clean initramfs to our working directory and cleans it up a bit.
cp -ax $INITRAMFS_SOURCE $INITRAMFS_TMP
find $INITRAMFS_TMP -name .git -exec rm -rf {} \;
rm -rf $INITRAMFS_TMP/.hg

# Find all modules that were just built and copy them into the working directory
find -name '*.ko' -exec cp -av {} $INITRAMFS_TMP/lib/modules/ \;

# Create initramfs for final build
cd $INITRAMFS_TMP
find | fakeroot cpio -H newc -o > $INITRAMFS_TMP.cpio 2>/dev/null
ls -lh $INITRAMFS_TMP.cpio
cd -

echo compiling kernel...
make -j3 zImage CONFIG_INITRAMFS_SOURCE="$INITRAMFS_TMP.cpio" || exit 1