Android Init.rc Anslysis
- 如何配置init.rc
our init.*.rc files to this one via use of the Android.mk
PRODUCT_INIT_RC_FILES variable. See AndroidBoard.mk.
-
-
./vendor/intel/mfld_pr2/AndroidBoard.mk
- /vendor/intel/common/init.rc
- Android board dependence
-
-
比较后可能的位置
/system/core/rootdir/init.rc
-YES
/device/intel/aboot/fastboot/etc/init.rc
-NO
-
-
验证: 添加关键字"LEON_fastboot", "LEON_rootdir"
*
on property:sys.usb.config=LEON_ROOTDIR
stop adbd
*
*
on property:sys.usb.config=LEON_FASTBOOT
stop adbd
*
-
find . -name '*.rc' -print | xargs grep -inr 'mtp'
./out/target/product/mfld_pr2/recovery/root/init.rc:89:on property:sys.usb.config=mtp,adb
./out/target/product/mfld_pr2/root/init.rc:829:on property:sys.usb.config=mtp
./out/target/product/mfld_pr2/root/init.rc:842:on property:sys.usb.config=mtp,adb
./out/target/product/mfld_pr2/droidboot/root/init.rc:65:on property:sys.usb.config=mtp,adb
./bootable/recovery/etc/init.rc:89:on property:sys.usb.config=mtp,adb
./bootable/droidboot/init.rc:65:on property:sys.usb.config=mtp,adb
./device/samsung/tuna/init.tuna.usb.rc:11:on property:sys.usb.config=mtp
./device/samsung/tuna/init.tuna.usb.rc:19:on property:sys.usb.config=mtp,adb
./device/intel/aboot/fastboot/etc/init.rc:55:on property:sys.usb.config=mtp,adb
./device/moto/wingray/init.stingray.usb.rc:9:on property:sys.usb.config=mtp
./device/moto/wingray/init.stingray.usb.rc:17:on property:sys.usb.config=mtp,adb
./hardware/intel/factory/etc/init.rc:53:on property:sys.usb.config=mtp,adb
./vendor/intel/medfield/init.mfld.usb.rc:79:on property:sys.usb.config=mtp <=== This is what I want!
./vendor/intel/medfield/init.mfld.usb.rc:92:on property:sys.usb.config=mtp,adb
****
./vendor/intel/medfield/init.mfld.usb.rc
****
2. 谁在解析init.rc文件
- Android启动后通过init process完成解析init.rc任务,通过search init.rc中调用"int main"入口的代码。即是init process实现代码。
system/core/init/init.c
- Android.mk
-
- LOCAL_SRC_FILES := ... \
-
- property_service.c \
- parser.c \
- ueventd.c \
- ueventd_parser.c \
- init_parser.c \
- LOCAL_MODULE := init
- queue buildin action
- start property service, create socket, listen it
- read init.rc property flagment, add to local queue
- when set property, occure MSG_SET to property service
-
init process invoke property_service, property_service read local 'property', like this
#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"
#define PROP_PATH_SYSTEM_BUILD "/system/build.prop"
#define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop"
#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
//niuhuiling add systemprop
#define PROP_PATH_SYSTEM_PROP "/system/etc/system.prop"
#define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop"
#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
//niuhuiling add systemprop
#define PROP_PATH_SYSTEM_PROP "/system/etc/system.prop"
-