|
启动方案
init程序
l 运行级别
l 运行级别的转换
l init脚本
l 运行级别编辑器-YaST
l SuSEconfig和/ect/sysconfig
l 用YaST的系统编辑器配置系统
l 脚本和变量-系统配置
-设置/ect/sysconfig中的数据
启动方案
Unix系统的启动和初始化对一个有经验的系统管理员来说觉不是一件普通的事。本章是一个SuSE Linux启动方案的入门介绍。
用一句简要的话来解释Linux就是,内核从硬件那里接受所有的控制。它测试并设置终端,确切的说是显卡的BIOS寄存器和屏幕的显示模式,以便之后可以读出BIOS中的设定以及初始化主板的基本接口。然后逐个检查驱动模块(内核的组成部分),和已存在的硬件,以便有必要的话对其进行初始化。在检查完分区并加载了根目录之后启动init程序。通过init启动主系统和许多服务程序,以及对他们的配置。然后内核管理整个系统:监视每个程序的运行时间,管理内存,控制对硬件的使用。
Init程序
Init是一个控制具体系统初始化的进程;它可以说是系统中所有进程的父进程。
Init在所有的程序中是一个特殊的角色:它直接被内核启动,对9号信号免疫(它可以将普通的进程杀死)。其他的进程将会被init本身或它的子进程启动。
Init是集中在/etc/inittab中被配置的;这里“运行级别”被定义,它确定了在哪个级别中哪些服务将被运行。根据/etc/inittab中的记录,它调用相应的脚本。为便于理解这些脚本放在/etc/init.d目录中。
整个系统的启动(当然也包括关闭)都将被init单独控制;就这点而言,内核被视为后台进程,它的任务是管理那些启动了的进程,分配给他们运行及访问硬件的权利并加以控制。
运行级别
Linux中有很多运行级别,他们定义了系统的状态。启动系统时的标准运行级别在/etc/inittab中通过initdefault项确定,通常为3和5级(见表)。启动时可以指定想要的级别;内核将它的一些参数传递给init进程。
为了能在之后某个时候切换到其他的级别,可以调用以级别号为参数的init程序;只有系统管理员能够切换运行级别。
例如:通过输入命令
root@erde:/>init 1
进入单用户模式,它用来对系统进行维护和管理。当管理员完成他的工作之后,他可以通过
root@erde:/>init 3
将系统切换到普通状态。这时所有需要的程序都会运行,其他用户也可以登录了。
下表给出了所有运行级别的信息。级别2为,如果你的/usr区是通过NFS加载的,将不能被使用。
0
停机(System halt)
s
单用户模式(美式键盘布局)
1
单用户模式
2
本地多用户模式,不带网络。
3
完全多用户模式,带网络。
4
保留(暂时不用的模式)
5
完全多用户模式,带网络,带KDM(默认),GDM和XDM。
6
重起模式。
另外你可以通过root@erde:/>init 0 停机,
通过root@erde:/>init 6 重起。
SuSE将5级作为默认的运行级别,以便用户可以直接进入图形界面。
如果你要进入3级和5级,必须先确保X Window系统已配置好。想要知道系统是否如你所希望的那样运行,输入:root@erde:/>init 5进行测试。
如果正常,你就可以通过YaST将5级设为默认运行级别。
注意
错误的配置/etc/inittab将会导致系统不能正确的启动。改动时一定要仔细,并且请保留一份备份。如果发生了错误,可以在lilo命令行加上参数:init=/bin/sh,便可以直接进入一个shell,然后将备份的文件拷贝回去。
运行级别的切换
通常在切换级别时会发生的是:当前运行级别的“停止脚本”被调用,这时,该级别中那些程序将被终止,然后新的级别的“开始脚本”将被调用。多数情况下在这个过程中一些程序被启动。
为了阐述清楚,让我们看一个从级别3到级别5的切换:
l 系统管理员通知init程序,级别要被切换:init 5 (今后我将省略前面的提示符)
l init检查/etc/inittab,并调用/etc/init.d/rc脚本(以新的级别号为参数)。
l ‘rc’调用当前级别的一些“停止脚本”,这些脚本(可理解为一些服务程序)没有在新的级别的“开始脚本”中存在。
提示:“停止脚本”已k开头(kill),“开始脚本”已s开头(start)。
l 最后新级别的“开始脚本”被调用;在我们的例子中为/etc/init.d/rc5.d下的已s开头的脚本。这些脚本的调用顺序以来他们后面的数字。
Init脚本
/etc/init.d下的脚本分成两类:
l 直接被init调用的脚本:包括仅仅在启动和关闭系统时使用的脚本(断电或用户按了组合键ctl+alt+del(我的文件里没有印出来,这是我猜的)时也会调用的)。
l 间接被init调用的脚本:即级别切换时要调用的;通常是/etc/init.d/rc调用的,它保证那些脚本按正确的顺序被调用。
所有的脚本都在/etc/init.d目录下。切换级别的脚本也在这个目录下,他们将已指向/etc/init.d/rc0.d到/etc/init.d/rc6.d的符合链接的形式存在并被调用。这样是为了使之脉路更清晰,同时避免出现几份相同的脚本,因为不同的级别可能会用到一些相同的脚本。因为这些脚本不是开始的就是停止的,所以他们都能够接受start和stop参数。(不知道这里翻译得是否准确)。另外他们也可以接受restart, reload, force-reload 和status参数;这些参数的意义列在下表中。
选项
意义
Start
开始
Stop
停止
Restart
如果服务已经在运行则重起,否则如start
Reload
重新读入配置文件,但不重起。
Force-reload
如果支持则重新读入配置文件,否则重起。
Status
当前状态。
离开级别3时/etc/init.d/rc3.d/K40network被调用;/etc/init.d/rc使用stop参数调用/etc/init.d/network。进入级别5时,同样的脚本被调用,但是用start参数。
指向相应级别目录的连接仅仅只是为了使那些脚本按顺序被调用。
安装或删除某个包时,加入或删除一些必要的链接需用到insserv(例如:连接/usr/lib/lsb/install_initd)(不知道这句话是什么意思,望知道的兄弟告诉我)。
下面是关于启动,停止,以及控制脚本的一个简短描述:
Boot
在启动系统是直接被init调用。与运行级别无关并只能调用一次:实际上proc和pts数据系统被加载,blogd(Boot Logging Daemon)被激活(在第一次安装完或升级了系统之后),然后开始基本的配置。
这个脚本在/etc/init.d/boot.d中;所有这个目录下以s开头的脚本在启动时被调用。它将检查系统,删除/var/lock下一些可能存在的多余的数据。设置好系统时间。
在检查和自动修复的过程中如果出现了严重的错误,系统管理员可以输入root密码,并对问题做排查。(用排查这个词时另我想到非典,呵呵,但愿非典早日被消灭)
Boot.local
在系统进入某一级别前,可以在这里启动一些可能的东西;就功能而言,有点类似与dos系统下的autoexec.bat。
Boot.setup
进行一些从单用户模式进入到其他模式时所需的基本设置。
这里将会加载键盘布局及终端的配置。
halt
这个脚本在进入级别0和6时出现。它将以halt或reboot的名字被调用,以此来判断系统应该彻底停止还是重起。
Rc
是一些在切换运行级别时要用到的脚本。它调用当前级别的“停止脚本”然后时新级别的“开始脚本”。
按照这个方案可以添加一些脚本。在/etc/init.d/skeleton下准备了一些框架。具体的格式是按照LSB的设计写的;可以确定在那些级别中那些脚本以什么样的顺序被调用。这些使用各自rc目录的insserv的连接可以被加入新的脚本中,以使之在切换级别时被调用。技术细节在init.d和insserv中被描述。YaST是一个图形化的级别编辑器。
注意:
错误的init脚本会是系统“挂起”(卦掉吧!)。请仔细编辑你的脚本,最后先在多用户环境下测试(不理解)
运行级别编辑器YaST
启动编辑器后首先进入专家模式。接下来的对话框里显示的是标准运行级。这个“系统模式”将在系统被引导后启动。在SuSE中为级别5(完全多用户,带网络和XDM)。3级也可以。这里可以通过YaST的帮助设置其他的级别为默认级别。
通过“运行级别属性”可以查看所有服务的信息,看是否他们在那些级别中被激活。选中一行(服务),便可设置它所属的级别,以及是否被激活。4级未被定义,它总是被用来设置用户自己的级别。这里可以直接看到每种服务的简短描述。
通过“开始”“停止”可以激活某项服务。“刷新”用来检查当前状态。“激活服务”只有当该服务未被激活时才显示。“复位”将所以项设为原始值。“结束”保存所有设定。
注意:
错误的设定会使系统无法使用。设置前请查清系统的功能。
SuSEconfig 和 /etc/sysconfig
基本的设置保存在/etc/sysconfig中,以前版本的保存在/etc/rc.config中,新安装的系统不再包含rc.config文件。所有的设定将通过/etc/sysconfig执行。升级过的系统中保留了rc.config。
/etc/sysconfig中的数据只能被单个脚本存取;这可以保证网络设置只有通过“网络脚本”来配置。
此外,许多配置文件依赖与/etc/sysconfig中的数据;这个任务由SuSEconfig来完成。例如,设置完网络之后,将会重新生成/etc/host.conf文件。
改变配置之后必须调用SuSEconfig,以便新的设置能够生效。如果你用YaST来改变配置就不用考虑这些问题了;YaST自动调用SuSEconfig来使相关的设置生效。
这种方案使得在改变配置之后不用重新启动系统。有些改变还是会使一些程序重起,才能生效。
通过使用使用命令rcnetwork stop; rcnetwork start使一些相关的网络程序重起。就像你看到的那样,你也可以手工改动配置。
通常建议如下来配置系统:
l 切换到级别1:init 1
l 用普通编辑器或YaST进行改动。
l 运行SuSEconfig进行其他相关改动。使用YaST时它会自动调用SuSEconfig。
l 切换回原来的级别:init 3
这种方式只有在进行较大改动时才用;对付简单的任务不用切换到“单用户模式”;尽管如此你还是要保证所有的被改动过配置的程序都重新启动。
建议:
(抱歉,译不出来,请参看原文)
用YaST的系统编辑器配置系统
(比较短,主要是该软件的使用,大家自己看看吧,懒得译了,呵呵 :-p )
脚本和变量-系统配置
下面有选择性的介绍一些设置参数。如果你不是用YaST编辑/etc/sysconfig文件,请注意,如果没有参数请加入一对引号(例如:<KEYTABLE=””>),含有空格的参数请用引号括起来。/etc/sysconfig中的项以来于你对系统的设置。下面的段落简单介绍一下一些重要的配置数据。以下没有提到可以参见/etc/sysconfig-Dateien(我的是德文的,英文的话可能是sysconfig-Data)。
设置/ect/sysconfig中的数据
apache
配置Apache服务器。这里只列出必要的基本配置。其他信息请参阅http://httpd.apache.org/docs和[url]http://modules.apache.org[/url]
l HTTPD_PERFORMANCE=slim
确定有多少客户可以连接到服务器。可选的有’slim’,’mid’,’thick’,enterprise’。SuSEconfig在/sbin/conf.d/SuSEconfig.apache中设置了MinSpareServers, MaxSpareServers, StartServers 和MaxClients。
(未完,待续) |
|