`
Fangrn
  • 浏览: 800046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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应该运行第四个字段内的命令一次,而且i
nit应该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2
时所需的任何命令。
  第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的
服务,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命
令也不同,而且运行级别的配置也是有差别的。
  init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级
别:
  id : 2 : initdefault :
  你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“sing
le”或“emergency” 命令行参数来实现的。比如说,内核命令行参数的指定可通过LI
LO来执行。这样一来,你就可以选择单用户模式了(即运行级别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。
  上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的initta
b手册页。
  五、在单用户模式下引导
  一个重要的运行级别就是单用户模式(运行级别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口令,那么可以让机器启动进入单用户状态。在启动后的 l
ilo 提示符下输入:
  init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过
所有系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级

分享到:
评论

相关推荐

    Linux 运行级init详解

    Linux 启动时需要哪些步骤呢?本文将详细描述不同的运行级在启动中的作用。

    深度:一文看懂Linux内核!Linux内核架构和工作原理详解

    理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念Linux内核的任务:1.从技术层面讲,内核是硬件与软

    LINUX系统开发技术详解---基于ARM

    ║2 嵌入式系统开发技术详解——基于ARM 3.1 Linux 常用工具.............................................................................................................. 28 3.1.1 Shell简介..................

    Linux启动服务详解

    作为RED HAT LINUX的启动来说,如果只是个人使用的话,只需要启用以下服务,如果还在精减的话,只启用Network就可,这是Fedora core 2启动服务. acpid:提供高级电源管理。 cpuspeed:可以提高系统运行效率。 crond:执行...

    嵌入式Linux应用程序开发详解

    2.2 Linux启动过程详解 50 2.2.1 概述 51 2.2.2 内核引导阶段 51 2.2.3 init阶段 52 2.3 Linux系统服务 54 2.3.1 独立运行的服务 55 2.3.2 xinetd设定的服务 56 2.3.3 设定服务命令常用方法 56 2.4...

    Linux内核驱动详解

    linuxdriver_code_tool |-- 03 | `-- 2.6内核升级工具 | |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- ...

    Linux关机命令详解

    Linux关机命令详解在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令...

    Linux 设备驱动开发详解 代码

    Linux 设备驱动开发详解 linuxdriver_code_tool |-- 03 | `-- 2.6内核升级工具 | |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools...

    linux内核驱动详解2

    | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数范例 | | `-- book.c | |-- 内核模块导出符号 | | `-- export_symb.c | `-- 最简单的内核模块 | `-- hello.c |-- ...

    linux内核驱动详解1

    | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数范例 | | `-- book.c | |-- 内核模块导出符号 | | `-- export_symb.c | `-- 最简单的内核模块 | `-- hello.c |-- ...

    Linux 使用init命令实现关机,重启,切换模式

    主要介绍了Linux 使用init命令实现关机,重启,切换模式的相关资料,需要的朋友可以参考下

    Linux C 多线程编程之互斥锁与条件变量实例详解

    在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请...

    linux自启动设置.txt

    Linux自启动设置详解 [ 作者: 加入时间:2007-07-19 11:41:06 来自:Linux联盟收集整理 ] 前言 linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。 阅读之前建议先看...

    LINUX 设备驱动开发详解 源码

    .....................\..\...............\module-init-tools-3.2.2.tar.bz2 .....................\..\...............\modutils-2.4.5-1.src.rpm .....................\04 .....................\..\内核...

    嵌入式Linux应用程序开发标准教程(第2版全)

    2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关命令 2.4 实验内容 2.4.1 在Linux下解压常见软件 ...

    Linux 平台下的 ilitek 触摸屏驱动

    Linux 平台下的 ilitek 触摸屏驱动。 包内是对Linux平台下的ilitek驱动。适用于mtk,allwin,rockchip,amlogic等不同平台下的ilitek触摸屏驱动,内含区分不同平台的配置说明文档.通过宏来区分不同的平台。 ilitek tp ...

    linux etc/rc.d 系统启动服务详解

    介绍linux /etc/rc.d目录下的配置文件的功能详解,系统启动的服务配置等

Global site tag (gtag.js) - Google Analytics