解析 /etc/inittab

1 什么时候会用到/etc/inittab?

   Linux在完成核内引导以后,就开始运行init程序,它的进程号是1,是所有其他进程的起点。

   init需要读取/etc/inittab,该文件告诉init在它的每个运行级别上需要做哪些事情。

 

2 init共定义了七个运行级(run level),分别是什么?

   # Default runlevel. The runlevels used by RHS are:
   #   0 - halt (Do NOT set initdefault to this)
   #   1 - Single user mode
   #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
   #   3 - Full multiuser mode
   #   4 - unused
   #   5 - X11
   #   6 - reboot (Do NOT set initdefault to this)
  

   0 - 完全关闭系统的级别

   1 - 单用户模式

   2~5 - 多用户级别,5 为X Windows的登录进程

   6 - 重新引导级别

 

3 /etc/inittab如何定义系统默认的级别?

   其实,在/etc/inittab的开头就定义了系统默认启动到的级别,如:

   id:3:initdefault:

 

   id - 用来定义缺省的init运行的级别

   3 - 默认的级别为此 (Full multiuser mode)

   initdefault - 是关键字,表示默认的级别。

 

   系统管理员可以通过修改这条语句方便地修改默认的运行级别。

   在机器引导时,init从运行级0开始,一级一级往上运行到在/etc/inittab中所设置的默认运行级别。为了完成在每一对相邻运行级别之间的过渡,init运行在/etc/inittab中为这种过渡而说明的一些操作。当机器关闭时,以相反的顺序执行同样的处理过程。

  

4 init执行的第一个脚本是什么?

   马上/etc/inittab给出了init进程执行的第一个脚本。

   si::sysinit:/etc/rc.d/rc.sysinit

 

   对于Redhat来说,执行的顺序为:
   1) /etc/rc.d/rc.sysinit # 由init执行的第一脚本
   2) /etc/rc.d/rc $RUNLEVEL # init执行指定运行级别($RUNLEVEL为缺省的运行模式)的各脚本;
   3) /etc/rc.d/rc.local #运行模式2、3、5时会运行的脚本
   4) /sbin/mingetty(或getty) # 等待用户登录

5 七个运行级别需要启动的服务有所不同,它们在/etc/inittab中都有定义。

   l0:0:wait:/etc/rc.d/rc 0
   l1:1:wait:/etc/rc.d/rc 1
   l2:2:wait:/etc/rc.d/rc 2
   l3:3:wait:/etc/rc.d/rc 3
   l4:4:wait:/etc/rc.d/rc 4
   l5:5:wait:/etc/rc.d/rc 5
   l6:6:wait:/etc/rc.d/rc 6

   如果之前指定的默认运行级别是3,那么init就要执行/etc/rc.d/rc3.d目录中的脚本。

   /etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都  是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
   /etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

6 与启动或者重启相关的设置

   # 在启动过程中允许按CTRL-ALT-DELETE重启系统
   # Trap CTRL-ALT-DELETE
   ca::ctrlaltdel:/sbin/shutdown -t3 -r now
  
 # When our UPS tells us power has failed, assume we have a few minutes
 # of power left. Schedule a shutdown for 2 minutes from now.
 # This does, of course, assume you have powerd installed and your
 # UPS connected and working correctly.
 pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
  
 # If power was restored before the shutdown kicked in, cancel it.
 pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled
 

7 建立终端

   rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。通过按Alt+Fn(n对应1-6)可以在这6个终端中切换。在inittab中的以下6行就是定义了6个终端:

      1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  4:2345:respawn:/sbin/mingetty tty4
  5:2345:respawn:/sbin/mingetty tty5
  6:2345:respawn:/sbin/mingetty tty6

      从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

 

8 最后如果我们使用的是 run level 5 ,那么除了这六个终端机之外, init 还会执行/etc/X11/prefdm -nodaemon 其主要的功能就是在启动 X Window    

  # Run xdm in runlevel 5
  x:5:respawn:/etc/X11/prefdm -nodaemon

你可能感兴趣的:(UNIX/LINUX,学习心得)