好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

硬盘多分区引导.docx

8页
  • 卖家[上传人]:公****
  • 文档编号:438232885
  • 上传时间:2024-02-21
  • 文档格式:DOCX
  • 文档大小:16.89KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一,一个硬盘只能分四个分区!有人看到这个标题可能会嗤之以鼻,他会说:你看,我的硬盘从C盘到N盘,有N个分区.这个家 伙井然说一个硬盘只能分四个分区!!我想告诉这些人,当我还是一个菜鸟的时候,看到这个 概念的时候也是这样的反应.但是很快为我的无知感到羞愧.在PC行业标准中一个硬盘只能 分四个分区.这样的四个分区在不同的操作系统中被冠以不同的名称他可能叫 partition ,primary partition或者slice,但是无论他们怎么叫,这些系统都支持这样的四个分区, 都可以识别分区的起始位置和大小等信息.这里我把这样的分区用一个最常用的词来命名:主 分区(primary partition).为什么一个硬盘只能分四个主分区呢?这是由个人计算机初期的设计 架构决定的.一开始,PC被设计成这样的启动过程,开机时主板BIOS进行自检,当一切OK后, 就开始读取硬盘的第一个扇区,一个扇区的大小是512字节,这是计算机工业里的标准,无论什 么硬盘,一个扇区的大小都是512字节.BIOS把这512字节的内容读出来并执行.这512字节 被叫做MBR(master boot record)主引导记录(有的书籍上说是major boot record).这512自己 包含了硬盘最重要的信息:分区表.由于空间只有区区512字节,所以分区表的大小就有很大限 制,他被设计成十分小但是又足够描述硬盘的分区情况.包括分区的开始扇区,结束扇区,引导 标志,分区类型等等.每个分区信息用16个字节表示,四个分区就用掉了 16X4=64个字节,这64个字节分布在MBR的第467-510字节,后面紧接着两个字节AA和55被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一 个没有被分区的硬盘.尽管分区表中明明有数据,也会报错,告诉你系统不存在.所以,对硬盘加 密的简单办法就是从MBR中察掉这两个字节.那么这个硬盘挂到任何电脑上都会显示为一 个没有分区的空白硬盘.但是只要把这两个字节重新写上,数据又能读出.当然,你得知道怎么 重新写上.可用以下的方法验证以上说的知识.(如果没有特别说明,以下操作都在linux和unix 类系统下,所有的数字都是16进制.在windows下你可以用debug工具查看这些内容,很多杀 毒软件也提供备份MBR的功能,可以利用杀毒软件把MBR取出来,再用16进制编辑器查看.)图一,MBR的获取和显示在上面的命令中,先用dd命令把hda上的MBR取出来,并以文件名mbr.dat以文件的方式存 放在硬盘上.因为mbr不是纯文本文件,你用文本编辑器看的时候看到的是乱码,所以需要一 个能把二进制转化为16进制数据输出的工具hexdump .以下是用hexdump输出后的MBR内 容.我个人还强烈的推荐使用KDE自带的16进制编辑工具KHEXedit,这个工具十分好用,大 家可以试一下.可惜,在写一个文档的时候手头没有这个工具.上图中粉红色的就是分区表数据,绿色的就是幻数.可以看到,这块硬盘只分了两个主分区,因 为分区表的最后32字节为空.每个分区表条目的第二字节是引导标记,如果这个字节是80,说 明这个字节可以引导.上图中的第一行红色数据0180中的80,表示这是一个可以引导的主分 区.第二个主分区的引导标记为00(第二行红色数据最后),说明这个主分区不可引导.一个硬盘只 能把一个主分区标记为可引导,如果你用某些非常规手段,比如用dd取出MBR把每个主分 区标记为可引导,再用dd写回去,那么当你用PQ等分区工具分区的时候会报错.值得题一下 的是linux的fdisk工具有一个小小的BUG,就是你可以把每个主分区标记为可引导.而一般的 分区工具都是不允许的.另外,每个分区表项的第六字节表示这个分区的类型.可以看到第一 个分区的第六字节(第二行红色数据第二段)是83,这是linux分区的分区标识.而第二个分区 为0F这是windows扩展分区的分区标识别.利用partitionmagic隐藏分区的原理就是修改这个字节,使系统不能识别,这样在系统下就看 不到该分区了.分区条目的其他字节表示分区的开始位置,结束位置,总大小等等.MBR的其余446个字节是 一段很小的程序.他的作用就是我将在下面讲的.二,操作系统的引导过程.系统引导在计算机英语中被称为bootstrap就是长统靴的靴带,如果你把自己想像成一只掉 进一只长统靴子的小老鼠,然后想像你顺着靴子的靴带慢慢从很深靴筒里面爬出来,然后见到 了广阔的天空,你就明白了计算机系统引导为说明叫bootstrap,因为计算机系统的引导也是这 么一个慢慢爬出来的过程,最后导入整个系统.(搞计算机的老外真有想像力).首先,BIOS把MBR读出来并放入内存运行,MBR中的前446个字节开始运行,他读取分区表 并判断哪个分区是主分区,然后在读取主分区的引导记录,就是某一个主分区的第一个扇区. 请注意他和MBR的区别.为了说明方便,我把他称做PBR(partition boot record),这个概念是我 为了说明方便自创的,在其他文档中是没有的.PMR中也有一段小程序,他负责定位操作系统 内核在该主分区上的位置并将内核载入内存运行.因为PMR也只有512字节,他的能力也十 分有限,所以通常情况下操作系统内核并不是直接由他引导的,他可能先装入一个系统引导程 序到内存运行,然后由系统引导程序把系统内核装入内存.所以在很多引导程序中才有 stage1,stage2,stage3的过程,MBR中的前446字节是操作系统在安装的时候装入的,现在的操 作系统在安装的时候都会现检查MBR中是否已经存在了引导记录,如果已经有了就问讯是 否覆盖.但是有的系统不管三七二十一就直接覆盖掉了 ,windows98就是这样霸道的系统.这就 是为什么有人重装系统后发现不能引导其他系统的原因.以lilo为例,装在MBR中的446字 节是lilo引导程序的第一步就是stagel,然后以stage2去引导stage2的程序,stage2引导stage3. 这几个stage体积一个比一个大,功能一个比一个强,到最后一个stage的时候他已经有足够的 能力引导系统内核,就这样系统内核就被装入内存运行了.注意stage2并不是装在PMR中的, 他只在硬盘的某个位置.具体的引导过程因具体的引导工具而略有不同,而基本原理都是一样 的,特别是在stagel,都是MBR中的446字节.Tip:你可以用dd if=/dev/hda1 of=pbr1.dat bs=512 count=1来获取第一个主分区的内容.三,硬盘分区结构 windows系统总是屏蔽计算机的技术细节,因此用长时间用windows的人都不知道关于硬盘 分区的一些基本概念,除了 C盘D盘这样的说法,他们对于自己的硬盘知之甚少.通常windows 用户的硬盘分区情况如下图:图四,一般windows用户的硬盘分区方法其中浅蓝色表示整个硬盘,红色表示MBR,绿色表示PBR深蓝色表示主分区,黄色表示扩展分 区中的逻辑分区,逻辑分区数据不限定,上图中象征性的画了 4个.特别强调一下,windows的扩 展分区也是一个主分区,所以这里用蓝色表示.这个主分区在其他操作系统中可被识别,但是 却看不到里面的逻辑分区(D盘,E盘...),因为这个概念是windows系统所定义的,不是PC工业 标准,linux系统为了和windows系统兼容,也支持这种逻辑分区.但是大部分的操作系统是不 认这种分区的,比如freeBSD,上图中的这块硬盘在freeBSD中,就是两个主分区.上面的硬盘只用掉了两个主分区,查看MBR中的分区表时分区表最后32个字节都为00.这样 的分区方法如果只装windows系统那么一经足够了 .如果你要windows+linux那么只能把 linux装在逻辑分区中,linux是可以装在逻辑分区中的.通过LILO和GRUB可以将逻辑分区 中的系统内核引导.而windows必需装在主分区中,也许有人会疑问:为什么我可以在C盘装 windows98在D盘装windowsXP呢?windowsXP不是能装在逻辑分区中吗? Windows系统文 件是能装在了逻辑分区,但是启动他所必需的引导文件还是装在C盘这个主分区中的,而且 windows的引导程序NTLoader必需是在分区被标记为活动的时候才能装上,这就是为什么你 格式化C盘后WindowsXP就不能启动,需要光盘修复的原因.但是假如你分了两个独立主分 区,下面那张图那样;图五,有两个主分区和一个扩展分区的硬盘你先把第一个主分区设置为活动分区,装上windows98,再把第二个主分区设置为活动分区,装 上windowsXP那么这两个系统所需的引导程序都在各自的分区上,互不影响,无论你删除或 格式化哪个分区,另一个系统照样完好,只要该系统的分区是活动的,就可以顺利启动,换了其 他操作系统也一样(linux freeBSD sco unix等).现在知道主分区的好处明白主分区资源的保贵 了吧!而图四中的分区方法显然是白白浪费了两个主分区资源.而且因为已经把硬盘空间用完,所以 不能再划分出主分区了,除非你把扩展分区缩小腾出空间来,或者把第一个主分区缩小.因此,如果你想装多个系统在一个硬盘上的话,最合理的分区方案应该像下面那张图中表示的 那样:图六,合理的多分区安装系统方案.这张图表示的硬盘结构中,分了三个主分区+一个windows扩展分区.然后扩展分区中又有若 干个逻辑分区.你可以在主分区中装系统,在逻辑分区中装数据.比如 windows98+windowsXP+linux三系统,可以在第一个主分区装linux把该主分区当做linux的 根分区,第二个装windows98,第三个装windowsXP然后把其中几个逻辑分区格式化成FAT文 件系统,另外几个格式化成linux的文件系统挂在/home /var /usr /opt等装载点,再选一个作为 liunx的swap分区.不过,我要再次强调,在装系统前,一定要把分区设置为活动才能将系统所需 的引导程序全部装在该分区上,不受其他系统的影响.补充说明:扩展分区并不一定放在最后,放在第一个,第二个,第三个,主分区的位置都是可以的.如果你不介意系统和数据混在一齐,你只想在一个硬盘上装四个独立的操作系统,那么也可这 样划分你的硬盘:图七,具有四个独立主分区的硬盘.应该意识到,一个硬盘只能分四个主分区,所以四个主分区的空间大小总合要等于整个硬盘的 大小,否则,剩余的硬盘空间将不能被利用,白白浪费掉.图八,浪费掉的空间.如图八所示,一个硬盘已经有了四个主分区后,剩余的灰色空间将不能在利用(用partition magic扩展分区大小除外)只能白白浪费.你用分区工具再想再这个区域划分区就会报错,这 就是很多人说只能分区2个分区或者分不了区的原因,你可以通过一些很变态的方法来使用这块空间.比如,假设空白空间是在硬盘20G以后你可以用以下的方法在第20G以后的空间存放一些非常规数据.#dd if=/dev/hda1 of=/dev/hda bs=1M skip=20G上面的这条命令把第一个主分区中的所有内容存放在第20G以后的空白硬盘空间上.#dd if=/dev/hda of=/dev/hda1 bs=1M seek=20G 上面的这条命令用于恢复hdal上的数据.这是一种很变态的,很底层的数据备份方法.除非你 对硬盘分区知识有足够的了结,而且对自己硬盘分区的结构十分清楚,并精通dd命令的用法. 否则千万不要尝试,否则,一个命令就把你硬盘上的数据全毁了 .笔者在用这条命令前也会心惊胆战,反复确认数据才敢按下回车建.初学者千万不要尝试,除非你的硬盘数据没有用.四,window和linux支持的分区结构w。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.