Fortunately, we can pass partition layouts via kernel command line without kernel modification.
lbcoder, Thanks for post this! Custom partition layouts, ZERO brick risk!
My Nexus One default partition layouts:
# cat /proc/mtd
dev: size erasesize name size
mtd0: 000e0000 00020000 "misc" 896K
mtd0: 000e0000 00020000 "misc" 896K
mtd1: 00400000 00020000 "recovery" 4M
mtd2: 00380000 00020000 "boot" 3M
mtd3: 09100000 00020000 "system" 145M
mtd4: 05f00000 00020000 "cache" 95M
mtd5: 0c440000 00020000 "userdata" 196M
# msm_nand MTD info during kernel booting
[ 13.353302] msm_nand: DEV_CMD1: f00f3000
[ 13.353302] msm_nand: DEV_CMD1: f00f3000
[ 13.357299] msm_nand: NAND_EBI2_ECC_BUF_CFG: 1ff
[ 13.361724] Creating 6 MTD partitions on "msm_nand":
[ 13.366790] 0x000003ee0000-0x000003fc0000 : "misc"
[ 13.373260] 0x000004240000-0x000004640000 : "recovery"
[ 13.381561] 0x000004640000-0x0000049c0000 : "boot"
[ 13.386108] 0x0000049c0000-0x00000dac0000 : "system"
[ 13.538635] 0x00000dac0000-0x0000139c0000 : "cache"
[ 13.637023] 0x0000139c0000-0x00001fe00000 : "userdata"
[ 13.361724] Creating 6 MTD partitions on "msm_nand":
[ 13.366790] 0x000003ee0000-0x000003fc0000 : "misc"
[ 13.373260] 0x000004240000-0x000004640000 : "recovery"
[ 13.381561] 0x000004640000-0x0000049c0000 : "boot"
[ 13.386108] 0x0000049c0000-0x00000dac0000 : "system"
[ 13.538635] 0x00000dac0000-0x0000139c0000 : "cache"
[ 13.637023] 0x0000139c0000-0x00001fe00000 : "userdata"
cache partition is too large to me.
I would like to change partition layouts to
dev: size erasesize name size
mtd0: 000e0000 00020000 "misc" 896K
mtd0: 000e0000 00020000 "misc" 896K
mtd1: 00400000 00020000 "recovery" 4M
mtd2: 00380000 00020000 "boot" 3M
mtd3: 09100000 00020000 "system" 145M
mtd4: 02800000 00020000 "cache" 95M->40M
mtd5: 0FB00000 00020000 "userdata" 196M->251M
mtd5: 0FB00000 00020000 "userdata" 196M->251M
userdata partition up to 251M!
So, I need add kernel command line like below
mtdparts=msm_nand:896k@0x3ee0000(misc),4M@0x4240000(recovery),3M@0x4640000(boot),145M@0x49c0000(system),40M@0xdac0000(cache),251M@0x102C0000(userdata)
But how?
I do it manually. We need to modify both recovery and boot images.
- Boot to recovery mode
- Extract recovery image from recovery partition and use hex editor to add kernel command line into recovery image
- Flash back modified recovery image then boot to recovery again
- Check MTD information, we are done.
[ 9.726074] msm_nand: DEV_CMD1: f00f3000
[ 9.726257] msm_nand: NAND_EBI2_ECC_BUF_CFG: 1ff
[ 9.726440] 6 cmdlinepart partitions found on MTD device msm_nand
[ 9.726684] Creating 6 MTD partitions on "msm_nand":
[ 9.726837] 0x000003ee0000-0x000003fc0000 : "misc"
[ 9.728668] 0x000004240000-0x000004640000 : "recovery"
[ 9.733581] 0x000004640000-0x000004940000 : "boot"
[ 9.737548] 0x0000049c0000-0x00000dac0000 : "system"
[ 9.893493] 0x00000dac0000-0x0000102c0000 : "cache"
[ 9.937652] 0x0000102c0000-0x00001fdc0000 : "userdata" - Flash zip from SD (I use CM7.2)
- Extract boot image from boot partition and use hex editor to add kernel command line into boot image
- Flash back modified boot image then reboot
- Boot to CM, then check MTD information.
沒有留言:
張貼留言