Ubuntu系统启动过程:从init到upstart的转变

6 下载量 150 浏览量 更新于2024-08-30 收藏 157KB PDF 举报
本文由杨硕,华清远见嵌入式学院讲师撰写,详细介绍了嵌入式系统/ARM技术中的Ubuntu系统启动过程,对比了Ubuntu与传统RedHat启动的区别,并阐述了Ubuntu采用upstart作为初始化系统的原因。 在传统的Linux系统如RedHat中,启动流程主要依赖于`/etc/inittab`文件,这是一个控制系统的运行级别和服务启动顺序的关键配置文件。然而,在Ubuntu系统中,由于`init`方法的串行执行方式导致启动时间较长,自Ubuntu 6.10版开始,系统开始采用`upstart`来替代`init`,以提高启动效率。 `upstart`的核心是Event机制,它将进程的启动和停止视为事件(Event)。在Ubuntu的`/etc`目录下,`event.d`子目录是`upstart`的中心,这里包含了用于控制和服务管理的各种事件配置文件。这些文件主要包括两类:`rc-default`和以`rcX`(X=0,1,2,3,4,5,6,S)以及`ttyX`(X=0,1,2,3,4,5,6,S)命名的文件。 `rc-default`文件类似于传统的`inittab`,用于定义系统默认的运行级别。通过查看`rc-default`,可以了解系统在不同运行级别下启动的服务。例如,`#rc-runlevelcompatibility`注释表明这是为了保持与旧的`init`系统兼容性。 `rcX`文件则对应于不同的运行级别,如`rc0`代表多用户无图形界面模式,`rc1`同`rc0`,`rc2`至`rc5`通常对应不同的图形界面运行级别,`rc6`是关机或重启级别,而`S`通常用于单用户模式。这些文件定义了在进入相应运行级别时应启动的服务。 `ttyX`文件则与终端设备关联,它们定义了当登录到特定TTY(Teletype)终端时,系统应该如何启动或关闭服务。 通过`upstart`,Ubuntu能够并行处理启动任务,从而加快了系统启动速度。此外,`upstart`还提供了更灵活的事件驱动模型,允许系统根据特定事件(如网络连接建立、硬件初始化完成等)来启动或停止服务,提高了系统的响应性和可扩展性。 Ubuntu的启动流程与RedHat相比,更加现代化和高效。它通过`upstart`的事件驱动机制,实现了服务的异步启动,优化了嵌入式系统资源有限情况下的启动性能,这对于ARM架构的嵌入式设备尤其重要,因为这些设备往往需要快速启动和高效的资源管理。