ubuntu 从6.10 开始逐步用upstart 代替原来的sysinit 进行服务进程的管理的过程. 但是在Ubuntu10.10 的发行版中却找不到/etc/event.d 这个目录了,原因是:
从 ubuntu9.10 后, http://www.examiner.com/geek-culture-in-rapid-city/ubuntu-10-10-fresh-install-to-acer
从而,在 Ubuntu10.10 发行版中没有了 /etc/event.d 目录了。
下面再来进一步说明,可能部分内容和上面有重复的地方:
在 2.6.35.4 的内核源码中有:
init/main.c 的 init_post() 函数中有 :
系统会按照上述顺序,逐次运行作为 init 的进程。当有任何一个进程被成功运行时, run_init_process() 函数将不再返回。则当正确执行 run_init_process(“/sbin/init”) 后,则内核启动 init 进程。
Init 进程找到 /etc/init/rc-sysinit.conf 脚本文件 , 确定默认的运行级别 (X) :
p { margin-bottom: 0.21cm; }
并用 sh 命令执行 rc-sysinit.conf 脚本文件,在该文件中有执行:
p { margin-bottom: 0.21cm; }
即在 rc-sysinit.conf 中执行 /etc/init.d/rcS 脚本完成系统初始化设置。下面跳转到 rcS 脚本:
/etc/init.d/rcS:
p { margin-bottom: 0.21cm; }
rcS 脚本调用 /etc/init.d/rc S ,即将参数 S 传递给 /etc/init.d/rc 脚本 , 其目的是让 /etc/init.d/rc 执行 /etc/rcS.d 中所有以 S??* 的脚本(即文件名以 S 开头的脚本),其中在 /etc/rcS.d/ 的目录下有一个 README 文本来说明该 /etc/rcS.d/ 目录下脚本的作用:
p { margin-bottom: 0.21cm; }
即 /etc/rcS.d/ 中是一些到 /etc/init.d/ 中脚本的符号连接。
执行完 /etc/rcS.d/ 中的脚本后, 触发相应的 runlevel 事件,开始运行 /etc/rc.conf 脚本:
p { margin-bottom: 0.21cm; }
因为在前面已经明确了 runlevel 是多少,在此,以 $RUNLEVEL 为参数传递给 /etc/init.d/rc ,
在 /etc/init.d/rc 中,根据 runlevel 的值,执行下面的脚本:
p { margin-bottom: 0.21cm; }a:link { }
即执行 /etc/rc$runlevel.d/ 中的脚本按事先设定的优先级依次启动 , 直至最后给出登录画面 ( 启动 X 服务器和 GDM) 。
(说明:在本文件中附带有一个用 systemtap 测试的 ubuntu10.04 启动过程执行的具体情况,其中部分内容可以和上面所说的相对应。)
其中模块的加载命令可以在相应的脚本中添加,从而实现启动时自动添加模块。但是,网卡驱动模块的自动添加业可以用下面的方式,参看该网页: http://blog.csdn.net/ruixj/archive/2009/01/14/3772798.aspx
重要网址:
http://www.comedu.com.cn/linux/ubuntu/tips/2011/0118/11842.html ;
http://www.bitscn.com/os/linux/200812/155459.html ;
https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/402759 ;
http://ircanswers.com/ubuntu/500213/includes-ubuntu-1010-system-upstart ;
https://help.ubuntu.com/community/UbuntuBootupHowto ;