Android系统启动简述

1)BootLoader(引导加载器)运行到一定阶段后,将加载并启动Linux内核。准备启动内核时,BootLoader需要传入内核使用的启动参数。查看启动参数可使用下面的命令:

cat /proc/cmdline

root=/dev/nfs nfsroot=192.168.6.158:/home/houshuaihui/nfs/bcm7241-rootfs rw, ip=192.168.6.159:192.168.6.158:192.168.88.1:255.255.0.0:ccdt-stb:eth0:on  mtdparts=spi0.0:1M(cfe),64
K(macadr),64K(nvram),64K(stbid),64K(disp_format),64K(encryption),-(others);brcmnand.0:10M(kernel),20M(recovery),10M(splash),10M(misc),300M(ubi_fs),1200M(ubi_data),400M(ubi_cache),80M(ubi_dvb) init=/init bmem=128M@128M bmem=345M@512M

2)Linux内核运行和加载文件系统。根文件系统可以有内核参数“root”来指定。如上一条红色标注(root=/dev/nfs),标示使用NFS网络文件系统。


3)Linux内核运行根文件系统中一个名称为init的可执行程序,作为用户空间的第一个进程。init程序运行后,程序将会在根目录中找到名称为init.rc的文件作为启动脚本。


4)挂载各个文件系统,当几个文件系统(system、data、cache等)被加载后,才可以使用system/lib中的动态库和system/bin中的可执行程序。


5)系统各个进程的运行init可执行程序后,其执行的第一个子进程的名称为uevent的可执行程序。它在系统的初始化的最初阶段运行,在默认的init.rc中,on early-init定义了启动uevent的可执行程序。init运行完成初始化后,将会按照Init.rc脚本中的内容运行系统中的各个服务。

         使用ps命令可以看到系统中的各个进程:

   USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
   root           1        0          412    260      00000000 0008bd64 S /init
   root           2        0            0         0        00000001 00000000 S kthreadd

   root           3        2            0         0        00000000 00000000 S ksoftirqd/0
   root           4        2            0         0        00000000 00000000 S kworker/0:0

  system    2136   1          1100   308     00000000 7742db84 S /system/bin/servicemanager
  root         2138    1         5112   860      ffffffff           77d65544 S /system/bin/vold

  root         2273    1      416796 16920 ffffffff            7751ed34 S zygote

    。。。

    1号进程为用户空间进程init,2号进程为内核空间进程kthreadd。通常情况下用户空间的各个进程均以1号进程作为祖先,内核空间进程均以2号进程作为祖先。(PPID为父进程号)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值