Linux init详解(转)

Linux init详解

  一、什么是INIT:
  init是Linux系统操作中不可缺少的程序之一。
  所谓的init进程,它是一个由内核启动的用户级进程。

  内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。

  内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

  二、运行级别
  那么,到底什么是运行级呢?
  简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。
  不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
  # 0 - 停机(千万不能把initdefault 设置为0 )
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 (xwindow)
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )
  这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d
目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d
目录。(这里的n 就是运行级0-6)
  三、运行级别的配置
  运行级别的配置是在/etc/inittab行内进行的,如下所示:
  12 : 2 : wait : / etc / init.d / rc 2
  第一个字段是一个任意指定的标签;
  第二个字段表示这一行适用于运行那个级别(这里是2);

  第三个字 段表示进入运行级别时,init应该运行第四个字段内的命令一次,而且init应该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2时所需的任何命令。

  第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的服务,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命令也不同,而且运行级别的配置也是有差别的。

  init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别:
  id : 2 : initdefault :
  你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“single”或“emergency”
命令行参数来实现的。比如说,内核命令行参数的指定可通过LILO来执行。这样一来,你就可以选择单用户模式了(即运行级别1)。
  系统正在运行时,telinit命令可更改运行级别。运行级别发生变化时, init 就会从/etc/inittab运行相应的命令。

  四、/etc/inittab中的特殊配置
  /etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:

  1. powerwait
  允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源已被切断的软件。

  2. ctrlaltdel

  允许init在用户于控制台键盘上按下C t r l + A l t + D e l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C
t r l + A l t + D e l组合键配置为别的行为,比如忽略等。
  3. sysinit
  系统启动时准备运行的命令。比如说,这个命令将清除/tmp。
  上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的inittab手册页。
  五、在单用户模式下引导

  一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。

  一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行,
init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。

  有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。

  如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f
s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。
  由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L
I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。

  不同的运行级有不同的用处,也应该根据自己的不同情形来设置。
  例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo 提示符下输入:
  init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你可以使用passwd
程序来改变root口令,然后启动到一个新的运行级。

http://www.embeddedlinux.org.cn/html/xinshourumen/200809/27-130.html

时间: 2024-08-08 01:40:25

Linux init详解(转)的相关文章

《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——导读

前言 嵌入式Linux软硬件开发详解--基于S5PV210处理器 近年来,嵌入式技术和嵌入式产品发展势头迅猛,其应用领域涉及通信产品.消费电子.汽车工业.工业控制.信息家电.国防工业等各个方面.嵌入式产品在IT产业以及电子工业的经济总额中所占的比重越来越大,对国民经济增长的贡献日益显著.随着智能手机.媒体播放器.数码相机和机顶盒等嵌入式产品的普及,嵌入式系统的知识在广大民众中的传播也越来越广泛.出于对嵌入式高科技知识的追求,广大在校学生纷纷选修嵌入式系统课程,以获得嵌入式系统的理论知识和开发技能

Linux基本配置和管理 4 Linux系统启动详解

1 系统启动的流程 BIOS -> MBR+boot code -> 执行引导程序: GRUB -> 加载内核 -> 执行init -> 运行runlevel 2 启动详解 1 BIOS 1 BIOS 指的是基本的输入输出系统(basic input output system),一般保存在主板上的BIOS芯片中 2 计算机启动的第一步一般都是先启动BIOS,然后BIOS去检查硬件以及查找可启动的设备 3 可启动的设备可以在BIOS中进行设置,包括USB , CDROM ,

Linux 中断详解 【转】

转自:http://blog.csdn.net/tiangwan2011/article/details/7891818 原文地址 http://www.yesky.com/20010813/192117.shtml 方法之三:以数据结构为基点,触类旁通 结构化程序设计思想认为:程序 =数据结构 +算法.数据结构体现了整个系统的构架,所以数据结构通常都是代码分析的很好的着手点,对Linux内核分析尤其如此.比如,把进程控制块结构分析清楚 了,就对进程有了基本的把握:再比如,把页目录结构和页表结构

Linux系统调用详解(实现机制分析)--linux内核剖析(六)

系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制.也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call).在linux中系统调用是用户空间访问内核的唯一手段,除异常和陷入外,他们是内核唯一的合法入口. 一般情况下应用程序通过应用编程接口API,而不是直接通过系统调用来编程.在Unix世界,最流行的API

linux目录详解linux目录结构详细分析_unix linux

根文件系统一般应该比较小,因为包括严格的文件和一个小的不经常改变的文件系统不容易损坏.损坏的根文件系统一般意味着除非用特定的方法(例如从软盘)系统无法引导,所以不应该冒这个险.根目录一般不含任何文件,除了可能的标准的系统引导映象,通常叫/vmlinuz .所有其他文件在根文件系统的子目录中. /bin 引导启动所需的命令或普通用户可能用的命令(可能在引导启动后). /sbin 类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用. /etc 特定机器的配置文件. /root root

linux系统服务详解

1.NetworaManager:在无线和有线网络之间快速切换.一般用于移动终端. 2.NetworkManagerDispatcher:在多种网络环境之间来回切换,与NetworkManager相同. 3.acpid:(没有预设端口)电源管理配置服务. 4.anacron:(没有预设端口)一个自动化运行任务.Red Hat Linux 随带四个自动化任务的工具:cron.anacron.at.和 batc.当你的Linux主机并不是全天候开机,这个anacron就可以帮你执行在"chontab

Oracle有关Linux常见问题详解

Oracle 对 Linux 的策略是什么? Oracle 完全支持 Linux 操作系统.事实上, Oracle 是第一个可用于 Linux 的商业数据库.通过使用 Oracle 业界领先的产品来支持 Linux ,我们可以使用户在最廉价的硬件和操作系统的基础架构上部署企业级解决方案.由于用户寻求开放的.经济高效的解决方案,所以我们相信 Linux 将比过去更富吸引力. 在过去几年里, Oracle 和它的客户已经掌握了大量有关在 Linux 上运行 Oracle 以进行企业级部署的知识.将这

Linux终端设备详解

终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备.tty是Teletype的缩写.Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的.在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种: 1.串行端口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备.计算机把每个串行端口都看作是一个字符设备.有段时间这些串行端口设备通常被

linux基础命令(25) linux文件属性详解

Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或 修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@localhost test]# ls -lih 总计 316K 2095120 lrwxrwxrwx 1 root root   11 11-22 06:58 linklog.log -> log2012.log 2095112 -rw-r--r-- 1 root root 296K 11-13 06: