android 4.0 上面修改了分区之后,重新烧录,重启后,kernel被破坏掉了

来源:互联网 发布:php curl post 数据流 编辑:程序博客网 时间:2024/06/12 01:38

我把分区进行了调整,重启之后,kernel就启动不了了,开始一直认为是adb push 调用的问题,结果后来发现重启后,kernel就被破坏掉了。

分区表如下:

Creating 3 MTD partitions on "hi_sfc":
0x000000000000-0x000000100000 : "fastboot"
0x000000100000-0x000000180000 : "env"
0x000000180000-0x000000200000 : "envback"

Creating 16 MTD partitions on "hinand":
0x000000000000-0x000000100000 : "cfg"
0x000000100000-0x000000200000 : "cfgback"
0x000000200000-0x000000800000 : "recovery"
0x000000800000-0x000000e00000 : "recoveryback"
0x000000e00000-0x000001400000 : "deviceinfo"
0x000001400000-0x000001a00000 : "baseparam"
0x000001a00000-0x000002200000 : "logo"
0x000002200000-0x000002c00000 : "fastplay"
0x000002c00000-0x000014a00000 : "cache"
0x000014a00000-0x000015400000 : "misc"
0x000015400000-0x000015e00000 : "kernel"
0x000015e00000-0x000025e00000 : "system"
0x000025e00000-0x000038a00000 : "userdata"
0x000038a00000-0x000038f00000 : "commondata"
0x000038f00000-0x000039300000 : "blackbox"
0x000039300000-0x000040000000 : "sdcard"


每次调整分区之后,需要修改 /etc/vold.fstab 文件

里面有这么一句 

将sdcard分区挂载到/mnt/nand目录下

dev_mount block /mnt/nand auto /devices/virtual/mtd/mtd13/mtdblock13,因为这个mtd13正好对应的是kernel这个分区,这也就找到源头了,为啥kernel被破坏掉了。


将mtd13改成15,mtdblock13改成mtdblock15之后,重启机顶盒能够启动了。开始认为nand的flash是单独开始mtd的;


进入/dev/mtd下查看串行flash,是从mtd0 到mtd18的,也就是说sdcard对应的是mtd18,mtd15对应的是userdata分区


修改后,一切ok。