Android之android系统启动流程

嵌入式Linux主要有这几部分:

Bootloader:主要用于引导Linux内核到内存中,让内核进行自解压并运行

zImage:带自解压的Linux内核

<Board>.dtb:每个型号的主板都有对应的设备树(保存对应的设备型号等信息,实现驱动和                  设备分离)

rootfs.img:Linux根文件系统,用于支持Linux内核运行的最小文件系统

                (其实Android系统也是属于Linux文件系统的一种)

Android系统主要有这几部分:

Bootloader:主要用于引导Linux内核到内存中,让内核进行自解压并运行

zImage:经过修改的支持Android的带自解压的Linux内核

ramdisk.img:与Linux根文件系统类似,Linux内核启动后挂在这个文件系统

system.img:这个是Android的文件系统(保存Android程序),Linux内核挂在ramdisk.img               后才挂在这个文件系统,继续启动Android系统的程序。

user.data:用户数据文件,相当于数据盘,保存Android系统用户的数据信息。

Linux部分的编译

配置Linux内核

       make  ARCH=arm  CROSS_COMPILE=arm-linux-  menuconfig

编译Linux内核

       make  ARCH=arm  CROSS_COMPILE=arm-linux-  zImage

编译驱动模块

       make  ARCH=arm  CROSS_COMPILE=arm-linux-  modules

Android部分的编译

编译完整的Android系统

       source  build/envsetup.sh

       lunch

       make

单独编译Android的ramdisk.img

       make ramdisk

单独编译system文件系统

       make snod

单独编译Android模块

       mmm 模块目录(需要有Android.mk)

Android系统启动流程

Bootloader 将zImage引导到内存后,zImage开始进行自解压得到vmlinux,然后开始初始化CPU、MMU等硬件,初始化Linux运行环境,挂在ramdisk.img根文件系统,然后运行init进程,init读取init.rc脚本文件,启动各种系统进程和系统服务(其中包括Zygote服务),

Zygote进程初始化虚拟机并启动sysem_server进程,system_server进程作为嫡长子进程会启动各种Android的framework服务实现Android系统的启动,服务启动完毕后会通知Zygote进程启动HOME桌面应用程序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值