Linux架构的深入研究

1. Linux其实只用几个文件就可以跑了。就是init(必须), rc, inittab.sh.
(注意,这样Linux其实是在single user模式下,权限相当于root)

2.如果同好们想要更多的功能,就可以添加一些程序来满足自己的需要。
当然,编写rc和inittab需要一定的脚本功底,后面我会逐步归纳inittab和rc脚本的一些技术细节。

咱们看一个范例,下面是我的电脑的Linux,inittab(注意这个inittab的名称是绝对不能更改的)。这个名称是在init.c里面定义的,如果各位同好有兴趣编辑一下init.c里面的这个文件的名称,哈哈,别人就蒙掉了。

# Default runlevel.
id:3:initdefault:

# System initialization, mount local filesystems, etc.
si::sysinit:/sbin/rc sysinit

# Further system initialization, brings up the boot runlevel.
rc::bootwait:/sbin/rc boot

l0:0:wait:/sbin/rc shutdown
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
#z6:6:respawn:/sbin/sulogin


大家可以看id:3:initdefault:这个是默认的启动级别,表明了系统将会执行级别3定义的这个脚本。

当然我们很容易可以猜到si::sysinit:/sbin/rc sysinit定义的是系统初始化脚本

这样inittab一下子就很清楚了,系统的启动步骤也很清楚了
1 run kernel
2 init
3 rc
4 level 3

在上面的inittab里面的0,1,2,3,4,5,6就是init程序的运行级别,具体哪个代表什么linuxsir上面应该有很多文章提到了,我就说一下3,4,5就是多用户级别了,但是同好们依然可以改变它们的定义,这个需要修改init.c程序本身了,有兴趣的话可以试试。另外脚本的不同也一样可以改变他们默认的功能。具体的脚本同好们可以看自己的linux系统下面对应的脚本文件。当然有些同好也提到了我们也可以不要init这个程序,不过这个可是linux系统钦定的初始化程序,如果咱们不要的话可是要自己去修改kernel啰,要么就弄一个和init一样名称的什么程序都可以的程序哈哈,不过那样你能会失去一个重要的东西就是控制台,因为你需要自行想办法去定义你的控台,哈哈,没有控制台你什么也做不了。别人都做好了而且功能强大的东西干什么咱们不用呢,而且省掉这个东东也省不了太多的bit数出来,所以咱们还是用稳定而且经典的init程序,况且这个小的init别人已经帮我们写好了。

rc命令脚本程序

我们已经知道,当运行级别发生改变时,将由/etc/inittab文件定义需要运行哪一个命令脚本程序。这些命令脚本程序负责启动或者停止该运行级别特定的各种服务。由于需要管理的服务数量很多,因此需要使用rc命令脚本程序。其中,最主要的一个是/etc/rc.d/rc,它负责为每一个运行级别按照正确的顺序调用相应的命令脚本程序。我们可以想象,这样一个命令脚本程序很容易变得难以控制!为了防止这类事件的发生,需要使用精心设计的方案。
阅读更多
个人分类: MobilLinux
想对作者说点什么? 我来说一句

深入研究Windows内部原理系列课程

2014年03月28日 34.6MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭