首先,先不急着将启动流程,,先说下linux操作系统的相关知识
一:linux的组成部分: 内核+根(/)文件系统
1)内核:
存放位置 centos6的位置是 /boot 目录下的"vmlinuz-2.6.32-573.12.1.el6.x86_64"
“2.6.32”是版本号;“573.12.1”是release号。内核的作用是负责核心的内存管理、进程管理、网络协议栈、文件系统、驱动程序、安全功能。linux内核是单内核设计,但是他支持多模块化动态装载和卸载。也就是不关机的情况写就能安装卸载模块。而linux的模块文件是存放在/lib/modules目录下的。跟内核文件有一样的版本号和release号。
[root@marco-linux lib]# ls modules/ 2.6.32-573.12.1.el6.x86_64
2)根(/)文件系统
其实 / 这个符号 根本不存在。那么我们怎么知道什么是根文件系统呢、? 其实是由我们认为的规定的。比如只要在一个目录下同时包含/bin /sbin /boot /etc /dev /lib 这些文件 我们就可以认为这是一个根。
3)电脑主板
电脑主板在出厂的时候,厂家就给主板写了一个程序,存放在主板的ROM里边。也就是我们熟悉的BIOS.BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制
二; 好了,说了上边那些我们这次可以继续说说启动流程了。首先,我们先说下系统启动和没启动的区别是什么样子的。先说关机的时候,所有的文件包括内核,跟文件系统写的,就是静静的表现为刻录在硬盘上的符号,,形象的说就是他们都在睡大觉。而启动中的系统呢,首先就是内核的进程属于激活状态,也就是把他们都调用到了内存里,CPU硬件在电力的驱使下一遍一遍的执行着编写在内核中的进程。内核还可以通过驱动程序,随时的任意的调用计算的各个文件 包括DEV下的硬件文件。而我们要说的启动过程,就是说明白计算机是怎么从静止状态,接电后达到能够实现各种功能的工作状态的。
a步:当我们手指按下开机键,就给主板接通了电源。主板通电后,在自身ROM上的BIOS程序指引下,开始检测各个硬件的接口是否接好。比如内存条,CPU,网卡,等等。如果有硬件出现故障,一般主板都会发出声响报警的。用笔记本的遇到的少,我11年前用台式机,那可是经常听见的。大部分都是因为灰尘影响了内存条读取。 --这个过程叫加电自检 即:Power On Self Test (POST)
b步:因为硬盘在主板上,所以其实硬盘也早通电了,也就是已经转起来了。所以,当主板自检以后,下一步就是按次序查找可能装有引导开机程序的设备,比如硬盘,光盘,U盘。所以,当我们用光盘,或者U盘装系统的时候,都会先进BIOS 把光盘,或者U盘调到最开始检测的位置。假设我们现在已经装好系统了,这是一次正常开机的操做。所以,首一般我们都会把硬盘放在第一的位置被检测。当主板检测到我们的“0柱面、0磁头、一扇区”=MBR时,就会启动我们写入MBR的引导程序。如果是手机,一般都是LILO这个引导程序。当然了,我们现在说的是linux服务器或者虚拟机。MBR扇区写入的一般都是grub这个引导程序。
c步:由于MBR扇区只有446个字节可以用,不够grub完成引导操作系统任务使用。所以grub被激活以后,他首先要做的是引导MBR扇区之外的grub程序。grub2这个程序存放在boot目录下。这样,grub就摆脱了MBR扇区的限制,可以提供更丰富更强大的功能。但是他的主要作用还是引导内核启动。
如图:
他最终会给用户提供一个选择启动操作系统的界面如图1
d步:当我们选定操作系统运行以后,操作系统的内核就从grub手上接过了权利棒。kernel接过来权力以后,首先探测可识别的所有硬件,(e步)并且加载硬件的驱动设备。然后以只读方式挂载根文件系统。并且运行第一个应用程序:/sbin/init 从此,机器就正式进入了工作状态
e步; 这个步骤不是必须的,但是绝大多数都是会有的。在加载硬件驱动之前,内核遇到一个问题。因为根文件系统是在磁盘上(虽然boot分区也在磁盘上,但是他已经被grub引导驱动了)。要读取根文件系统首先要有磁盘的驱动。而加载驱动必须要有根文件系统。就仿佛我开门必须要钥匙,但是我的钥匙被锁在屋里了。所以这时,我们需要找开锁公司,给弄个假钥匙,打开门,拿到真钥匙,我们就重新掌握了我们的自己的家了。 而这个“开锁公司”是谁呢? 那就是同样处在跟boot分区中的ramdisk Centos6中 叫initramfs-2.6.32-573.12.1.el6.x86_64.img 。如果你的不是CENTOS6系统,那么你在boot目录下找.img结尾的文件就是了。 他会创建一个临时的根文件系统,这个根文件系统只针对磁盘,加载磁盘驱动用的。也就是只能门,直到拿到真正的钥匙为止。当有驱动了,可以加载真正的根目录了,这个假根目录就自动让位了。
OK ,,又一个作业写完了。。。 念个咒语睡觉 “mony-mony-home"
原文地址:http://10999737.blog.51cto.com/10989737/1731031