本节描述红帽子LINUX在Boot和shutdown时的内部处理过程。我们先丛讨论 /etc/sysconfig下的文件开始。
以下内容将粗略的讲述一下目录/etc/sysconfg下的各种文件,它们的功能和内容。
通常/etc/sysconfig目录下面会有以下几个文件:
让我们分别了解一下每个文件的内容。
-- 文件/etc/sysconfig/clock控制从系统时钟读出数据的解释。红帽子LINUX早先的版本 使用以下数值(它们已经过时):
而目前使用的数值如下:
true--(仅适用于基于Alpha的系统)表示ARC主控的每四十二年时间偏移有效; 任何其它值表示使用UNIX通常的开元计时。
-- 文件/etc/sysconfig/keyboard控制键盘的功能。可以使用以下数值:
--文件/etc/sysconfig/mouse用以指定有关可用鼠标的信息,可使用以下数值:
补充一句,文件/dev/mouse是指向真正鼠标设备的符号连接。
-- 该文件用以指定有关网络配置的信息。可以使用以下数值:
请注意:为保证与用户以前已安装的软件的兼容性,文件/etc/HOSTNAME应当 与这里设置的值相同。
(当前的红帽子LINUX在安装时默认设置为“no”(符合RFC规范),如果FORWARD_IPV4 不加以设置的话,系统将允许转发,以保持同红帽子LINUX4.2及其以前版本的兼容性。)
--该文件用来指定PCMCIA配置信息。使用以下数值:
yes -- 支持PCMCIA设备。 no -- 无须支持PCMCIA设备?
-- 该文件用以为amd指定操作参数。可以使用以下数值:
-- 该文件用以指定磁带相关的配置信息。可以使用下列信息:
/etc/sysconfig/network-scripts下通常存在以下文件:
让我们分别加以讨论。
--它们是分别指向/sbin/ifup和/sbin/ifdown的符号连接,这是该目录下唯一可以直接调用 执行的脚本,由这两个脚本来调用其它的脚本程序。这里的这两个符号连接仅为了一 致才放在这里。它们可能从未来的版本中删去,因此当前应当仅使用/sbin/ifup,/sbin/ifdown 命令。它们需要使用一个命令行参数:设备的名称(如:eth0)。它们在boot时还指定第 二个参数"boot",这样可以忽略被设置成无需在boot时激活的的设备(ONBOOT=no)。
--这并不是一个真正公开的命令文件。它包括了用于激活和关停接口设备的脚本函数。 特别的,其中大多数代码被用来处理第二种接口配置和以网络报告的形式进行接口配 置变化通知。
--第一个文件定义了一接口信息,第二个文件用以定义与一个“克隆”(也就是 第二可用的)接口配置不同的信息。举个例子,除了网络号不同外,也许别的都一 样,于是“克隆”的文件中只包含有网络号,而所有的设备信息都被放在基本的ifcfg 文件中。
ifcfg文件中可以定义的条目与接口类型有关。
以下各值常见于所有的基本配置文件中:
以下是所有PPP和SLIP文件所使用的数值:
以下数值适用于所有的PPP文件:
(这里代表了一种简化的接口;它不让用户指定使用escape字符。然而,几乎任何 情况下都可以使用一个00000000的asyncmap,而且如果需要的话,可以通过设置 PPPOPTIONS来使用任意的asyncmap.)
注意选项“remotename”总是指定为逻辑ppp设备名,如“ppp0”(如果先前有 其它ppp设备被激活的话,这就可能是物理设备ppp1)这样做便于管理pap/chap 文件--name/passwd对与逻辑ppp设备名关联,因此它们可以被一起管理。理论上 说,为逻辑PPP设备起除“ppp0”--“pppN”之外的如“worldnet”或”myISP“ 的名字是可行的。
-- 该文件是建立PPP或SLIP连接的chat脚本。对于SLIP设备,要据chat脚本写出一个DIP 脚本,而对于PPP设备chat脚本将被直接使用。
--这个只写的脚本是由netcfg从chat脚本建立的。请不要改动这个文件。在未来的版本中 该文件将消失,代之以“运行时构造”于chat的脚本。
--当任何网络设备(SLIP设备除外)被激活时就会调用该文件。调用 /etc/sysconfig/network-scripts/ifup-routes以根据该设备装载静态路由。装载该设备的别名。 如果未设置主机名时,设置主机名。该设备的每个ip将会有一主机名。向任何要求 网络事件通知的程序发送SIGIO信号。还可以按照需要被括展为用以修正名字服务配置, 调用任意脚本等等。
--当dhcp配置一旦完成,dhcpd将调用该文件;根据dhcpd放置于/etc/dhcpc/resolv.conf的版本 设置/etc/resolv.conf.。
这一节简要讲述boot的内部过程。基本上详细描述了Sys V init的boot过程及与以往版本 的LINUX init的差别。Init是由核心在系统boot时运行的程序。由它负责启动所有的需 要在boot时运行的进程。其中包括供您登入的getty,NFS守护进程,FTP守护进程, 以及任何需要机器在boot时启动的进程。
Sys V init迅速成为LINUX世界中boot时启动进程的标准。因为它比BSDinit更容易使 用也更为强大和灵活。
Sys V init与BSD init不同,其配置文件位于/etc下面的一个名为rc.d子目录中,而不是直 接放在/etc下。在rc.d下您会发现rc.sysinit以及以下目录:
init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
init.d下面有许多脚本程序。一般来说,针对每一项需要在boot或转变运行级时启动 的服务均需要一个脚本程序。这些服务包括网络,NFS,sendmail,httpd等等。 服务中不包括那些象setserial一样只运行一次就退出的命令。而那些东西应当放在 rc.local或rc.serial中。如果您需要rc.local的话,就把它放在/etc/rc.d下。大多数系统都包括 这样一个脚本,即便也没什么用。您需要的话还可以在/etc/rc.d下放置一个rc.serial, 用于boot时做与串口相关的操作。事件的执行过程是这样的:
默认的运行级由/etc/inittab控制。在该文件前面应有一行:
id:3:initdefault:
对于大多数系统,您将会发现第二列的值被设置为3,也就是默认运行级为3。如果您 想改变默认运行级,就编辑/etc/inittab,将3改为其它数值。对于这种操作一定要小心。 如果您搞糟了,可以重新启动机器并执行如下操作:
LILO boot: linux single
这可以使您以单用户方式boot,以修正inittab文件。
那么,那些脚本是如何运行的呢?您在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目录下脚本的符号连接 。符号连接由字母“S”或“K”和字母组成,S表示启动某个脚本而K表示停止。 这里的数字仅用来安排执行的先后次序。Init将依次启动所有的服务。数字可以重复, 但这只会把自己给搞糊涂。您只需使用两位数字连同大写的“S”或“K”来指示启动 或停止服务。
Init是如何启动和停止服务的呢?很简单,每个脚本被书写成接受一个“start”或 “stop”的参数。实际上您可以以手工的执行以下的命令:
/etc/rc.d/init.d/httpd.init stop
来停止httpd服务器。Init仅仅读出文件名,如果它有字母“K”就以stop为参数调用该脚 本,而有字母“S”时就以stop为参数调用该脚本。那么为什么设置那么多的运行级呢? 一些人是想将机器设置成为多种目的服务。比如我可以有一个仅运行httpd,sendmail, 网络服务等的运行级,还可以有一个只运行xdm,网络服务等的运行级。
Generally, Red Hat Linux runs in run level 3---full multiuser mode. The following runlevels are used in Red Hat Linux:
- 0
- 停机t.
1 单用户模式
- 2
- 多用户模式,但不提供NFS服务
- 3
- 全功能多用户模式
- 6
- 重新启动机器
如果您的机器进入了这样一种状态,系统由于损坏的/etc/inittab而不能boot,由于受损 的/etc/passwd而不能登入,或者干脆就是忘记了口令。在LILO boot 提示符下键入 linux 1 而boot进入单用户模式,这是一个几乎没有装载任何服务的状态,您可以 在提供的shell下执行修复命令。
chkconfig命令提供了一个简单的命令行方式来维护/etc/rc.d下的文件树。它减轻系统 管理员直接以手工方式维护/etc/rc.d下的符号连接的劳动。作为补充还有一个名为 ntsysv的基于屏幕交互的工具。请查看chkconfig和ntsysv的man手册以获得详细信息。
脚本/etc/rc.d/rc.local是在boot时,于一切其它初始化操作之后或改变运行级别时执行 的。例如,您可能要启动其它的守护进程或者初始化打印机。补充一点,如果您需 要进行串口的设置,可以编辑加入/etc/rc.d/rc.serial,系统会在boot时自动执行。
默认的/etc/rc.d/rc.local仅仅创建了一个显示有核心版本号和机器类型的登入画面。
执行shutdown以关闭红帽子LINUX。您可以阅读shutdown的man手册以获得详细信息。 下面给出两个常用的命令形式:
shutdown -h now shutdown -r now
任何一个命令都可以安全的关闭系统,前一个关闭系统后停机,后一个关闭系统后将 重新启动机器。
尽管reboot和halt命令现在可以在系统运行于运行级1-5时“聪明”的调用shutdown来关闭 系统,但是这么做并不是一个好的习惯,因为并不是所有的LINUX都支持这一功能。