RK3128系统&驱动开发分享——(三)、系统启动

RK3128系统启动大致流程分三个阶段

1、boot启动,即rk3128MiniLoaderAll(L)_V2.31.bin和uboot.img启动

2、linux内核启动,即kernel.img的启动

3、android系统的启动,即ramdisk.img、system.img的启动。

这里讲解第三步。

android系统启动过程是从init进程开始的。(源码在/system/core/init/init.c,linux内核启动完成最后就会跳转到这个文件的main函数里)

Android的init进程主要功能:
1)、分析init.rc启动脚本文件,根据文件内容执行相应的功能;

init会 根据启动脚本中的配置启动各个service进程(入下图)。
2)、当一些关键进程死亡时,重启该进程;
3)、提供Android系统的属性服务;


init.rc脚本是一个初始化的配置文件,非常关键。

因为android采用ramdisk的方式挂载根文件系统,而init.rc文件就放在ramdisk里,所以系统启动后修改init.rc文件是无法保存住的。

可以采用两种方法修改:

(1)   有android源码的话从源码里直接修改,然后重新编译即可,直接修改/system/core/rootdir/init.rc

(2)   将ramdisk.img解包,修改后,再压包

下面详细说明第二种方法的步骤:

(1)       将ramdisk.img拷贝到某个目录下,如tmpdir。

(2)       进入tmpdir将ramdisk.img重命名为ramdisk.img.gz

命令:mv ramdisk.img ramdisk.img.gz

(3)       使用gunzip 解压ramdisk.img.gz

命令:gunzip  ramdisk.img.gz

(4)       在tmpdir目录下建立新目录,如ramdisk

命令:mkdir ramdisk

(5)       进入ramdisk目录

命令:cd ramdisk

(6)       解包

命令:cpio -i -F ../ramdisk.img

(7)       修改init.rc文件,并保存

(8)       打包

命令:cpio -i -t -F ../ramdisk.img > list

命令:cpio -o -H newc -O ../new.img < list

命令:gzip new.img

(9)       重命名new.img

命令:mv new.img ramdisk.img

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值