[Android Software/Hacking General [Developers Only]] isaacj87:
Yeah, I know what you mean, man. I was about to go on a killing spree. This phone was driving me nuts! I'll give you the steps I took to get this working so you can build and test it for yourself.

Obviously, you already done the long part (downloading the source). Now, like I said, I think unpackbootimg is not correctly removing the kernel from the boot.img when running mkvendor.sh. So, in order for you to build the new image correctly, you need a non-malformed kernel. You'll notice that everytime you build a new recovery, the end result ends up being around 3.7 mb. You want it to be about 3.2 mb.

I've gone ahead and made a zip of my ascend folder. You'll see it contains a kernel.bak which is the "bad" one.

EDIT: Removed link

Some significant changes were also made to BoardConfig.mk:

USE_CAMERA_STUB := true

# inherit from the proprietary version
-include vendor/huawei/ascend/BoardConfigVendor.mk

TARGET_NO_BOOTLOADER := true
[B]TARGET_BOARD_PLATFORM := MSM7x25[/B]
TARGET_CPU_ABI := armeabi
[B]TARGET_BOOTLOADER_BOARD_NAME := MSM7x25[/B]

[B]BOARD_KERNEL_CMDLINE := mem=211M console=ttyMSM2,115200n8 androidboot.hardware=qcom console=ttyUSBCONSOLE0 androidboot.console=ttyUSBCONSOLE0
BOARD_KERNEL_BASE := 0x00200000
BOARD_PAGE_SIZE := 0x00001000[/B]

# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00500000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00500000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0aa00000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0bda0000
BOARD_FLASH_BLOCK_SIZE := 4096

TARGET_PREBUILT_KERNEL := device/huawei/ascend/kernel

# Below is a sample of how you can tweak the mount points using the board config.
# This is for the Samsung Galaxy S.
# Feel free to tweak or remove this code.
# If you want to add/tweak a mount point, the BOARD_X_FILESYSTEM_OPTIONS are optional.
BOARD_DATA_DEVICE := /dev/block/mtdblock6
BOARD_DATA_FILESYSTEM := yaffs2
#BOARD_DATA_FILESYSTEM_OPTIONS := llw,check=no,nosuid,nodev
#BOARD_HAS_DATADATA := true
#BOARD_DATADATA_DEVICE := /dev/block/stl10
#BOARD_DATADATA_FILESYSTEM := auto
#BOARD_DATADATA_FILESYSTEM_OPTIONS := llw,check=no,nosuid,nodev
#BOARD_SYSTEM_DEVICE := /dev/block/stl9
#BOARD_SYSTEM_FILESYSTEM := auto
#BOARD_SYSTEM_FILESYSTEM_OPTIONS := llw,check=no
#BOARD_CACHE_DEVICE := /dev/block/stl11
#BOARD_CACHE_FILESYSTEM := auto
#BOARD_CACHE_FILESYSTEM_OPTIONS := llw,check=no,nosuid,nodev
#BOARD_SDEXT_DEVICE := /dev/block/mmcblk1p2

I think the pagesize is a necessary change. I think mkbootimg will not produce a working image if that's not there. This might be do to a non-standard 4k header. I'm not too sure if the base is correct, but if it ain't broke, don't fix it!

You also notice that I put a new file called vendorsetup.sh. I think this file is necessary when setting up the build environment.

Now that you have everything I have, here are the steps I took:

Setup the build environment. With the vendorsetup.sh file in there, it should setup correctly now.

source build/envsetup.sh

You'll notice that the ascend is included now.

I also decided to run the lunch command differently. I was looking in some prop file that said "user" instead of "eng" so I ran with it.

lunch generic_ascend-eng

Should anyone try to do this, do not run lunch generic_ascend-user. Noob mistake on my part.

After that completes, you should run the normal "make -j4 recoveryimage" and you should able to fastboot the new image.

I need help properly setting all the mount points in the BoardConfig.mk file. If you could help me out, I would really appreciate it. All of this was a shot in the dark that managed to work.