赞助连接

赞助连接

阅 读 文 章

FreeBSD系统启动进程:init

[来源:网上转载 () | 作者:网友() | 时间:2007-07-07 | 浏览: 人次 ]

Dru Lavigne
11/29/2000 

在前面的文章里,我们学习了怎么显示和管理运行中的进程。今天,我想描述一下那些进程实际上如何启动的。

当你启动计算机进入FreeBSD时会有很多巧妙的事情发生。在此我无法论及所有的细节,但FreeBSD handbook极好地解释了引导过程。当你启动你的计算机时,可能会注意到内核对硬件作了检测并在终端上显示了相应的结果。当检测结束时,内核会启动两个进程:进程 0 (swapper)和进程 1 (init)。

负责进程控制初始化的程序是init;没有它,其它的进程无法启动。在引导时,init要做两项重要的工作:首先,它在rc的控制之下装入启动脚本,然后它初始化终端以便使用户可以登录。让我们分别描述这些功能,从rc开始:

whatis rc
rc(8)     - command scripts for auto-reboot and daemon startup
这些脚本实际位于/etc/rc;通常,位于/etc下的这个配置文件对应于手册的第五部分,所以你可以根据手册对配置文件作正确地修改。但是,如果你打:

man 5 rc
你却会得到以下信息:

No entry for rc in section 5 of the manual
这对于上面提到的它位于手册第八部分来说看起来有点古怪,因为这部分手册包含的是系统维护和操作命令,通常它们都是后台进程。让我们进一步来看一下这个文件:

more /etc/rc
# System startup script run by init on autoboot
# or after single-user.
# Output and error are redirected to console by init,
# and the console is the controlling terminal.
# Note that almost all of the user-configurable behavior 
# is no longer in # this file, but rather in /etc/defaults/rc.conf.
# Please check that file first before contemplating any changes 
# here.  If you do need to change this file for some reason, we 
# would like to know about it.
好,相当清晰;看来对于该文件我们自己是不能乱来的。这里有些相当重要的东西对于正确引导我们的系统所必须的。让我们往后跳,看一些重要的部分来找出启动时实际上都发生了些什么。注意当在引导过程中处理rc脚本时,init会把所有的输出和错误信息记录到终端上。

rc首先做的事之一就是设置路径变量,以使它可以找到你FreeBSD系统上的可执行程序:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
然后它会查找/etc/defaults/rc.conf and和/etc/rc.conf这两个文件:

# If there is a global system configuration file, suck it in.
if [ -f /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
elif [ -f /etc/rc.conf ]; then
        . /etc/rc.conf
fi
接着它会作一个文件系统连贯性检查。如果你曾经非正常关闭FreeBSD系统,你会在引导过程中看到它在这一步上发出抱怨的。

echo Automatic boot in progress...
fsck -p
假定fsck没有遇到任何问题,它就马上装载你的文件系统:

# Mount everything except nfs filesystems.
mount -a -t nonfs
在其它任何进程启动之前,你的CMOS时钟必须调整为内核时钟可以理解的形式:

adjkerntz -i
然后整理var目录,将引导信息写入dmesg.boot:

clean_var() {
if [ ! -f /var/run/clean_var ]; then
rm -rf /var/run/*
find /var/spool/lock ! -type d -delete
rm -rf /var/spool/uucp/.Temp/*
# Keep a copy of the boot messages around
TAG标签 : 进程 启动 系统 终端 可以 文件 init /usr/libexec/getty

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.newhtm.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.