好就沒用linux了,這幾天在win8筆記本上用虛擬機裝了下,也準備裝到硬盤上和win8雙系統使用,發現一些概念已經跟不上時代了。html
一個是在虛擬機中裝的時候,分配了虛擬硬盤分區時,提示選擇分區表類型,有GPT,DOS什麼的,開始沒多想直接選了默認的GPT,linux
後來在裝grub到主引導分區的時候出現問題,網上查才知道是分區表的問題,其實在用cfdisk分區的時候已經發現一些不一樣了,好比GPT分區表的時候,windows
新建分區所有都是主分區,納悶怎麼沒有邏輯分區,怎麼分區不能設置bootable,分區類型怎麼有這麼多沒見過的;後來從新來過,安全
分區表類型選DOS就是熟悉的味道了,順利在virtualbox中裝上archlinux,在虛擬機上用感受仍是慢,遂又在實體硬盤上裝雙系統。網絡
裝雙系統時,發現無法選啓動介質,一查發現這個我去年買的ASUS N550筆記本預裝正版win8,採用的是UEFI,不是傳統的BIOS了,1TB的硬盤也默認是GPT分區表了。數據結構
不是MBR那種分區表格式了,grub也不能像以前那樣裝到MBR由grub引導全部系統,或者裝到linux的root分區用easyBCD來引導該分區了。須要裝支持EFI的grub,須要另外裝efibootmgr等幾個包使grub支持EFI。編輯器
而且使用--target=x86_64-efi來指定grub安裝目標類型爲efi,同時須要經過--efi-directory=/boot/efi來指定esp分區。工具
若是電腦上已經裝有win8等系統,那麼就確定已經有esp分區了,用parted /dev/sda print命令,能夠看到分區狀況,學習
最後一列的flags,能夠看到有esp字樣,該分區通常100M左右大小,fat32文件系統,在個人電腦上是第一個分區,用mount -t vfat /dev/sda1 /boot/efi掛載便可,沒有該目錄則自行建立,會在該分區中建立grub的引導程序。ui
安裝成功後,grub-mkconfig自動生成啓動項就OK了。
今天網上搜了一下UEFI和GPT相關知識,在這裏記錄一下:
原文地址:http://www.ihacksoft.com/uefi.html
前幾天在幫同事小何筆記本電腦安裝64位 Windows 7 的時候,遇到一個歷來沒有碰到過的問題,使用光盤安裝時,提示:Windows沒法安裝到這個磁盤。選中的磁盤具備MBR分區表。在EFI系統上,Windows只能安裝到GPT磁盤。我還特地用iPhone拍了個照:
什麼是EFI系統?GPT磁盤又是什麼?一會兒蒙了,怎麼跳出來這麼多新詞?看來我已經落伍了,因而引起了對UEFI的學習和探究。若是你也和我同樣不瞭解,那麼一塊兒學習下吧,若是你已經對其熟知,就請略過吧。
UEFI,全稱Unified Extensible Firmware Interface,即「統一的可擴展固件接口」,是一種詳細描述全新類型接口的標準,是適用於電腦的標準固件接口,旨在代替BIOS(基本輸入/輸出系統)。此標準由UEFI聯盟中的140多個技術公司共同建立,其中包括微軟公司。UEFI旨在提升軟件互操做性和解決BIOS的侷限性。
要詳細瞭解UEFI,還得從BIOS講起。咱們都知道,每一臺普通的電腦都會有一個BIOS,用於加載電腦最基本的程式碼,擔負着初始化硬件,檢測硬件功能以及引導操做系統的任務。UEFI就是與BIOS相對的概念,這種接口用於操做系統自動從預啓動的操做環境,加載到一種操做系統上,從而達到開機程序化繁爲簡節省時間的目的。傳統BIOS技術正在逐步被UEFI取而代之,在最近新出廠的電腦中,不少已經使用UEFI,使用UEFI模式安裝操做系統是趨勢所在。
做爲傳統BIOS(Basic Input/Output System)的繼任者,UEFI擁有前輩所不具有的諸多功能,好比圖形化界面、多種多樣的操做方式、容許植入硬件驅動等等。這些特性讓UEFI相比於傳統BIOS更加易用、更加多功能、更加方便。而Windows 8在發佈之初就對外宣佈全面支持UEFI,這也促使了衆多主板廠商紛紛轉投UEFI,並將此做爲主板的標準配置之一。
UEFI拋去了傳統BIOS須要長時間自檢的問題,讓硬件初始化以及引導系統變得簡潔快速。換種方式說,UEFI已經把電腦的BIOS變得不像是BIOS,而是一個小型固化在主板上的操做系統同樣,加上UEFI自己的開發語言已經從彙編轉變成C語言,高級語言的加入讓廠商深度開發UEFI變爲可能。
如下關於 UEFI的特色 來自微軟官網:
一、經過保護預啓動或預引導進程,抵禦bootkit攻擊,從而提升安全性。
二、縮短了啓動時間和從休眠狀態恢復的時間。
三、支持容量超過2.2 TB的驅動器。
四、支持64位的現代固件設備驅動程序,系統在啓動過程當中可使用它們來對超過172億GB的內存進行尋址。
五、UEFI硬件可與BIOS結合使用。
如下關於 BIOS和UEFI的區別 來自網絡:
UEFI是BIOS的一種升級替代方案。關於BIOS和UEFI兩者的比較,若是僅從系統啓動原理方面來作比較,UEFI之因此比BIOS強大,是由於UEFI自己已經至關於一個微型操做系統,其帶來的便利之處在於:
首先,UEFI已具有文件系統的支持,它可以直接讀取FAT分區中的文件。什麼是文件系統?簡單說,文件系統是操做系統組織管理文件的一種方法,直白點說就是把硬盤上的數據以文件的形式呈現給用戶。Fat3二、NTFS都是常見的文件系統類型。
其次,可開發出直接在UEFI下運行的應用程序,這類程序文件一般以efi結尾。既然UEFI能夠直接識別FAT分區中的文件,又有可直接在其中運行的應用程序。那麼徹底能夠將Windows安裝程序作成efi類型應用程序,而後把它放到任意fat分區中直接運行便可,如此一來安裝Windows操做系統這件過去看上去稍微有點複雜的事情忽然就變很是簡單了,就像在Windows下打開QQ同樣簡單。而事實上,也就是這麼一回事。
最後,要知道這些都是BIOS作不到的。由於BIOS下啓動操做系統以前,必須從硬盤上指定扇區讀取系統啓動代碼(包含在主引導記錄中),而後從活動分區中引導啓動操做系統。對扇區的操做遠比不上對分區中文件的操做更直觀更簡單,因此在BIOS下引導安裝Windows操做系統,咱們不得不使用一些工具對設備進行配置以達到啓動要求。而在UEFI下,這些通通都不須要,再也不須要主引導記錄,再也不須要活動分區,不須要任何工具,只要複製安裝文件到一個FAT32(主)分區/U盤中,而後從這個分區/U盤啓動,安裝Windows就是這麼簡單。後面會有專門的文章來詳細介紹UEFI下安裝Windows七、8的方法。
原文地址:http://czmmiao.iteye.com/blog/1751408
GPT概述
全局惟一標識分區表(GUID Partition Table,縮寫:GPT)是一個實體硬盤的分區結構。它是可擴展固件接口標準的一部分,用來替代BIOS中的主引導記錄分區表。 傳統的主啓動記錄 (MBR) 磁盤分區支持最大卷爲 2.2 TB (terabytes) ,每一個磁盤最多有 4 個主分區(或 3 個主分區,1 個擴展分區和無限制的邏輯驅動器)。 與MBR 分區方法相比,GPT 具備更多的優勢,由於它容許每一個磁盤有多達 128 個分區,支持高達 18 千兆兆字節 (exabytes,1EB=10^6TB) 的卷大小,容許將主磁盤分區表和備份磁盤分區表用於冗餘,還支持惟一的磁盤和分區 ID (GUID)。
與 MBR 分區的磁盤不一樣,GPT的分區信息是在分區中,而不象MBR同樣在主引導扇區。爲保護GPT不受MBR類磁盤管理軟件的危害,GPT在主引導扇區創建了一 個保護分區 (Protective MBR)的MBR分區表,這種分區的類型標識爲0xEE,這個保護分區的大小在Windows下爲128MB,Mac OS X下爲200MB,在Window磁盤管理器里名爲GPT保護分區,可以讓MBR類磁盤管理軟件把GPT當作一個未知格式的分區,而不是錯誤地當成一個未分 區的磁盤。另外,GPT 分區磁盤有多餘的主要及備份分區表來提升分區數據結構的完整性。
在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲着系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出於兼容性考慮,硬盤的第一個扇區仍然用做MBR,以後纔是GPT頭。跟現代的MBR同樣,GPT也使用邏輯區塊地址(LBA)取代了早期的CHS尋址方式。傳統MBR信息存儲於LBA 0,GPT頭存儲於LBA 1,接下來纔是分區表自己。64位Windows操做系統使用16,384字節(或32扇區)做爲GPT分區表,接下來的LBA 34是硬盤上第一個分區的開始。爲了減小分區表損壞的風險,GPT在硬盤最後保存了一份分區表的副本。與主啓動記錄 (MBR) 分區方法相比,GPT 具備更多的優勢,由於它容許每一個磁盤有多達 128 個分區,支持高達18 千兆兆字節的卷大小,容許將主磁盤分區表和備份磁盤分區表用於冗餘,還支持惟一的磁盤和分區ID(GUID)。
GPT結構
GPT的結構見下圖
傳統MBR (LBA 0)
在GPT分區表的最開頭,處於兼容性考慮仍然存儲了一份傳統的MBR,用來防止不支持GPT的硬盤管理工具錯誤識別並破壞硬盤中的數據,這個MBR也叫作保護MBR。在支持從GPT啓動的操做系統中,這裏也用於存儲第一階段的啓動代碼。在這個MBR中,只有一個標識爲0xEE的分區,以此來表示這塊硬盤使用GPT分區表。不能識別GPT硬盤的操做系統一般會識別出一個未知類型的分區,而且拒絕對硬盤進行操做,除非用戶特別要求刪除這個分區。這就避免了意外刪除分區的危險。另外,可以識別GPT分區表的操做系統會檢查保護MBR中的分區表,若是分區類型不是0xEE或者MBR分區表中有多個項,也會拒絕對硬盤進行操做。
在使用MBR/GPT混合分區表的硬盤中,這部分存儲了GPT分區表的一部分分區(一般是前四個分區),可使不支持從GPT啓動的操做系統從這個MBR啓動,啓動後只能操做MBR分區表中的分區。如Boot Camp就是使用這種方式啓動Windows。
分區表頭 (LBA 1)
分區表頭定義了硬盤的可用空間以及組成分區表的項的大小和數量。在使用64位Windows Server 2003的機器上,最多能夠建立128個分區,即分區表中保留了128個項,其中每一個都是128字節。(EFI標準要求分區表最小要有16,384字節,即128個分區項的大小)
分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭自己的位置和大小(位置老是在LBA 1)以及備份分區表頭和分區表的位置和大小(在硬盤的最後)。它還儲存着它自己和分區表的CRC32校驗。固件、引導程序和操做系統在啓動時能夠根據這個校驗值來判斷分區表是否出錯,若是出錯了,可使用軟件從硬盤最後的備份GPT中恢復整個分區表,若是備份GPT也校驗錯誤,硬盤將不可以使用。因此GPT硬盤的分區表不能夠直接使用16進制編輯器修改。
分區表頭的格式以下
起始字節 | 長度 | 內容 |
0 | 8字節 | 簽名("EFI PART", 45 46 49 20 50 41 52 54) |
8 | 4字節 | 修訂(在1.0版中,值是 00 00 01 00) |
12 | 4字節 | 分區表頭的大小(單位是字節,一般是92字節,即 5C 00 00 00) |
16 | 4字節 | 分區表頭(第0-91字節)的CRC32 校驗,在計算時,把這個字段做爲0處理,須要計算出分區串行的CRC32校驗後再計算本字段 |
20 | 4字節 | 保留,必須是 0 |
24 | 8字節 | 當前LBA(這個分區表頭的位置) |
32 | 8字節 | 備份LBA(另外一個分區表頭的位置) |
40 | 8字節 | 第一個可用於分區的LBA(主分區表的最後一個LBA + 1) |
48 | 8字節 | 最後一個可用於分區的LBA(備份分區表的第一個LBA − 1) |
56 | 16字節 | 硬盤GUID(在類UNIX 系統中也叫UUID) |
72 | 8字節 | 分區表項的起始LBA(在主分區表中是2) |
80 | 4字節 | 分區表項的數量 |
84 | 4字節 | 一個分區表項的大小(一般是128) |
88 | 4字節 | 分區串行的CRC32校驗 |
92 | * | 保留,剩餘的字節必須是0(對於512字節LBA的硬盤便是420個字節) |
主分區表和備份分區表的頭分別位於硬盤的第二個扇區(LBA 1)以及硬盤的最後一個扇區。備份分區表頭中的信息是關於備份分區表的。
分區表項 (LBA 2–33)
GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。例如,EFI系統分區的GUID類型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下來的16字節是該分區惟一的GUID(這個GUID指的是該分區自己,而以前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。
GPT分區表項的格式以下
起始字節 | 長度 | 內容 |
0 | 16字節 | 分區類型GUID |
16 | 16字節 | 分區GUID |
32 | 8字節 | 起始LBA(小端序 ) |
40 | 8字節 | 末尾LBA |
48 | 8字節 | 屬性標籤(如:60 表示「只讀」) |
56 | 72字節 | 分區名(能夠包括36個UTF-16(小端序)字符) |
parted概述
上文介紹了GPT,因爲常見的fdisk不支持GPT(在硬盤容量大於2Tb的時候沒法使用fdisk進行分區的管理),故在IA64平臺上管理磁盤時parted仍是至關實用的,GNU Parted 具備豐富的功能,它除了可以進行分區的添加、刪除等常見操做外,還能夠進行移動分區、建立文件系統、調整文件系統大小、複製文件系統等操做。它能夠處理最多見的分區格式,包括:ext2,ext3,fat16,fat32,NTFS,ReiserFS,JFS,XFS,UFS,HFS,以及Linux交換分區。
parted 命令格式
parted 有兩種運行模式:命令行模式和交互模式。與 fdisk 的交互模式交互模式不一樣,在 parted 的交互模式下執行命令,一旦按回車鍵確認,命令就立刻執行,對磁盤的更改就馬上生效。
parted 命令的經常使用格式是:
一、# parted [選項] <硬盤設備名>
二、# parted [選項] <硬盤設備名> <子命令> [<子命令參數>]
格式(1)用於進入parted 的交互模式,在該模式下輸入parted的子命令對指定的硬盤進行分區等操做。quit 命令用於退出交互模式。
格式(2)直接在命令行方式下對指定的硬盤進行分區等操做。
其中經常使用的選項爲:
-h, ––help — 顯示求助信息
-i, ––interactive — 在必要時提示用戶
-l, ––list — 顯示全部磁盤設備的分區表
-s, ––script — 從不提示用戶
-v, ––version — 顯示版本
不管哪一種模式,在parted中均可以使用若干子命令,見下表。
命令 | 說明 |
help [COMMAND] | 打印命令的幫助信息,或指定命令的幫助信息 |
print [free|NUMBER|all] | 顯示分區表, 指定編號的分區, 或全部設備的分區表 |
mkpart PART-TYPE [FSTYPE] START END | 建立新分區。PART-TYPE 是如下類型之一:primary(主分 區)、extended(擴展分區)、logical(邏輯分區)。START 和 END 是新分區開始和結束的具體位置。 |
rm NUMBER | 刪除指定編號 NUMBER 的分區。 |
set NUMBER FLAG STATE | 對指定編號 NUMBER 的分區設置分區標記 FLAG。對於 PC 經常使用的 msdos 分區表來講,分區標記 FLAG 可有以下值:」boot」(引導), 「hidden」(隱藏), 「raid」(軟RAID磁盤陣), 「lvm」(邏輯卷), 「lba」 (LBA,Logic Block Addressing模式)。 狀態STATE 的取值是:on 或 off |
unit UNIT | 設置默認輸出時表示磁盤大小的單位爲 UNIT,UNIT 的經常使用取值能夠爲:‘MB’、‘GB’、‘%’(佔整個磁盤設備的百分之多少)、‘compact’(人類易讀方式,相似於 df 命令中 -h 參數的用)、‘s’(扇區)、‘cyl’ (柱面)、‘chs’ (柱面cylinders:磁頭 heads:扇區 sectors 的地址) |
mkfs NUMBER FS-TYPE | 對指定編號 NUMBER 的分區建立指定類型 FS-TYPE 的文件系 統。 |
mkpartfs PART-TYPE FSTYPE START END | 建立新分區同時建立文件系統。FS-TYPE 是如下類型一:ext二、fat1六、fat3二、linuxswap、NTFS、reiserfs、ufs 等 |
cp [FROM-DEVICE] FROM-NUMBER TONUMBER | 將分區 FROM-NUMBER 上的文件系統完整地複製到分區TO-NUMBER 中,做爲可選項還能夠指定一個來源硬盤的設備名稱FROM-DEVICE,若省略則在當前設備上進行復制。 |
move NUMBER START END | 將指定編號 NUMBER 的分區移動到從 START 開始 END 結束的位置上。注意:(1)只能將分區移動到空閒空間中。(2)雖然分區被移動了,但它的分區編號是不會改變的 |
resize NUMBER START END | 對指定編號 NUMBER 的分區調整大小。分區的開始位置和結束位置由 START 和 END 決定 |
check NUMBER | 檢查指定編號 NUMBER 分區中的文件系統是否有什麼錯誤 |
rescue START END | 恢復靠近位置 START 和 END 之間的分區 |
mklabel,mktable LABELTYPE | 建立一個新的 LABEL-TYPE 類型的空磁盤分區表,對於PC而言 msdos 是經常使用的 LABELTYPE。 如果用 GUID 分區表,LABEL-TYPE 應該爲 gpt |
parted使用實例
# parted /dev/sdd
GNU Parted 1.8.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
(parted) print #查看分區信息
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 16.4kB 4001MB 4001MB primary
4 4001MB 4703MB 701MB extended
5 4001MB 4102MB 101MB logical
6 4102MB 4203MB 101MB logical
7 4203MB 4303MB 101MB logical
8 4303MB 4404MB 101MB logical
9 4404MB 4416MB 11.5MB logical
10 4416MB 4437MB 21.0MB logical
11 4437MB 4468MB 31.4MB logical
12 4468MB 4509MB 40.9MB logical ext3
(parted) mkpart #建立新的分區
Partition type? primary/logical? l
File system type? [ext2]? ext3
Start? 4509MB
End? -1s # 表示硬盤最後一個扇區,就是硬盤的最末尾處
Warning: You requested a partition from 4509MB to 27.1GB.
The closest location we can manage is 4516MB to 4697MB. Is this still acceptable to you?
Yes/No? y
(parted) print
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 16.4kB 4001MB 4001MB primary
4 4001MB 4703MB 701MB extended
5 4001MB 4102MB 101MB logical
6 4102MB 4203MB 101MB logical
7 4203MB 4303MB 101MB logical
8 4303MB 4404MB 101MB logical
9 4404MB 4416MB 11.5MB logical
10 4416MB 4437MB 21.0MB logical
11 4437MB 4468MB 31.4MB logical
12 4468MB 4509MB 40.9MB logical ext3
13 4516MB 4697MB 181MB logical
(parted) unit s #設置單位爲扇區
(parted) print
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32s 7815167s 7815136s primary
4 7815168s 9185279s 1370112s extended
5 7815200s 8011775s 196576s logical
6 8011808s 8208383s 196576s logical
7 8208416s 8404991s 196576s logical
8 8405024s 8601599s 196576s logical
9 8601632s 8624127s 22496s logical
10 8624160s 8665087s 40928s logical
11 8665120s 8726527s 61408s logical
12 8726560s 8806399s 79840s logical ext3
13 8819748s 9173114s 353367s logical
(parted) rm 13 #刪除分區13
(parted) p
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32s 7815167s 7815136s primary
4 7815168s 9185279s 1370112s extended
5 7815200s 8011775s 196576s logical
6 8011808s 8208383s 196576s logical
7 8208416s 8404991s 196576s logical
8 8405024s 8601599s 196576s logical
9 8601632s 8624127s 22496s logical
10 8624160s 8665087s 40928s logical
11 8665120s 8726527s 61408s logical
12 8726560s 8806399s 79840s logical ext3
(parted) set 12 lvm on #將分區12的lvm標誌打開,這裏僅打開標誌,並未實際建立lv
(parted) p
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32s 7815167s 7815136s primary
4 7815168s 9185279s 1370112s extended
5 7815200s 8011775s 196576s logical
6 8011808s 8208383s 196576s logical
7 8208416s 8404991s 196576s logical
8 8405024s 8601599s 196576s logical
9 8601632s 8624127s 22496s logical
10 8624160s 8665087s 40928s logical
11 8665120s 8726527s 61408s logical
12 8726560s 8806399s 79840s logical ext3 lvm
(parted) q #退出交換模式
Information: Don't forget to update /etc/fstab, if necessary.