日期:2014-05-16  浏览次数:20675 次

LINUX系统笔记2---系统的引导
2.1 引导
       这是Linux系列文章第二篇,我们看一下linux系统是怎么引导的,相对与windows的解读,Linux还是有些不一样的地方。
2.2 init进程
       这是系统的最先启动进程,在硬件引导完成将控制权交给系统内核的时候,这个进程产生。并且他的PID号总是1。
       当由BIOS确定从那个硬件设备引导后,读取MBR,确定第二引导程序,这个引导程序主要作用是加载内核,执行一系列的引导过程,当检测完硬件之后,内核产生init进程,init进程创建其他守护进程的方式是调用SHELL脚本,而这些启动脚本大多数是以RC文件,比如RC0.D等,这下明白这些文件是干什么用的了把,rc是run command的简写。是操作系统发展的遗留痕迹。
2.3  引导过程
        大体上分为6个阶段:
                   加载初始化内核;
                   检测硬件;
                   创建内核进程;
                   操作员干预(假如);
                   执行系统启动脚本;
                   多用户模式运行;
          内核是一个二进制的镜像,位置在/boot/vmlinuz,或者/vmlinuz下,linux系统是单内核结构,所以整个内核都在内存中。内核首先要做的往往是检测硬件的情况,驱动程序由内核加载。
          在内核初始化后,会有几个自发的进程被创建,他们并不是由fork来创建的,我们在ps命令中看到的一些进程名字被中括号包起来,并且PID号都比较小的,往往都是内核创建的,其实是内核的组成部分,装扮一下更像进程罢了。
               列举几个:
                        kjournald
                        kswapd
                        kreclaimd

                        ksoftirqd


             可以看到PID号都很小,在执行启动脚本之后,生成getty进程,好让用户登录进来。
             引导涉及GRUP程序,这是目前很流行的引导加载程序,在多系统的时候尤为重要,不涉及了,有兴趣的可以自己查查资料。
             这里面提及一下单用户模式,在linux启动的时,可以人工干预,变为单用户登录,目前我所应用的就是忘了root密码,选择这个登录去修改密码。
2.4 启动脚本
            说到启动脚本,必须提及init进程,这里面涉及一个运行级的概念
                          0级:完全关闭系统;
                          1级:单用户模式;
                          2-5级:多用户模式;
                          6级:重新引导;
             0级和6级,系统是不能停留在这两个级别中的,当计算