[Android-Frameworks] Analysis init.rc in Android

本文详细介绍了如何配置init.rc文件,将其从vendor目录下的文件整合到AndroidBoard.mk中。并通过验证步骤检查了文件的位置和关键属性。此外,解释了init.rc文件的解析过程及其在Android启动过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android Init.rc Anslysis

  1. 如何配置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"
     -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值