android init.rc 修改方法---adb shell 不能修改的原因

修改方法对于有源码能编译的朋友来说很简单

那就是直接找到源码android/out/target/product/xxxx/root文件夹下,xxxx代表你的产品名称

修改过后,重新编译源码,打包,烧录即可!


不能通过adb shell修改的原因(http://goo.gl/YVs1F   8楼)

init.rc 是 rootfs 中的文件,Android 将 rootfs(initramfs) link 到 linux kernel image 中,生成正常启动的boot.img, recovery 模式的 recovery.img.

Android 每次 reboot 的时候 bootloader 都要将 boot.img 加载到ram 中,其中一部分是真正的 linux kernel image (zImage), 另外一部分就是 initramfs (包含 init, init.rc, etc).
之后,Linux kernel 初始化的时候会把 initramfs 以 rootfs 类型 mount 到 / .
这样,你用 adb shell 或 串口 修改 / 上的init.rc, 因为下次重启会重新加载,你的修改自然就没了.

转载于:https://my.oschina.net/f839903061/blog/143092

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 系统中,init 进程会在系统启动时读取 init.rc 文件,并根据其中的配置项启动系统服务和进程。如果你想在 vendor.rc 或其他自定义的 rc 文件中指定一些配置项,在 init 进程启动时读取这些值并作为参数传递给某个服务或进程,可以按照以下步骤操作: 1. 在 vendor 目录下创建一个名为 vendor.rc 的文件,并在其中定义需要的配置项,如: ``` service myservice /system/bin/myservice --config_file=/vendor/etc/myservice.conf class main user system group system oneshot ``` 这个配置项定义了一个名为 myservice 的服务,它会执行 /system/bin/myservice 命令,并传递一个名为 config_file 的参数,值为 /vendor/etc/myservice.conf。 2. 在 init 进程启动时,会读取 vendor.rc 文件,并根据其中的配置项启动服务和进程。可以通过以下命令查看 init 进程启动时读取的 rc 文件列表: ``` adb shell getprop | grep init.svc ``` 如果 vendor.rc 文件被正确加载,你应该能够看到类似于以下的输出: ``` [init.svc.vendor]: [running] ``` 3. 在你的服务或进程中,可以通过以下方法读取配置项的值: ```c++ #include <android-base/properties.h> std::string config_file = android::base::GetProperty("myservice.config_file", ""); ``` 这个例子使用了 Android Base 库中的 GetProperty() 函数,它可以读取名为 myservice.config_file 的配置项的值。这个值就是在 vendor.rc 文件中定义的 /vendor/etc/myservice.conf。 需要注意的是,如果你的 rc 文件定义了多个配置项,它们的名称应该有一个统一的前缀,以便在服务或进程中读取时能够找到它们。在上面的例子中,我们使用了 myservice 前缀,因此在读取配置项时也需要使用这个前缀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值