这个问题曾经因为做一键还原系统研究过一些,现在整理出来吧,一为答疑解惑,二为探讨,因为我说的也不一定对。
计算机的引导是个看起来很高深的问题,因为一旦系统进不去了人们就很慌,不知道该怎么办,其实如果了解了引导的过程,有些问题就变得很简单了。
- 引导级别最高的是BIOS,被称为基本输入输出系统,它的级别高是因为没有它这个计算机都启动不起来。我们最常见的和BIOS打交道就是进入BIOS里面设置计算机的引导顺序:光盘,软盘,硬盘,USB等等,计算机加电后将按照BIOS里面设置的顺序挨个去寻找用于引导的指令,如果没有,那么找下一个,如果都没有,那么大概就会来一句“无法引导”之类的话。我们在安装系统的时候,一般使用光盘引导,所以把CD-ROM放在前面,就是这个原因;
- 不讨论光盘,只说硬盘,因为绝大多数情况都是硬盘引导的,当BIOS把引导权利交给硬盘后,计算机会去硬盘的主引导区寻找引导程序。这个主引导区是硬盘中最重要的部分,称为MBR(注意不是MBA),其中记录了如何引导,同时记录了硬盘的分区信息,就是硬盘的分区表,所以一旦这个东西被破坏,那么硬盘接下来的面临的基本上就是重新分区,全盘格式化了。不过一般这个MBR是不会被碰触的;
- 如果MBR中没有引导信息,那么计算机系统会读取分区表,然后挨个的去每个分区搜索引导文件。理论上讲,每一个激活的主分区都是可以作为引导盘的,只要这个盘里面有引导程序即可,但是因为系统优先去引导第一个主分区,所以第一个主分区是兵家必争之地。Microsoft的操作系统基本上都是把引导信息写入第一个分区的,也就是我们熟悉的C盘,所以建议不要将系统安装在其他的分区,因为引导和系统并不在一个分区中,很容易出问题;
- Linux系统使用的是Grub程序进行引导的,从理论上讲,Grub这个程序可以引导任何它可以识别的操作系统,当然包括Windows。它的原理是改写MBR信息获得高于硬盘分区的引导优先级,MBR很重要,但是空间有限,只有一个扇区,Grub把自己安装在其他的分区,然后修改MBR的引导信息让引导跳转到Grub所在的硬盘空间进行引导,注意:这个时候引导顺序还没到硬盘分区那一步,所以所有的操作系统都还没有被引导;
- 此时Grub将所有识别的操作系统列出来让用户选择进行引导,当然你也可以手动输入Grub指令来引导,这个就属于高手范围了。此时才将引导权交给硬盘的分区进行引导;
- 很多用户是先装Windows,然后在其他分区上安装Linux操作系统,这个时候不能把引导程序装在主分区,因为这样会改写主分区的引导文件,导致原来安装在主分区的Windows无法启动,所以一定要把Grub和Linux的引导文件装在其他的分区;
- 有些用户把Grub安装在其他的分区了,后来又在Windows下把Linux和Grub所在的分区格式化了,那么这个时候系统是进不去的,因为Grub在安装的时候改写了MBR,以便可以截获引导权,但是格式化掉之后,MBR还会将引导权交给Grub所在的分区,但是此时Grub已经被删除了,所以系统无法引导,解决的方法是重写MBR,让它恢复本来的还没装Grub时候的样子。方法是使用DOS引导系统,使用 fdisk /mbr 命令进行重写;
- 因为Grub有这种风险,所以在很多时候我们在安装Linux的时候并不安装Grub,而是用其他的专门的引导软件,这些软件和Grub的原理是一样的,可是安装更简单,可以在Windows和Linux操作系统上直接安装,而且,当被卸载的时候会重写MBR,不用担心系统无法引导。用这种方法,在安装Linux的时候选择不安装引导程序,再次开机是无法进入Linux系统的,这时候进入Windows安装引导软件,再次重启,引导软件将会截断硬盘引导,此时就可以看到Linux系统也出现在列表里面了。这种引导软件很多,我记得诺顿似乎有一个,名字记不清了,感兴趣的朋友可以搜索一下;
- 现在有些杀毒软件声称在任何操作系统引导之前就可以进行杀毒,不要觉得他们是天方夜谭,这是可以实现的,原理和Grub是一样的,就是在引导系统前进行截断,装载自己的程序进入内存杀毒,完事儿之后把引导权交给操作系统;
- 用MBR还可以做更多的事。IBM曾经在笔记本上推出了一键还原功能,推出伊始业界大哗,这也太酷了吧,太方便了吧,可是研究下原理就不难发现,其实IBM的一键还原功能非常简单,说到底还是引导权截断,当然也是要重写MBR,发给系统一个中断指令,当用户按下某一个按键的时候,把引导权交给一个隐藏的主分区(这个分区正常情况下没有被激活,所以正常启动不会被引导),隐藏分区中有一个很简单的操作系统,简单到只有三五个文件,然后调用还原程序把隐藏分区的内容写入被还原的分区,就搞定了,如果你的隐藏分区中的操作系统足够强,比如是Win PE,那么你还可以干更多的事。难吗?能实现这个功能的公司不下千百家,可是只有人家想到,这就是创意了吧;
差不多就写这些吧,毕竟这么多的问题不是这么点儿文字就能说清楚的,欢迎讨论,以便老杨完善。
如果把详细的过程写下来就好了,比如从cmos出发到最终成功加载操作系统
@xiaoman 那就太复杂了
我只管用现成的。
@亦歌 会用现成的就行,哈