📄 00000007.htm
字号:
# <BR> <BR> <BR> # Rerun ourselves through initlog <BR> <BR> if [ -z "$IN_INITLOG" ]; then <BR> <BR> [ -f /sbin/initlog ] && exec /sbin/initlog $INITLOG_ARGS -r /etc/rc.d/rc. <BR>sysinit <BR> <BR> fi <BR> <BR> 首先,确定系统中是否存在/sbin/initlog文件,如果存在,那么需要记录初始化信息 <BR>。 <BR> <BR> # Set the path <BR> <BR> PATH=/bin:/sbin:/usr/bin:/usr/sbin <BR> <BR> export PATH <BR> <BR> 设置缺省路径。 <BR> <BR> # Read in config data. <BR> <BR> if [ -f /etc/sysconfig/network ]; then <BR> <BR> . /etc/sysconfig/network <BR> <BR> else <BR> <BR> NETWORKING=no <BR> <BR> HOSTNAME=localhost <BR> <BR> fi <BR> <BR> 这一段是网络的参数设置,/etc/sysconfig/network的内容是这样: <BR> <BR> NETWORKING=yes <BR> <BR> FORWARD_IPV4="yes" <BR> <BR> HOSTNAME="openlab.asnc.edu.cn" <BR> <BR> GATEWAY="" <BR> <BR> GATEWAYDEV="" <BR> <BR> 显然,如果这个文件存在,那么设置网络的运行参数,如域名,网关等等,这个文件 <BR>中可以包含很多的东西。详细的内容我们在设置网络的部分介绍 <BR> <BR> # Source functions <BR> <BR> . /etc/rc.d/init.d/functions <BR> <BR> <BR> /etc/rc.d/init.d是所有的服务脚本存放的地方,而functions是各种服务脚本需要的 <BR>一些参数的设置。有兴趣的话你可以看一看,不看也不影响什么。 <BR> <BR> 以下有一段是设置一些显示信息,接下来是这样的内容: <BR> <BR> <BR> <BR> # Mount /proc (done here so volume labels can work with fsck) <BR> <BR> <BR> action "Mounting proc filesystem" mount -n -t proc /proc /proc <BR> <BR> <BR> 连结/proc文件系统,应该记得/proc是用来显示系统状态的虚拟文件系统,注意acti <BR>on命令的语法,它显示一段提示信息,然后去执行相应的命令。 <BR> <BR> 然后的段落有一点意思: <BR> <BR> <BR> # Turn off sysrq <BR> <BR> #if [ "$MAGIC_SYSRQ" = "no" ]; then <BR> <BR> # echo "0" > /proc/sys/kernel/sysrq <BR> <BR> #fi <BR> <BR> <BR> $MAGIC_SYSRQ=no意味着你决定不使用内核调试,脚本必须把系统的内核调试功能关闭 <BR>,注意接下来的处理方法,在/proc/sys/kernel下建立一个名叫sysrq的文件,并且设置 <BR>其内容为"0",就关闭了这项功能,这也是在运行中打开或者关闭内核的某个功能的标准 <BR>方法,以后我们会经常看到这样的例子。 <BR> <BR> 接下来要设置时钟和键盘映射表,装入系统字体,又是一段冗长的代码,这里将它省 <BR>略,反正你总可以在自己的系统上看到他们。 <BR> <BR> <BR> # Start up swapping. <BR> <BR> action "Activating swap partitions" swapon -a <BR> <BR> <BR> swapon –a 将读/etc/fstab文件,这个文件中包含有系统中存在的应该自动挂接的各 <BR>种文件系统的列表,同时也包含了关于交换分区的知识,swapon –a将启动其中标注的 <BR>所有交换分区。 <BR> <BR> # Set the hostname. <BR> <BR> action "Setting hostname ${HOSTNAME}" hostname ${HOSTNAME} <BR> <BR> <BR> # Set the NIS domain name <BR> <BR> if [ -n "$NISDOMAIN" ]; then <BR> <BR> action "Setting NIS domain name $NISDOMAIN" domainname $NISDOMAIN <BR> <BR> else <BR> <BR> domainname "" <BR> <BR> fi <BR> <BR> 这两段设置系统名字,我们应该记得$HOSTNAME已经在/etc/sysconfig/network文件中 <BR>设置过,所以这里的action被执行,而$NISDOMAIN现在是空字符串,所以执行后hostna <BR>me被设置而NIS域名不存在。 <BR> <BR> if [ -f /fsckoptions ]; then <BR> <BR> fsckoptions=`cat /fsckoptions` <BR> <BR> else <BR> <BR> fsckoptions= <BR> <BR> fi <BR> <BR> <BR> if [ -f /forcefsck ]; then <BR> <BR> fsckoptions="-f $fsckoptions" <BR> <BR> fi <BR> <BR> 这里是与管理员相关的行了。如果系统的/下将存在/forcefsck文件,于是系统自动启 <BR>动fsck程序去检查文件系统是否有错误。接下来是一段关于是否存在/fastboot文件的判 <BR>断,与其大同小异,然后系统将会决定是否启用PNP,方法和处理MAGIC_SYSRQ是类似的 <BR>,这两段我们不讨论了,你可以自己看一下。 <BR> <BR> <BR> # Remount the root filesystem read-write. <BR> <BR> action "Remounting root filesystem in read-write mode" mount -n -o remount <BR>,rw / <BR> <BR> <BR> # Add /proc to /etc/mtab <BR> <BR> mount -f -t proc /proc /proc <BR> <BR> 检测根文件系统完毕后,系统重新将/连结成读写方式,并且将/proc加入到/etc/mta <BR>b中。下面是非常重要的一步,如果系统内核支持可装载模块,需要把$USEMODULES变量 <BR>设置成"y"并且设置模块的缺省路径,参数等等,然后,系统开始装入模块: <BR> <BR> <BR> # load sound modules <BR> <BR> if [ -n "$USEMODULES" ]; then <BR> <BR> if grep -s -q "^alias sound " /etc/conf.modules ; then <BR> <BR> action "Loading sound module" modprobe sound <BR> <BR> fi <BR> <BR> ......... <BR> <BR> fi <BR> <BR> ........... <BR> <BR> 当这些直接装入的模块结束后,为了和以前的方式兼容,也为了管理员的方便,这个 <BR>脚本试图去寻找/etc/rc.d/rc.modules,如果存在就执行它: <BR> <BR> # Load modules (for backward compatibility with VARs) <BR> <BR> if [ -f /etc/rc.d/rc.modules ]; then <BR> <BR> /etc/rc.d/rc.modules <BR> <BR> fi <BR> <BR> 显然,你可以将自己的模块初始化命令加入/etc/rc.d/rc.modules使它在启动时得到 <BR>运行。 <BR> <BR> 完成主要模块的装入后,系统将开始一系列日常工作,如检测有问题的文件系统,连 <BR>结所有本地文件系统,启动磁盘限额等等,如果系统还没有被配置,那么将启动配置脚 <BR>本,设置网络,超级用户口令等等,否则,对于已经配置好的系统,清理记账文件,准 <BR>备进行系统工作。 <BR> <BR> 当一切都完成之后,系统按照inittab的设定,进入运行级3,执行/etc/rc.d/rc 3。 <BR> <BR> /etc/rc.d/rc是一个很有意思的程序,它是一个shell脚本,其行为是这样:根据提供 <BR>给它的参数,它去寻找相应的目录rc${arg1}.d,例如,在/etc/rc.d/rc 3执行时,它去 <BR>查询/etc/rc.d/rc3.d下的所有文件,试图执行那些所有用S或K打头的脚本,凡是用S开 <BR>头的脚本,它给加上一个start参数,凡是用K打头的脚本,加上一个stop参数。执行次 <BR>序是按照S或K后跟的数值顺序。 <BR> <BR> 例如,在现在的例子中,/etc/rc.d/rc 3下存在一个S50inet的脚本,于是 rc 脚本去 <BR>执行S50inet start。而S50inet其实是到/etc/rc.d/init.d/inet的一个符号连结,其内 <BR>容是(这里只给出了部分内容): <BR> <BR> . /etc/rc.d/init.d/functions <BR> <BR> . /etc/sysconfig/network <BR> <BR> if [ ${NETWORKING} = "no" ] <BR> <BR> then <BR> <BR> exit 0 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -