操作系统加载简介

不久前协会一个同学装了win7+fedora16,结果那哥们又把win7重装了,这下好了,只能进win7了。。。

自己安装linux和windows双系统曾经一路碰到挫折,linux确实是对分区要求很高的系统,最近看了下鸟哥的书,了解了些linux系统。

当我们按下电源键的时候,各种电平信号(不懂电路)开始响应,总之CPU就开始执行了。开始计算机都是由BIOS控制的,BIOS主要完成了一些硬件的初始化,上次看了嵌入式的操作系统开发,里面其实是一些命令的跳转和执行,下次再介绍。BIOS除了硬件的初始化,还有就是加载初始化程序,这就出现了一个概念-:MBRMaster Boot Record),即硬盘主引导记录。硬盘的0柱面、0磁头、1扇区就是MBR,MBR是不属于任何一个OS,也不能用OS提供的磁盘操作命令来读取它。

MBR上面的程序BootLoader有引导CPU去加载不同系统的功能,grub就是比较流行的BootLoader,也就是说通过grub加载系统的内核文件到内存。但是平时我们碰到的双系统是怎么回事呢?例如windows和linux是不同的文件系统,那么grub引导的过程肯定是不一样的,问题就是只有一个MBR啊,MBR也就只能写一个BootLoader。这下就郁闷了。。。我们双系统装好后,在启动之后会出现一个选择的过程,叫你选择是进linux还是windows。其实这也是BootLoader的另一个功能,将控制权转交给另一个BootLoader。另一个BootLoader在哪里呢?这就是分区时候的文件系统的知识了,每一个文件系统创建的时候都会有一个启动扇区(BootLoader),这个是属于操作系统自己的噢。。。回到上面MBR的grub把控制权转交给另一个BootLoader,这样就可以正常启动了,具体的引导之后的一些基本配置文件的加载这里先不解释了。

下面是一张基本图

但是为什么平时的时候都强调:要先装windows再装linux,而先装linux再装windows就成功不了呢?其实装系统(linux和windows都可)的时候会把自己系统的BootLoader的基本信息保存一份在系统目录下,另外还有一份会写在MBR上面的,但是Linux是可以选择安装写在MBR上,而windows呢,不管怎样,强制写入!这样先装了Linux后装windows,马上就把MBR覆盖了,当然就找不到了Linux的BootLoader了。

我为了做实验,就拿了一台台式机做实验,先装fedora16再装win7就覆盖了MBR,具体的解决方法后面再写了。。。

标签:OS