ubuntu單系統和uefi+gpt分區

這件事我已經預謀很久了,然后我終于付出了行動。雖然我現在把操作系統換成Ubuntu并不是件明智的事,但是我那顆Geek的心已經等不了了。
這次操作系統分區我先是依照的《鳥哥的私房菜》分區的:

ubuntu_partion.jpeg

分區就和這張圖類似。之后就出現這個問題:
ubuntu_writegrup_fail.jpeg

這我就很蒙了,我明明按照教程來的怎么能錯呢?
還是百度大法好總,我在這里找到了點啟示:http://forum.ubuntu.org.cn/viewtopic.php?t=465188
沒錯:我就是uefi開機,莫非和uefi開機有關系,尤其是那個繁體字的那幾句話還要gpt分區,這又是個什么鬼。
好吧情急之下只能再次開啟百度大法,我在這里找到了啟示:http://blog.163.com/yangz_ranma/blog/static/121054460201601912253287/
然后按照他的操作總算是把Ubuntu給裝上了
好吧,雖然把操作系統給裝上了但還是有諸多疑惑,于是我就又去《鳥哥的私房菜》來尋求答案了。
我們先來認識下硬盤的結構如圖:
hard_disk01.jpg

整個磁碟盤上頭好像有多個同心圓繪制出的圓形圖,而由圓心以放射狀的方式分割出磁碟的最小儲存單位,那就是磁區(Sector), 在物理組成分面,每個磁區大小為512Bytes,這個值是不會改變的。而磁區組成一個圓就成為磁軌(track), 如果是在多碟的硬盤上面,在所有磁碟盤上面的同一個磁軌可以組成一個磁柱(Cylinder), 磁柱也是一般我們分割硬盤時的最小單位了!
硬盤這部分鳥哥是這么說的:
整個磁碟盤上頭好像有多個同心圓繪制出的圓形圖,而由圓心以放射狀的方式分割出磁碟的最小儲存單位,那就是扇區(Sector), 在物理組成分面,每個磁區大小為512Bytes,這個值是不會改變的。而磁區組成一個圓就成為磁道(track), 如果是在多碟的硬盤上面,在所有磁碟盤上面的同一個磁道可以組成一個柱面(Cylinder), 磁柱也是一般我們分割硬盤時的最小單位了!
在計算整個硬盤的儲存量時,簡單的計算公式就是:『header數量 * 每個header負責的磁柱數量 * 每個磁柱所含有的磁區數量 * 磁區的容量』,單位換算為『header * cylinder/header * secter/cylinder * 512bytes/secter』,簡單的寫法如下: Head x Cylinder x Sector x 512 Bytes。 不過要注意的是,一般硬盤制造商在顯示硬盤的容量時,大多是以十進位來編號,因此市售的500GB硬盤, 理論上僅會有460GBytes左右的容量喔
注釋:Heads就是磁頭數

接下來我們談MBR分區:
早期的 Linux 系統為了相容于 Windows 的磁盤,因此使用的是支持 Windows 的
MBR(Master Boot Record, 主要開機紀錄區) 的方式來處理開機管理程序與分區表!而開
機管理程序紀錄區與分區表則通通放在磁盤的第一個扇區, 這個扇區通常是 512Bytes 的大
小 (舊的磁盤扇區都是 512Bytes 喔!),所以說,第一個扇區 512Bytes 會有這兩個數據:
主要開機記錄區(Master Boot Record, MBR):可以安裝開機管理程序的地方,有446
Bytes

  • 分區表(partition table):記錄整顆硬盤分區的狀態,有64 Bytes
  • 由于分區表所在區塊僅有64 Bytes容量,因此最多僅能有四組記錄區,每組記錄區記錄了該區
    段的啟始與結束的柱面號碼。 若將硬盤以長條形來看,然后將柱面以直條圖來看,那么那64
    Bytes的記錄區段有點像下面的圖示:


    Diskdivide.jpg

    由于分區表就只有64 Bytes而已,最多只能容納四筆分區的記錄, 這四個分區的記錄被稱為
    主要(Primary)或延伸(Extended)分區。 根據上面的圖示與說明,我們可以得到幾個重
    點信息:

  • 其實所謂的“分區”只是針對那個64 Bytes的分區表進行設置而已!
  • 硬盤默認的分區表僅能寫入四組分區信息
  • 這四組分區信息我們稱為主要(Primary)或延伸(Extended)分區
  • 分區的最小單位“通常”為柱面(cylinder)
  • 當系統要寫入磁盤時,一定會參考磁盤分區表,才能針對某個分區進行數據的處理

MBR邏輯分區:
既然分區表只有記錄四組數據的空間,那么是否代表我一顆硬盤最多只能分區出四個分區?
當然不是啦!有經驗的朋友都知道, 你可以將一顆硬盤分區成十個以上的分區的!那又是如
何達到的呢?在Windows/Linux系統中, 我們是通過剛剛談到的延伸分區(Extended)的方
式來處理的啦!延伸分區的想法是: 既然第一個扇區所在的分區表只能記錄四筆數據, 那我
可否利用額外的扇區來記錄更多的分區信息?實際上圖示有點像下面這樣:

logicDivision.jpg

Tips 實際上延伸分區并不是只占一個區塊,而是會分佈在每個分區的最前面幾個扇區來記載
分區信息的!只是為了方便讀者記憶, 鳥哥在上圖就將他簡化了!有興趣的讀者可以到下面
的鏈接瞧一瞧實際延伸分區的紀錄方式: http://en.wikipedia.org/wiki/Extended_boot_record
在上圖當中,我們知道硬盤的四個分區記錄區僅使用到兩個,P1為主要分區,而P2則為延伸
分區。請注意, 延伸分區的目的是使用額外的扇區來記錄分區信息,延伸分區本身并不能被
拿來格式化。 然后我們可以通過延伸分區所指向的那個區塊繼續作分區的記錄。
如上圖右下方那個區塊有繼續分區出五個分區, 這五個由延伸分區繼續切出來的分區,就被
稱為邏輯分區(logical partition)。 同時注意一下,由于邏輯分區是由延伸分區繼續分區出
來的,所以他可以使用的柱面范圍就是延伸分區所設置的范圍喔! 也就是圖中的101~400
啦!
MBR 主要分區、延伸分區與邏輯分區的特性我們作個簡單的定義啰:

  • 主要分區與延伸分區最多可以有四筆(硬盤的限制)
  • 延伸分區最多只能有一個(操作系統的限制)
  • 邏輯分區是由延伸分區持續切割出來的分區;
  • 能夠被格式化后,作為數據存取的分區為主要分區與邏輯分區。延伸分區無法格式化;
  • 邏輯分區的數量依操作系統而不同,在Linux系統中SATA硬盤已經可以突破63個以上的
    分區限制;

GPT分區:
因為過去一個扇區大小就是 512Bytes 而已,不過目前已經有 4K 的扇區設計出現!為了相容
于所有的磁盤,因此在扇區的定義上面, 大多會使用所謂的邏輯區塊位址(Logical Block
Address, LBA)來處理。GPT 將磁盤所有區塊以此 LBA(默認為 512Bytes 喔!) 來規劃,
而第一個 LBA 稱為 LBA0 (從 0 開始編號)。
與 MBR 僅使用第一個 512Bytes 區塊來紀錄不同, GPT 使用了 34 個 LBA 區塊來紀錄分區
信息!同時與過去 MBR 僅有一的區塊,被干掉就死光光的情況不同, GPT 除了前面 34 個
LBA 之外,整個磁盤的最后 33 個 LBA 也拿來作為另一個備份!這樣或許會比較安全些吧!
詳細的結構有點像下面的模樣:


GPTdivision.png
  • LBA0 (MBR 相容區塊)
    與 MBR 模式相似的,這個相容區塊也分為兩個部份,一個就是跟之前 446 Bytes 相似的
    區塊,儲存了第一階段的開機管理程序! 而在原本的分區表的紀錄區內,這個相容模式
    僅放入一個特殊標志的分區,用來表示此磁盤為 GPT 格式之意。而不懂 GPT 分區表的
    磁盤管理程序, 就不會認識這顆磁盤,除非用戶有特別要求要處理這顆磁盤,否則該管
    理軟件不能修改此分區信息,進一步保護了此磁盤喔!
  • LBA1 (GPT 表頭紀錄)
    這個部份紀錄了分區表本身的位置與大小,同時紀錄了備份用的 GPT 分區 (就是前面談
    到的在最后 34 個 LBA 區塊) 放置的位置, 同時放置了分區表的檢驗機制碼
    (CRC32),操作系統可以根據這個檢驗碼來判斷 GPT 是否正確。若有錯誤,還可以通
    過這個紀錄區來取得備份的 GPT(磁盤最后的那個備份區塊) 來恢復 GPT 的正常運
    行!
  • LBA2-33 (實際紀錄分區信息處)
    從 LBA2 區塊開始,每個 LBA 都可以紀錄 4 筆分區紀錄,所以在默認的情況下,總共可
    以有 432 = 128 筆分區紀錄喔!因為每個 LBA 有 512Bytes,因此每筆紀錄用到 128
    Bytes 的空間,除了每筆紀錄所需要的識別碼與相關的紀錄之外,GPT 在每筆紀錄中分
    別提供了 64bits 來記載開始/結束的扇區號碼,因此,GPT 分區表對於單一分區來說,
    他的最大容量限制就會在“ 264 512Bytes = 263 1KBytes = 233TB = 8 ZB ”,要注意 1ZB=230TB
    啦! 你說有沒有夠大了?
    現在 GPT 分區默認可以提供多達 128 筆紀錄,而在 Linux 本身的核心設備紀錄中,針對單一
    磁盤來說,雖然過去最多只能到達 15 個分區,不過由于 Linux kernel 通過 udev 等方式的處
    理,現在 Linux 也已經沒有這個限制在了! 此外,GPT 分區已經沒有所謂的主、延伸、邏輯
    分區的概念,既然每筆紀錄都可以獨立存在, 當然每個都可以視為是主分區!每一個分區都
    可以拿來格式化使用喔!

BIOS+MBR/GPT搭配啟動情況
在計算機概論里面我們有談到那個可愛的BIOS與CMOS兩個東西, CMOS是記錄各項硬件參
數且嵌入在主板上面的儲存器,BIOS則是一個寫入到主板上的一個固件(再次說明, 固件就
是寫入到硬件上的一個軟件程序)。這個BIOS就是在開機的時候,計算機系統會主動執行的
第一個程序了!
接下來BIOS會去分析計算機里面有哪些儲存設備,我們以硬盤為例,BIOS會依據使用者的設
置去取得能夠開機的硬盤, 并且到該硬盤里面去讀取第一個扇區的MBR位置。 MBR這個僅
有446 Bytes的硬盤容量里面會放置最基本的開機管理程序, 此時BIOS就功成圓滿,而接下
來就是MBR內的開機管理程序的工作了。
這個開機管理程序的目的是在載入(load)核心文件, 由于開機管理程序是操作系統在安裝
的時候所提供的,所以他會認識硬盤內的文件系統格式,因此就能夠讀取核心文件, 然后接
下來就是核心文件的工作,開機管理程序與 BIOS 也功成圓滿,將之后的工作就交給大家所
知道的操作系統啦!
簡單的說,整個開機流程到操作系統之前的動作應該是這樣的:

  1. BIOS:開機主動執行的固件,會認識第一個可開機的設備;
  2. MBR:第一個可開機設備的第一個扇區內的主要開機記錄區塊,內含開機管理程序;
  3. 開機管理程序(boot loader):一支可讀取核心文件來執行的軟件;
  4. 核心文件:開始操作系統的功能...
    第二點要注意,如果你的分區表為 GPT 格式的話,那么 BIOS 也能夠從 LBA0 的 MBR 相容
    區塊讀取第一階段的開機管理程序碼, 如果你的開機管理程序能夠認識 GPT 的話,那么使用
    BIOS 同樣可以讀取到正確的操作系統核心喔!換句話說, 如果開機管理程序不懂 GPT ,例
    如 Windows XP 的環境,那自然就無法讀取核心文件,開機就失敗了!
    第二點要注意,如果你的分區表為 GPT 格式的話,那么 BIOS 也能夠從 LBA0 的 MBR 相容
    區塊讀取第一階段的開機管理程序碼, 如果你的開機管理程序能夠認識 GPT 的話,那么使用
    BIOS 同樣可以讀取到正確的操作系統核心喔!換句話說, 如果開機管理程序不懂 GPT ,例
    如 Windows XP 的環境,那自然就無法讀取核心文件,開機就失敗了!

UEFI+GPT搭配啟動情況:
我們現在知道 GPT 可以提供到 64bit 的尋址,然后也能夠使用較大的區塊來處理開機管理程
序。但是 BIOS 其實不懂 GPT 耶!還得要通過 GPT 提供相容模式才能夠讀寫這個磁盤設備
~而且 BIOS 僅為 16 位的程序,在與現階段新的操作系統接軌方面有點弱掉了! 為了解決這
個問題,因此就有了 UEFI (Unified Extensible Firmware Interface) 這個統一可延伸固件界
面的產生。
UEFI 主要是想要取代 BIOS 這個固件界面,因此我們也稱 UEFI 為 UEFI BIOS 就是了。
UEFI 使用 C 程序語言,比起使用組合語言的傳統 BIOS 要更容易開發!也因為使用 C 語言
來撰寫,因此如果開發者夠厲害,甚至可以在 UEFI 開機階段就讓該系統了解 TCP/IP 而直接
上網! 根本不需要進入操作系統耶!這讓小型系統的開發充滿各式各樣的可能性!
另外,與 BIOS 模式相比,雖然 UEFI 可以直接取得 GPT 的分區表,不過最好依舊擁有
BIOS boot 的分區支持, 同時,為了與 windows 相容,并且提供其他第三方廠商所使用的
UEFI 應用程序儲存的空間,你必須要格式化一個 vfat 的文件系統, 大約提供 512MB 到 1G左右的容量,以讓其他 UEFI 執行較為方便。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容