我一直很好奇我们按下计算机电源键的一刻,计算机内部到底发生了什么,听说那里面是一个二进制的世界,但是为什么计算机本身又是这样的绚丽缤纷,引人入胜……
在我们计算机的内部,如果把它比喻为一块果园,有桃树,梨树,苹果树等等,那我们的主板就算是土地,因为它扮演的是一个平台的作用.不论cpu,各种芯片,存储器等都是在它上面的.
首先介绍两个比较重要的东西:
CMOS:保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。有人会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定的东西.
BIOS:是写到我们主板上的一个软件程序,就是我们计算机启动之后要执行的第一个程序.
接下来我们来说按下电源键的一刻发生了什么,在我们主板通电之后,首先BIOS可以从CMOS中读取系统设置的具体信息,然后BIOS会自动检测我们电脑的硬件是否正常,这个过程也叫做BIOS自检,之后BIOS会对一些设置参数初始化,最后BIOS会去分析我们的计算机里面有哪些存储设备,找到我们用户设置的能够开机的硬盘或磁盘,并且到该硬盘中去,读取”零”磁道”一”扇区的MBR(主引导记录),这时候BIOS的使命完成,退出历史舞台.我们继续往下走,解释下MBR.
MBR:主引导记录,我们磁盘的0磁道1扇区的512个字节会被MBR和Partition table(分区表)占用,分别占446个字节和64个字节,这446个字节是安装操作系统时放到此处的引导加载程序,64个字节纪录了我们分区的信息,比如起始柱面,结束柱面等等
接下来就不得不提到我们磁盘的存储结构了,请看下图.注意:我们将磁盘拉伸为一个矩形的形状:
图片中是一个装有两个操作系统的PC,C盘中装的是Windows操作系统,第二个分区中装有的是Linux操作系统,它的大部分格式应该是ext4格式,上面的数字1-300我们可以看做是磁盘的分区大体位置,在我们的第一扇区中绿色的MBR中有两个引导纪录,M1和M2,由于M1引导Windows,所以它可以直接找到Windows操作系统的位置,然后启动,但是要引导Linux,M2只能完成找到我们第二块分区的启动扇区的位置,在由它找到Linux的位置,启动Linux.
接下来我们总结下MBR的作用:
1:显示启动菜单,当我们是一个多操作系统的PC时,我们的引导菜单的显示.
2:载入内核文件:例如M1引导Windows,直接载入文件运行
3:交给别的loader:启动Linux时,将引导加载功能交给第二块分区的启动扇区.
所以对于一个多系统的PC,我们的内核文件其实是被放在不同的分区的,并且每个分区的loader都有两个功能,一个是将自己分区的内核文件加载,另一个是将控制权转交给其他的loader.我们在装系统时最好先装Windows,原因是对于Windows操作系统在安装的过程中,它会将所在分区的MBR全部清空并且将引导扇区覆盖,如果我们先有Linux,那么接下来我们的Linux会找不到引导,但是解决方法还是有的,比如在Windows下用easyBCD重新加入Linux引导就可以,但是我们要是后装Linux,Ubuntu等一般的都不会丢失Windows的引导,并且会自动加载出来,但是RedHat需要我们重新编辑引导,也没有多难在/boot/grub2/grub.cfg中加入就可以了,好了,说到这里,我们的启动才完成了一半,那么操作系统开始运行之后,它又会干什么呢,它的启动过程又是怎样的呢?我们下次再说……