1、华为手机分区信息:
1|shell@android:/ $ df
df
Filesystem Size Used Free Blksize
/dev 196M 64K 196M 4096
/mnt/asec 196M 0K 196M 4096
/mnt/obb 196M 0K 196M 4096
/cache 189M 4M 184M 4096
/system 1010M 741M 268M 4096
/data 1G 803M 332M 4096
/cust 79M 22M 57M 4096
/storage/sdcard1 1G 1G 20M 4096
/storage/sdcard0 7G 1G 6G 32768
shell@android:/dev/block $ cat /proc/partitions
cat /proc/partitions
major minor #blocks name
179 0 3817472 mmcblk0
179 1 20 mmcblk0p1
179 2 300 mmcblk0p2
179 3 133120 mmcblk0p3
179 4 1 mmcblk0p4
179 5 12288 mmcblk0p5
179 6 4096 mmcblk0p6
179 7 4096 mmcblk0p7
179 8 3072 mmcblk0p8
179 9 3072 mmcblk0p9
179 10 3072 mmcblk0p10
179 11 4096 mmcblk0p11
179 12 8192 mmcblk0p12
179 13 20480 mmcblk0p13
179 14 4096 mmcblk0p14
179 15 196608 mmcblk0p15
179 16 81920 mmcblk0p16
179 17 1048576 mmcblk0p17
179 18 1179648 mmcblk0p18
179 19 1105920 mmcblk0p19
179 32 7639040 mmcblk1
179 33 7634944 mmcblk1p1
二、recovery 分区:
在这里主要是将bootcmd_android_recovery这个环境变量加到uboot启动的environment中,这样当系统启动加载完 root fs之后将不会进入到android的system中,而是进入到了recovery这个轻量级的小UI系统中。
下面我们来看看为什么在uboot的启动环境变量中加入bootcmd_android_recovery这些启动参数的时候,系统就会进入到 recovery模式下而不是android system,先看看bootcmd_android_recovery相应的参数:
#define CONFIG_ANDROID_RECOVERY_BOOTARGS_MMC \
"setenv bootargs ${bootargs} init=/init root=/dev/mmcblk1p4" \
"rootfs=ext4 video=mxcdi1fb:RGB666,XGA ldb=di1 di1_primary"
#define CONFIG_ANDROID_RECOVERY_BOOTCMD_MMC \
"run bootargs_android_recovery;" \
"mmc read 0 ${loadaddr} 0x800 0x2000;bootm"
可以看到在进入recovery模式的时候这里把root的分区设置成了/dev/mmcblk1p4,再来看看在系统烧录的时候对整个SD卡的分区如下:
sudo mkfs.vfat -F 32 ${NODE}${PART}1 -n sdcards
sudo mkfs.ext4 ${NODE}${PART}2 -O ^extent -L system
sudo mkfs.ext4 ${NODE}${PART}4 -O ^extent -L recovery
sudo mkfs.ext4 ${NODE}${PART}5 -O ^extent -L data
sudo mkfs.ext4 ${NODE}${PART}6 -O ^extent -L cache
这里NODE = /dev/mmcblk1为挂载点,PART = p或者为空,作为分区的检测。可以看出上面在给recovery分区的时候,用的是/dev/mmcblk1p4这个分区,所以当设置了recovery 启动模式的时候,root根目录就被挂载到/dev/mmcblk1p4这个recovery分区中来,从而进入recovery模式。