1024柱面限制

来源:互联网 发布:电脑淘宝不能购买东西 编辑:程序博客网 时间:2024/05/17 13:10

由来:

    扇区0(MBR,主引导分区)存放一段代码,这段代码指定了BIOS从哪里启动系统。在计算机启动的时候,BIOS从扇区0读取数据,跳到相应地址,读取系统内核,开始启动。对于磁盘地址的表示,BIOS(BIOS调用INT13)能识别两种模式。一种 linear(线性),另外一种是 triple(CHS,cylinder,head,sector)。但BIOS出现的时间比LINEAR要早,所以在处理LINEAR的时候,也是转化成CHS来访问磁盘的。CHS使用3个字节(BYTE,24bit)来表示磁盘地址,10位表示柱面,6位表示头,8位表示扇区。因为表示柱面的只有10位,那么柱面的个数最多只能有2的10次方也就是1024个(0~1023)。因为一个扇区512字节,那么使用CHS模式能表示的磁盘地址=1024*64*256*512=8589934592字节=8.4GB,这就是著名的1024柱面限制和8.4GB限制。

   为了表示比8.4GB更大的磁盘,后来出现了一个扩展BIOS接口(Extended BIOS Interface),使用16字节来表示磁盘地址。LILO21.4版本之前缺省使用LINEAR模式,所以不能突破限制,在更新的版本中,使用了LBA32。使用LBA32的有两个意思:
   1、使用LINEAR模式
   2、使用扩展BIOS(也就是使用16字节的磁盘地址)
所以,只要在lilo.conf中加上一行“LBA32”或者“lba32”就可以突破1024柱面和8.4GB的限制了(也可以在1024柱面之前分出一个区,用来mount存放内核文件的/boot)

解决:

    目前市面上大多数的Linux发行版都不支持大于1024柱面的分区作为/Root区。那么如何冲破1024柱面的限制就成了养活这只小企鹅的关键了。

  被关在窗户(Windows)内这么多年的计算机爱好者们,现在终于多了Linux这只小宠物,不再那么寂寞了,可惜它的翅膀还不足以带着我们冲出窗外,只好让它和“窗户”一起陪伴着我们。绝大多数用户都是先在第一个主分区安装常用的Windows 9.x、NT、Windows 2000,并且分区占用大部分硬盘容量,等到装Linux时,分区所在位置已经大于1024柱面了,而目前市面上大多数的Linux发行版都不支持大于1024柱面的分区作为/Root区。那么如何冲破1024柱面的限制就成了养活这只小企鹅的关键了。

  Linux中的Disk Druid工具分区功能不强,在分/Root区时,无论分区容量多大,总显示Boot Partion too big(引导分区太大),且Allocation Failed(分区失败)。这是由于BIOS的限制,对于IDE硬盘,引导分区应包含在硬盘前1024柱面内,当Linux起引导作用的根目录分区超过1024柱面时,分区失败,而划分其他区则没问题。解决办法是改用Linux中的Fdisk工具,将/Root区设为第三个主分区(即/dev/hda3,千万不要安装在逻辑分区上),并分配好大小。然后再返回到Druid工具,编辑该分区,在Mount Point中选“/”,/Root分区即告分配完毕。其他分区(如:swap区)应直接在Druid中建立。请注意,如不使用Bootstar等特殊的分区工具,一个硬盘上最多建立三个主分区和一个扩展分区(可分成四个逻辑分区)!

  接下来,我们会遇到设置启动模式,Linux提供LILO作为启动工具,可以管理各个操作系统的启动。但如果你安装的是Windows NT或Windows 2000,并且想使用它们所带的引导装载程序来实现双重启动,那么在设置Install LILO boot record on选项时一定要选First sector of boot partion,Default boot image选DOS。可是,Linux的引导程序根本没有写到Linux的引导分区(即/Root分区)的引导扇区中,你只能进入Windows。Linux内核载入程序LILO,长久以来一直无法由 1024柱面后的硬盘分区载入操作系统内核。有的书上介绍可用Linuxconf配置LILO选项,或编辑/etc/lilo.conf后运行LILO,重写引导扇区,可这仍然跨越不了1024柱面这道门槛。好在天无绝人之路,这个FAQ级的问题,终于在LILO 21.4.2 版出现后正式成为历史。LILO 21.4.2采用了所谓 EDD BIOS 延伸功能,破除了1024 柱面开机的限制,并且一口气将支持的硬盘大小增加到2TB。更方便的是,我们的软件特供中就提供了LILO 21.4.3,只要在Linux下用“gunzip lilo.tar.gz|tar xvf-”命令解压缩后,用Make命令编译,即可生成新版的LILO程序。接下来的事我不说你也知道,编辑/etc/lilo.conf后,执行lilo -L命令(-L参数不可少),一切OK!

原创粉丝点击