1、sh服务
2、adbd 服务
3、servicemanager
4、vold
5、nexus
6、zygote
7、mediaserver
8、bootanimation
9、dbus
10、installd
11、keystore
1、sh服务
service console /system/bin/sh
console
sh服务是控制台服务,其实它是从NetBSD移植过来的,因此它的命令也是比较有限的,不过作为嵌入式系统,使用shell的机会不多。
sh服务的代码在目录:Android-2.0/system/core/sh
sh服务使用flex工具生成词法分析代码,使用bison生成语法分析代码。
2、adbd 服务
# adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
disabled
adbd服务的代码在目录:Android-2.0/system/core/adb
adbd 服务使用c语言实现,它不但可以在虚拟机里运行,也可以在实际的设备里运行。adbd服务是adb调试系统中的一部分,整个adb调试系统包括有三部分:手机运行的adbd服务、PC运行的服务器、PC运行的客户端。当android启动时,就运行adbd服务,创建一个调试端口,这样就可以让开发机器上的服务器连接过来,通过这个连接就可以发送调试信息给服务器,也可以接收到外面发送过来的调试命令。
3、servicemanager
service servicemanager /system/bin/servicemanager
user system
critical
onrestart restart zygote
onrestart restart media
servicemanager服务的代码在目录:
Android-2.0/frameworks/base/cmds/servicemanager
servicemanager 服务的作用主要是服务管理,所谓的服务管理其实就是获取服务、检查服务、添加服务、枚举所有服务。服务管理器是一个容器管理器,方便服务添加、调用和删除。在应用层的程序,都向这个服务管理器获取需要使用的服务,而所有提供服务的程序,都向这个服务器管理器注册自己的服务。服务管理器是应用程序与服务沟通的桥梁。
4、vold
service vold /system/bin/vold
socket vold stream 0660 root mount
vold服务的代码在目录:
Android-2.0/system/core/vold
vold服务的作用主要是负责完成系统的动态卷管理,比如CDROM、U盘、MMC卡等外存储的管理。当有这外存储设备插入时,就需要监视这种变化,并加载相应的驱动程序,然后报告给系统和应用程序有新存储设备可以使用。
Vold处理过程大致分为三步:
1.创建链接:
在vold作为一个守护进程,一方面接受驱动的信息,并把信息传给应用层;另一方面接受上层的命令并完成相应。所以这里的链接一共有两条:
(1)vold socket: 负责vold与应用层的信息传递;
(2)访问udev的socket: 负责vold与底层的信息传递;
这两个链接都是在进程的一开始完成创建的。
2.引导:
这里主要是在vold启动时,对现有外设存储设备的处理。首先,要加载并解析vold.conf,
并检查挂载点是否已经被挂载; 其次,执行MMC卡挂载; 最后,处理USB大容量存储。
3.事件处理:
这里通过对两个链接的监听,完成对动态事件的处理,以及对上层应用操作的响应。
5、nexus
service nexus /system/bin/nexus
socket nexus stream 0660 root system
disabled
nexus服务的代码在目录:
Android-2.0/system/core/nexus
nexus服务主要作用就是监听网络命令,提供网络管理的功能。
6、zygote
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
socket zygote stream 666
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
zygote服务的代码在目录:
Android-2.0/frameworks/base/cmds/app_process
zygote服务主要作用就是创建一个服务监听用户的命令,并且根据用户的命令创建应用程序运行。
7、mediaserver
service media /system/bin/mediaserver
user media
group system audio camera graphics inet net_bt net_bt_admin
mediaserver服务的代码在目录:
Android-2.0/frameworks/base/media/mediaserver
mediaserver服务是多媒体服务的守护进程,负责多媒体/照相机/音频等三项服务。
8、bootanimation
service bootanim /system/bin/bootanimation
user graphics
group graphics
disabled
oneshot
bootanimation 服务的代码在目录:
Android-2.0/frameworks/base/cmds/bootanimation
bootanimation 服务是开机动画,主要用来加载动画资源。
9、dbus
service dbus /system/bin/dbus-daemon --system --nofork
socket dbus stream 660 bluetooth bluetooth
user bluetooth
group bluetooth net_bt_admin
dbus服务的代码在目录:
Android-2.0/external/dbus/bus
dbus服务是android使用的一种特殊的进程间通讯系统。它具有面向对象接口的协议,以及应用程序之间互相发现和监视的守护进程。dbus设计用来作为用户与系统服务之间的分隔以及系统服务之间的通讯。因此,dbus通讯安全,但效率有点差。
10、installd
service installd /system/bin/installd
socket installd stream 600 system system
installd 服务的代码在目录:
Android-2.0/frameworks/base/cmds/installd
installd服务是提供安装dex文件的服务。
11、keystore
service keystore /system/bin/keystore /data/misc/keystore
user keystore
group keystore
socket keystore stream 666
keystore服务的代码在目录:
Android-2.0/frameworks/base/cmds/keystore
keystore服务是加解密储存键值的服务。它主要作用就是验证应用程序与签名文件是否一致。
(http://blog.csdn.net/yuleslie/article/details/6912168)
分享到:
相关推荐
`init.c`负责初始化系统环境,并加载`init.rc`文件;而`init.rc`则通过一系列预定义的规则来指定哪些服务应该被启动以及如何启动。深入理解这两部分的运作机制对于开发Android系统底层具有重要意义。
针对高通LA.1.1基线的Android源码,我们来深入探讨init.rc文件中涉及的服务启动流程,以及与之相关的zygote进程启动。 一、init.rc服务启动流程 1. **初始化阶段**:系统启动时,init进程首先读取init.rc文件。这...
在Android系统中,`init.rc`脚本是一个至关重要的组件,它是系统启动过程中最早执行的一批脚本之一,用于初始化系统服务、守护进程以及其他必要的设置。这篇博客文章可能详细介绍了`init.rc`脚本的工作原理及其在...
`init.rc` 文件在 Android 系统中扮演着至关重要的角色,它定义了系统启动时的一系列行为和服务。通过深入了解这些概念,我们可以更好地理解 Android 系统是如何初始化并管理其服务和资源的。这对于开发者来说是非常...
* oneshot:在服务退出后不重启。 * class <name>:为服务指定一个类别名。 * onrestart:当服务重启时执行一个命令。 * user <username>:在执行服务前改变用户名。 * group <groupname> [ <groupname> ]*:在执行...
在深入探讨Android系统启动流程时,`init.rc`脚本无疑扮演着核心角色。这份脚本是系统初始化过程中第一个被执行的脚本,负责设置系统环境、启动服务以及配置硬件设备。下面,我们将详细解析`init.rc`脚本中的关键...
例如,如果希望在运行级别 5 下启动 Apache 服务,可以在 `/etc/rc.d/rc5.d/` 中创建一个名为 `S20apache` 的符号链接指向 `/etc/rc.d/init.d/apache`。 #### 小结 综上所述,`/etc/rc.d/init.d/` 是存放系统服务...
- **init.rc文件结构**:`init.rc`文件采用了自定义的脚本语言(通常称为AIL语言),具有简单的语法结构,支持定义服务、动作、条件语句等。 - **解析流程**: - `init`进程调用`init_parse_config_file`函数来...
根据Android.mk文件,在构建过程中,init.rc文件会被安装到根文件系统中。 综上所述,init可执行程序及其相关脚本是Android系统启动和运行的基础。init程序的结构和工作原理理解透彻后,开发者可以更好地定制和优化...
`android init`是Android系统中一个非常重要的组件,它负责在系统启动时加载配置文件并按照配置文件中的指令启动一系列的服务和进程。`init`服务通过解析`init.rc`文件来确定系统的初始化步骤。本文将详细介绍`init....
init.rc文件包含了大量系统服务和脚本,其中包含了设备启动时执行的命令。通过在init.rc中添加或修改相应的启动指令,可以设置设备在插入电源后自动启动。 实现通电自动开机的步骤大致如下: 1. 使用【镜像助手】...
`init.rc`文件不仅包含系统的基本设置,还可能包含针对特定功能或组件的其他rc文件,比如与`zygote`相关的rc文件。 - `zygote`是Android中的核心进程,它是所有Dalvik或ART虚拟机实例的父进程,负责预先加载系统库...
2. **解析`/init.rc`和`/init.%hardware%.rc`文件**:`init`进程会解析这两个配置文件,这些文件定义了在系统启动过程中需要执行的各种动作和服务。 3. **执行早期初始化动作**:根据`/init.rc`中的定义,执行一...
在`initmain()`函数中,首先会加载并解析`init.rc`配置文件,该文件中定义了各种服务、事件和命令。解析过程涉及到多个类和方法,包括`Parser`和`SectionParser`等,它们负责将配置文件中的内容转换为内部数据结构...
3. **解析 init.rc**:`init` 进程读取并执行 `/system/etc/init.rc` 或 `/init.rc` 文件,这个文件包含了启动服务、创建挂载点和设置环境变量的指令。 4. **初始化服务**:根据 init.rc 文件的指示,`init` 启动...
例如,`init.rc`文件中定义了一个名为`zygote`的服务,该服务负责孵化Android应用的Dalvik或ART虚拟机实例。如果`zygote`因任何原因异常退出,init会检测到SIGCHLD信号,并根据配置重启`zygote`,保证系统的正常运行...
`init`是Linux内核加载完文件系统后的第一个运行程序,它负责整个Android系统的初始化工作。在不同的开发板上,启动参数可能有所不同,但基本流程是相似的。例如,S3C2410、S3C2440以及Marvell 310等开发板的启动...
总结来说,Android系统的启动始于内核加载`init`程序,通过解析配置文件执行一系列初始化操作,包括设备管理、服务启动和属性设置。在这个过程中,`init`作为核心管理者,确保了系统正确、有序地启动并进入运行状态...
1. 初始化日志系统:解析init.rc文件,执行"early-init"行动。 2. 初始化设备:创建设备节点,加载固件。 3. 初始化属性服务器:执行"init"行动,设置属性服务。 4. 开启属性服务:执行"early-boot"和"boot"行动,...
5. **服务启动**:`init`进程会根据`/init.rc`文件中的指令,启动各种守护进程和服务。 #### 三、Android文件系统初始化核心`init.c`文件分析 `init.c`文件是Android文件系统初始化的核心部分,它定义了`init`进程...