您的位置:首页 > 运维架构 > Linux

linux直接进入登陆页面,不能进入vi(解析/etc/inittab)

2010-08-21 15:27 671 查看
linux 默认运行级别为5,改为3,通过/etc/inittab来更改默认运行级别的!运行级就是操作系统当前正在运行的功能级别。
简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从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)

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐