I want to make some modifications to my Incredible's kernel. However, before I start I would like to at least try to rebuild and replace the stock kernel. That way I know that any issues are related to my changes, and not trouble building/installing the stock kernel.
So I went to my Incredible's Software Information and found my kernel version to be:
So I went to HTC's android source code page and found the following kernel source code which matches my build:
HTC - Mobile Phones, Smartphones, Cell Phones, PDAs
I pulled the kernel configuration from my phone with:
Then I made sure to build with the local version properly set:
adb pull /proc/config.gz
mv config .config
Now, the tricky part to me is actually setting up the proper boot.img. I have done two things to extract the original boot.img to get boot parameters and ramdisk. I found my boot partition here:
Then I extracted boot.img as follows and split it:
gnychis@air:~$ adb shell cat /proc/mtd
dev: size erasesize name
mtd0: 000a0000 00020000 "misc"
mtd1: 00480000 00020000 "recovery"
mtd2: 00300000 00020000 "boot"
mtd3: 0f800000 00020000 "system"
mtd4: 000a0000 00020000 "local"
mtd5: 02800000 00020000 "cache"
mtd6: 09500000 00020000 "datadata"
Then, I combine this ramdisk with my own built version of the kernel as follows:
$ adb shell
# cat /dev/mtd/mtd2 > /sdcard/stock_boot.img
$ ./split_bootimg.pl stock_boot.img
Page size: 2048 (0x00000800)
Kernel size: 2274960 (0x0022b690)
Ramdisk size: 167337 (0x00028da9)
Second size: 0 (0x00000000)
Command line: no_console_suspend=1
Writing stock_boot.img-kernel ... complete.
Writing stock_boot.img-ramdisk.gz ... complete.
Then I pushed it to my sdcard as "mystock_incredible_boot.img" and rebooted my phone to recovery mode. In recovery mode, I did:
./mkbootimg --kernel kernel/arch/arm/boot/zImage --ramdisk stock_boot.img-ramdisk.gz --cmdline "no_console_suspend=1" -o boot.img
Then, I rebooted the phone and it never gets past the "htc Incredible" white screen. So then I tried to do some debugging and despite that the only kernel option found in the stock boot.img was "no_console_suspend=1", I found from dmesg that when the phone boots the stock boot.img there are many more kernel options:
# flash_image boot /sdcard/mystock_incredible_boot.img
flashing boot from /sdcard/mystock_incredible_boot.img
mtd: successfully wrote block at 0
mtd: successfully wrote block at 20000
mtd: successfully wrote block at 40000
mtd: successfully wrote block at 60000
mtd: successfully wrote block at 80000
mtd: successfully wrote block at a0000
mtd: successfully wrote block at c0000
mtd: successfully wrote block at e0000
mtd: successfully wrote block at 100000
mtd: successfully wrote block at 120000
mtd: successfully wrote block at 140000
mtd: successfully wrote block at 160000
mtd: successfully wrote block at 180000
mtd: successfully wrote block at 1a0000
mtd: successfully wrote block at 1c0000
mtd: successfully wrote block at 1e0000
mtd: successfully wrote block at 200000
mtd: successfully wrote block at 220000
mtd: successfully wrote block at 240000
mtd: successfully wrote block at 0
So, then I tried packaging it with all of these boot parameters also, and I still do not get past the "htc Incredible" white screen. I'm not sure what I am missing here. Does anyone see anything wrong with what I have done?
<5>[ 0.000000] Kernel command line: board_incrediblec.disable_uart3=0 board_incrediblec.usb_h2w_sw=0 board_incrediblec.disable_sdcard=0 diag.enabled=0 board_incrediblec.debug_uart=0 smisize=0 userdata_sel=1 androidboot.baseband=2.15.00.07.28 androidboot.cid=VZW__001 androidboot.carrier=COMMON androidboot.mid=PB3120000 androidboot.keycaps=qwerty androidboot.mode=normal androidboot.serialno=HT042HJ01678 androidboot.bootloader=0.92.0000 androidboot.hardware=inc no_console_suspend=1