1024柱面限制

由來:

    扇區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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章