Linux引导过程与故障排除|第3章:Upstart管理系统启动过程和服务
Synopsis: Upstart 由 Ubuntu 所开发,它基于事件驱动模型(event-based),能够在监听到事件发生后以异步的方式响应事件,从而实现并行启动服务进程(引导过程更快)。同时可以按需启动服务,比如在系统运行期间插入 USB 设备后,会触发相应的事件,此时 Upstart 才启动对应的服务
1. Upstart 介绍
传统的 SysVinit 程序以 串行 的方式依次启动各服务,但是有些服务之间根本就没有依赖关系,应该让它们并行启动以加快启动效率才对
在 Linux 主要应用于服务器的时代,由于很少重启机器,所以 SysVinit 运行非常良好。如果需要更换硬件,则会先关闭系统,安装完新硬件后再重启系统。但是,随着 Linux 的不断发展,越来越多的便携式设备(笔记本电脑或嵌入式设备)也开始使用 Linux 系统,桌面系统或便携式设备的一个特点是经常重启,而且要频繁地使用硬件 热插拔 技术。现代 Linux 系统已经可以处理动态添加或删除新硬件设备,但是 SysVinit 系统本身无法处理这种硬件动态变化
于是,Ubuntu 的研发人员开发了一套新的 init 系统,它就是 Upstart。它基于 事件驱动模型(event-based) ,能够在监听到 事件 发生后以 异步 的方式响应事件,从而实现并行启动服务进程。同时可以按需启动服务,比如在系统运行期间插入 USB 设备后,会触发相应的事件,此时 Upstart 才启动对应的服务。更详细的介绍,请参考: http://upstart.ubuntu.com/cookbook/ 或附件
Upstart 的两个重要组件为 jobs 和 events
1.1 Job
job 是指一个 工作单元(a unit of work),也可以称为 Task 或 Service。job 的配置文件一般命名为 <name>.conf,所有系统 job 都保存在 /etc/init/ 目录下,而用户 job 保存在 $HOME/.init/ 目录下
[root@CentOS ~]# ls -l /etc/init/ total 68 -rw-r--r--. 1 root root 412 Oct 10 2013 control-alt-delete.conf -rw-r--r--. 1 root root 130 Jun 25 2013 init-system-dbus.conf -rw-r--r--. 1 root root 463 Oct 10 2013 kexec-disable.conf -rw-r--r--. 1 root root 560 Oct 10 2013 plymouth-shutdown.conf -rw-r--r--. 1 root root 357 Oct 10 2013 prefdm.conf -rw-r--r--. 1 root root 505 Oct 10 2013 quit-plymouth.conf -rw-r--r--. 1 root root 417 Oct 10 2013 rc.conf -rw-r--r--. 1 root root 1046 Oct 10 2013 rcS.conf -rw-r--r--. 1 root root 430 Oct 10 2013 rcS-emergency.conf -rw-r--r--. 1 root root 725 Oct 10 2013 rcS-sulogin.conf -rw-r--r--. 1 root root 2915 Nov 23 2013 readahead-collector.conf -rw-r--r--. 1 root root 1559 Nov 23 2013 readahead.conf -rw-r--r--. 1 root root 726 Nov 23 2013 readahead-disable-services.conf -rw-r--r--. 1 root root 1302 Oct 10 2013 serial.conf -rw-r--r--. 1 root root 791 Oct 10 2013 splash-manager.conf -rw-r--r--. 1 root root 473 Oct 10 2013 start-ttys.conf -rw-r--r--. 1 root root 335 Oct 10 2013 tty.conf
关于 job 配置文件的语法(各配置段的含义)请参考 man 5 init 或 http://upstart.ubuntu.com/cookbook/

1.2 Event
event 也可以称为 signal / method / hook,事件会被 emitted(created and then broadcast) 到整个 Upstart 系统,系统启动时会产生 startup 事件,请参考 man 8 init 和 man 7 startup
另外,管理员可以通过如下命令随时发送事件:
Upstart 有一组特殊的事件,可以使用它们来通知 job 进行状态转换:
0 条评论
评论者的用户名
评论时间暂时还没有评论.