init是Initialization的缩写,也就是初始化的意思,对Linux 而言,则是要进入实体Linux 操作系统的第一步。到目前为止,我们讲到了许多的第一步,但这和之前所提到的BIOS、kernel或initrd 都不一样,完全是针对用户当初所安装的系统软件的。Linux要进入操作系统,主要是由init程序把所有的功能串在一起的,有点带头大哥的味道。也因为它是进入操作系统后第一个执行的程序,因此,在操作系统中,可以看到init的PID是1(如图5-1所示),代表一个起头程序,其他所有执行中的daemon则都是由init所带起来的程序。因此,当一个Linux的init挂掉时,代表这个操作系统绝对无法使用,只有强迫以电源重新开机来解决(关机也要通过init 程序)。
init虽然只是一个开头的程序,但其中所含的步骤及过程却是非常得复杂且重要。只要可以清楚其中每一个过程,对主体Linux操作系统的激活过程就已经掌握八成了。但要理清一个观念,init并不是一个绝对、唯一的激活程序,用户也可以自定义所需要的激活方式,这也是Linux 弹性之大的证明,要如何改掉执行的方式,在5.1节会提到,只需要在系统激活时加入一个参数就可以做到,当然,激活的程序还是要自行搞定。
5.1 init的基本结构
在本章仍是以Fedora Core 6为主要的范例操作系统,但只要是Linux based的操作系统,都不会差异太大,关键看系统厂商的修改程度z`,这也是用户在检查流程时要注意的。整个init林林总总的流程,可以依执行的顺序,列出大致的执行过程(如图5-2所示),在本章会尽量将每一个过程交待清楚,但因为init所涉及的范围实在太广,若要将所有执行到的软件、script文件或变量列出来,可能要一本书才够,所以会尽量以用户会遇到,或常看到相关的设置做说明。
再次强调,Linux的弹性是很大的,init虽然是一个方便用户进入系统的工具,但用户依旧有权利决定要不要由init来完成所有的工作,如果认为init执行的顺序或方式有问题,或是有更好的方法或顺序来进入Linux,可以手动将执行init的阶段关掉。做法还是要通过在GRUB中开
[1] [2] 下一页