1024-Cylinder Limit
1024-磁柱限制
当BIOS搜寻开机磁盘时,其实就是在检查磁盘的第一个扇区(sector)是否含有“引导记录”。引导记录本身是一段有固定长度(512-byte)与固定格式的数据,它记录了磁盘的“主分区表”(Master Partition Table),以及一小段“主引导程序”(Master Boot Code, MBC)。因此开机磁盘的第一扇区被我们称为“主引导记录”(Master Boot Record),通常简写为MBR。
当你安装Windows操作系统时,安装程序会将Windows自己的MBC写入MBR,该MBC会运行Windows的NTLDR加载程序。Linux比较灵活,你可以将Linux的加载程序(LILO或GRUB)放到MBR或root分区。
当你将Linux加载程序放到root分区,必须靠MBR上的MBC将CPU控制权交给Linux加载程序。在这种情况下,Linux加载程序只能通过BIOS来取得磁盘的结构信息(调用BIOS的Interrupt 13H function 8H),也就是所谓的CHS参数(Cylinder、Head、Sector)。然而BIOS提供的Cylinder参数只有10-bit,对于磁柱数多余1024的磁盘,这表示Linux加载程序只能访问到磁盘的前1024-Cylinder(注1)。倘若内核映像文件时放在1024磁柱之后的位置,开机就会失败。
避免这个问题的方法,是在磁盘的起始处规划一个小小的/boot分区(通常256MB就已足够),然后将内核映像文件放在此分区内,如此一来,就可以确保内核映像文件的位置一定会在BIOS的寻址能力范围内。
注1:1024-Cylinder所出现的位置可用此公式算出来:1024 × H × S × 512。注意其中的H与S是磁盘的结构参数,分别是Head(磁头数)与Sector(每轨的扇区数)。