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)
分享到:
相关推荐
针对高通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程序的结构和工作原理理解透彻后,开发者可以更好地定制和优化...
init.rc文件包含了大量系统服务和脚本,其中包含了设备启动时执行的命令。通过在init.rc中添加或修改相应的启动指令,可以设置设备在插入电源后自动启动。 实现通电自动开机的步骤大致如下: 1. 使用【镜像助手】...
`init.rc`文件不仅包含系统的基本设置,还可能包含针对特定功能或组件的其他rc文件,比如与`zygote`相关的rc文件。 - `zygote`是Android中的核心进程,它是所有Dalvik或ART虚拟机实例的父进程,负责预先加载系统库...
在`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`进程...