事件的过程如下:
内核在几个地方查找init并运行它找到的第一个
init运行/etc/rc.d/rc.sysinit
rc.sysinit做一组必需的事然后运行rc.serial (如果存在)
init在默认运行级别运行所有的script
init运行rc.local
默认的运行级别在/etc/inittab中定义. 您应该在前面有一行类似:
id:3:initdefault:
在这里, 您看到第二栏, 默认运行水平是3, 大多数系统都是这样. 如果您想修改它您可以手工编辑/etc/inittab改掉3. 在改inittab时需要非常小心. 如果您陷入困境, 您可以重启动并:
LILO boot: linux single
这将允许您以单用户模式启动, 并可修改inittab.
现在, 它如何运行所有正确的script? 如果您在rc3.d输入ls -l ,您可以看到:
lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local
您可以看到这个目录中没有真的文件, 只有对init.d目录中的script的连接. 这个连接在前面还有一个S和一个数字. S是指启动这个特定的script, K是指结束它. 数字是顺序. Init将根据顺序启动所有的services. 您可以重复数字, 但这只会把您搞混. 您只能用一个两位数字和一个大写的S或K来启动或结束您需要的 service。
Init如何启动和结束service? 很简单. 每个script都写了一个接收参数用来启动 和结束. 您可以用命令行来执行这些script, 如:
/etc/rc.d/init.d/httpd.init stop
结束httpd服务器. Init只需读文件名, 如果有K, 它就用stop参数调用script. 如果有S,则用start参数. 那么运行级别呢? 有些想要一个简单的方法将机器设置成多用途. 我可以有一个服务器运行级别, 运行httpd, 发送邮件, 网络等等. 然后, 我可以有一个用户运行级别, 运行xdm等等。
Init Runlevels
一般的, Red Hat Linux运行在级别 3---完全多用户模式. Red Hat Linux使用以下运行级别:
0
停止。
1
单用户模式.
2
没有NFS的多用户模式.
3
完全多用户模式.
6
重启动.
如果您的机器因为毁坏了/etc/inittab无法启动, 或者因为毁坏了/etc/passwd 不让您登录或者您忘了口令, 您可以在LILO提示下输入linux 1进入单用户模式. 您可以在这个模式下改正错误。
Initscript工具
chkconfig工具提供了一个简单的命令行的工具来维护/etc/rc.d 目录. 它使管理员不需要直接操作/etc/rc.d中的许多连接。
另外, ntsysv工具提供了面向屏幕的用户界面。
详情请参见chkconfig和ntsysv的man page
在启动时运行程序
在启动时或者修改运行级别时, 当所有的其他初始化完成后, 将执行文件/etc/rc.d/rc.local. 您可以在这增加新的初始程序. 例如, 您想启动更多的管理工具, 或者初始化打印机. 另外, 如果您需要串口设置, 您可以编辑/etc/rc.d/rc.serial, 它将在启动时自动运行.
默认地, /etc/rc.d/rc.local简单地用您的内核版本和机器类型创建一个好看的登录标志。
关闭
要关闭Red Hat Linux, 发出shutdown命令. 您可以阅读shutdown man page 得到完整的信息, 但是有两个最常见的用法:
shutdown -h now
shutdown -r now
每个都会干净地关闭系统. 在关闭之后, 前者会停止机器, 后者将重启动。
虽然现在如果运行在级别1至5, 可以用reboot和halt 命令来替代shutdown, 但这是一个坏习惯, 因为并不是所有类Linux的操作系统都有这个特性。