Linux 开机程序之研讨( 六 )


受只能有两个字元的限制 .

runlevels : 指出下面一个栏位中的 action 以及 下下个栏位中的 process
会在那些 runlevel 中被执行 . 这一栏的合法值有 0,1,2...6
s 以及 S . 而在正常的启动程序之後 , Superuser 可以使用
telinit 这个指令来改变系统的 runlevel . 又因为在 LINUX 中
, runlevel 的预设值是 5 ( 等一下就会看到 ) 所以 , 只有
那些每一列中 runlevel 那栏有 5 这个值的 , 後面的 process
才会被启动 . 所以 , 我们就可以想像的到 : " 由於系统的
runlevel 不同 , 所起动的 process 也不尽相同 , 所以系统
起动的资源在每个不同的 runlevel 就会有差异存在 .

action : 这个栏位有一点复杂 , 在这个栏位中记录著 init 在启动相对应的
process 时 , 对 process 所采取的动作 , 而合法的动作有下面几项:

initdefault : 指出系统在启动时 , 预设进入的 run-level 值 ,
比如说 , 我们可以在 /etc/inittab 中找到下面这
一列 :; id:5:initdefault:
很明显的 , 系统将在启动时 , 进入 runlevel 为 5
的模式 . 当然 , 你可以把 5 改成 6 试试看 , 如
果你改成了 6 , 那将会执行 /etc/rc.d/rc.6 , 也
就是 run xdm . xdm 在以後有机会的话 , 将为各
位介绍 ......

sysinit : 在系统起动时 , 这个 process 会被执行 . 而所有 process
前的 action 中有 boot 及 bootwait 的 process , 必
须等到这些 action 为 sysinit 的 process 执行完之後
它们才能够执行 .

wait : 在起动一个 process 之後 , 若要再起动另一个 process , 则
必需等到这个 process 结束之後才能继续 .

respawn : 代表这个 process 即使在结束之後 , 也会重新被启动 ,
最典型的例子就是 getty ( 在 LINUX 中为 agetty ) .
看看下面的循环 :

--; getty --> login --> shell --> logout --
^; |
|------------------------------------------

即使在 getty 结束之後 , 它也会重新被启动 .

ctrlaltdel : 想必有人会以键盘上的 Ctrl , Alt , 及 Del 这三个
键来达到使系统 shutdown 的目的 , 现在我们果然在
/etc/inittab 中看到了这一列 :

ca::ctrlaltdel:/sbin/shutdown -t3 -rf now

所以说 , 当我们按下这三个键的时候 , init 会收到
SIGINT 这个 signal , 接著就执行 shutdown 的动作
不过 , 我们最好不要养成按 Ctrl-Alt-Del 来使系统
shutdown 的习惯 , 尤其在单人多工的作业系统 , 像
OS/2 , 甚至 Windows 95 , shutdown 几乎都是标准
的关机程序了 , 更何况是多人多工的 LINUX , 所以 ,
shutdown 这个指令是一定要熟悉的 .

除了上面的几个 action 之外 , 另外还有一些合法的 action , 但这
些 action 并不需要太注意 , 要用的时候再利用 man init 去查询就
可以了 .

process : 这一栏中可以是 shell script 或是可执行的程式 .

好了 , 当我们了解 /etc/inittab 中每一栏的意义之後 , 要看懂 /etc/inittab
就是一件轻松愉快的工作了 . 在 /etc/inittab 档中 , 我们可以看到下面这一段

c1:12345:respawn:/sbin/agetty 38400 tty1
c2:12345:respawn:/sbin/agetty 38400 tty2
c3:45:respawn:/sbin/agetty 38400 tty3
c4:45:respawn:/sbin/agetty 38400 tty4
c5:45:respawn:/sbin/agetty 38400 tty5
c6:456:respawn:/sbin/agetty 38400 tty6

简单来说 , 系统在起动之後会制造出六个虚拟的 console . 我想大家应该有试过
用 Ctrl-AltF1 - F6 可在这六个 console 之间切换 ; 若你使用 XWindows 时
想暂时回到 console 下时 , 可用 Ctrl-AltF1 - F6 这三个键来选择 , 若想
回到 XWindows 下时 , 只要以 Ctrl-Alt-F7 就可以回到 XWindows 下了 . 基本
上 , 对於 memory 比较少的人 , 可以不要开那麽多的虚拟 console , 那麽就可
以去掉上面的几列 . 还有 , 在前面我们也提过 , 可以把预设的 runlevel 从 5

推荐阅读