gentoo系统启动初始化Linux认证考试
文章作者 100test 发表时间 2009:10:30 16:41:02
来源 100Test.Com百考试题网
1启动过程
init 进程通过/etc/inittab来决定启动的顺序和工作流程 init会执行所有/etc/runlevels/boot目录下的符号链接所指向的/etc/init.d目录下的脚本, 当/etc/runlevels/boot目录所引用的脚本都执行完毕后,将继续运行/etc/runlevels/default目录下的符号链接所指向的脚本
相关说明
在inittab有运行级别的定义
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
下面的定义si::sysinit:/sbin/rc sysinit这是init进程将初始化交给rc 由/sbin/rc sysinit来初始化系统,/sbin/rc脚本是负责系统初始化的在rc::bootwait:/sbin/rc boot中rc脚本的参数(boot)和要用的/etc/runlevels的子目录是一样的。
rc执行完了以后init将会决定哪些虚拟终端需要被激活以及每个终端需要运行什么样的命令:
在inittab中有以下定义
c1:12345:respawn:/sbin/agetty 38400 tty1 linuxc2:12345:respawn:/sbin/agetty 38400 tty2 linuxc3:12345:respawn:/sbin/agetty 38400 tty3 linuxc4:12345:respawn:/sbin/agetty 38400 tty4 linuxc5:12345:respawn:/sbin/agetty 38400 tty5 linuxc6:12345:respawn:/sbin/agetty 38400 tty6 linux这段代码定义了当运行在某个运行级别上的时候哪些虚拟终端需要被激活以及每个终端需要运行什么样的命令
2启动服务和调整
/etc/init.d/xxxx status 查看服务运行状态 /etc/init.d/xxxx zap 手动把信息设置为停止/etc/init.d/xxxx ineed 查看依赖服务/etc/init.d/xxxx needsme哪些服务需要这个服务(needsme)或者哪些服务可以使用这个服务(usesme)rc-0update add xxx default 添加服务到default 级别rc-0update del xxx default 删除服务rc-0update -v show 命令将会显示出所有已存在的初始化脚本,并列出它们在哪个运行级别中运行增加独立的额外配置这样做的好处是重装某个软件后不会覆盖自己的配置gentoo的配置是在/etc/conf.dgentoo官方文档的参考www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml首先,你的引导程序会把你在引导程序配置文件中定义的内核镜像加载到内存中,之后它就告诉CPU可以运行内核了。当内核被加载且运行后,内核会初始化所有内核专有的结构体和任务,并开启init进程。
然后,这个进程确保所有的文件系统(在/etc/fstab中定义的)都已被挂载且能使用。接着,该进程会执行位于/etc/init.d下的一些脚本,这些脚本会启动一些你需要的服务,以使你能获得一个成功启动的系统。
最终,当所有的脚本执行完毕,init将激活终端(大多情况下只是激活虚拟终端,可以使用Alt-F1、Alt-F2等来访问),并把一个叫agetty的特殊进程附于其上。这个进程会确保你可以通过运行login从这些终端登录到你的系统中。
gentoo不会随机的执行/etc/init.d下的脚本。甚至,它不会运行/etc/init.d下所有的脚本,只会去执行/etc/runlevels 下的
init会运行所有/etc/runlevels/boot目录下的符号链接所指向的/etc/init.d目录下的脚本。通常,它会按照字母顺序执行这些脚本,但是有些脚本中含有依赖关系,意味着系统要在执行另一个脚本之后才能运行此脚本。
当/etc/runlevels/boot目录所引用的脚本都执行完毕后,init将继续运行/etc/runlevels/default目录下的符号链接所指向的脚本。同样它们会按照字母顺序执行这些脚本,除非一个脚本有依赖关系,那样的话现有次序就会被改变以使启动顺序更加合理。
当然init自己不会决定所有的启动顺序。它需要一个配置文件来指定它的工作流程。这个配置文件就是/etc/inittab。
如果你还记得我们刚刚描述的启动顺序,你会记得init首先做的是挂载所有的文件系统。这个功能其实是在/etc/inittab这个配置文件中定义好的。如下: si::sysinit:/sbin/rc sysinit这一行告诉init必须运行/sbin/rc sysinit来初始化系统。/sbin/rc脚本是负责系统初始化的,所以你可能会说init它本身并没做太多的事情——它只是把初始化系统任务交给了另一个进程。
接下来,init会执行所有在/etc/runlevels/boot目录下的具有符号链接的脚本。这是由下面这行定义的:
rc::bootwait:/sbin/rc boot什么是运行级别
已经看到init使用一种数字的方式来决定需要激活的运行级别。运行级别表示你系统运行的状态,它包含了你进入或退出一个运行级别时需要执行的一组脚本(运行级别脚本或者初始化脚本)。
在Gentoo中定义了七种运行级别:三个内部运行级别和四个用户自定义运行级别。这些内部运行级别分别叫做sysinit、shutdown和reboot,它们所做的就如同像它们的名字那样:初始化系统、关闭系统和重启系统。
用户定义的运行级别都在/etc/runlevels目录下有同名的子目录:boot、default、nonetwork和single。运行级别 boot会启动所有其他运行级别必须要使用到的系统服务。其余的三个运行级别的不同之处主要在于它们要启动的服务:default是用来日常工作用的;nonetwork是在无网络的情况下使用的;还有single是用户修复系统时用的。