由于簡書沒有目錄 想看目錄的直接
打開CSDN的同名文章
目錄:
[TOC]
磁盤分區格式介紹
一般來說,磁盤分區表有兩種格式:MBR 和 GPT
MBR 分區
在 windows 操作系統下最多支持4個主分區或3個主分區+1個擴展分區(包含多個邏輯分區),擴展分區必須劃分為邏輯分區才能使用,1個擴展分區可以劃分多個邏輯分區,MBR 分區表不支持容量大于2.2TB的分區(一些硬盤制造商將他們的容量較大的磁盤升級到了 4KB 的扇區,這意味著 MBR 的有效容量上限提升到了 16 TB)
如下圖 : 是一個 MBR 分區表示例:1 個主分區+1 個擴展分區(劃分了 3 個邏輯分區)
GPT 分區
GPT 分區 對分區數量沒有限制,但在 windows 系統上最多可以支持 128 個主分區GPT 分區表突破了 MBR 最大支持 2.2T 分區的限制,貌似最大支持 18EB 的分區如下圖是一個 GPT 分區表示例:劃分了 7 個主分區
檢測磁盤分區表格式的方法
當然檢測磁盤分區表格式的方法大概有兩種:
-
打開Windows下磁盤管理---->右擊一個磁盤屬性
-
第二種就是通過分區工具查看
GPT和MBR轉化
當然GPT也可以轉化為MBR,相反MBR也可以轉化為GPT
BIOS引導方式
目前主要的系統引導方式也有兩種:傳統的LegacyBIOS和新型的UEFI BIOS
一般來說,有如下兩種引導+磁盤分區表組合方式:LegacyBIOS+MBR和UEFI BIOS+GPT
Legacy BIOS無法識別GPT分區表格式,所以也就沒有LegacyBIOS+GPT組合方式;UEFI BIOS可同時識別MBR分區和GPT分區,所以UEFI下,MBR和GPT磁盤都可用于啟動操作系統。不過由于微軟限制,UEFI下使用Windows安裝程序安裝操作系統是只能將系統安裝在GPT磁盤中。
再來說說傳統Legacy BIOS和新型UEFI BIOS引導方式的工作原理吧:
Legacy BIOS原理
LegacyBIOS----->MBR----->活動的主分區(一般的為C盤)→\bootmgr→\Boot\BCD→\Windows\system32\winload.exe
傳統Legacy BIOS引導windows操作系統時,是通過一個活動的主分區下的bootmgr(啟動管理器)文件導入根目錄下boot文件夾里的BCD(啟動設置數據)文件,然后BCD文件根據自身的配置內容加載系統啟動文件winload.exe(位置:根目錄\Windows\system32\winload.exe)來啟動系統。
一個BCD文件可以加載多個系統啟動文件從而實現引導多個系統的啟動通過EasyBCD工具看以看到BCD文件的內容,如下是我的win8.1和win10兩個系統的BCD內容:
當然要是Windows和ubantu的話就是如下樣子:反正都在活動區(一般的在c盤)
需要注意的是:MBR磁盤格式下,windows系統的啟動文件(bootmgr、BCD)必須存放在活動的主分區內,這樣才能正常引導系統啟動(MBR磁盤分區格式下,只允許有一個分區是活動的)。
如果是使用微軟原版操作系統按照windows安裝程序來進行系統安裝,系統會自動創建一個隱藏的活動主分區(win7貌似是100M,win8貌似是350M)用來存放啟動文件;
如果采用其他安裝方式來安裝系統,由于系統默認并不會自動創建這個活動的主分區,啟動文件將會存放我們的系統盤里,所以我們在采用其它安裝方式安裝第一個系統時,需要確保安裝系統的分區是活動的、而且是主分區,而安裝第二個、第三個…系統時,就不必要求必須是主分區了,邏輯分區也可以,因為安裝第二個、第三個…系統時,我們已經有了一個活動的主分區了(第一個系統所在的分區),這個活動的主分區下的BCD文件里已經包含了我們的第二個、第三個…系統的啟動信息用來啟動第二個、第三個…系統。(設置這些系統的時候可以用EasyBCD)
UEFI BIOS原理
- esp引導分區中的文件結構
efi\boot\bootx64.efi
efi\microsoft\boot\bcd
- efi啟動過程
uefi bios啟動時,自動查找硬盤下esp分區的bootx64.efi,然后由bootx64.efi引導
efi下的bcd文件,由bcd引導指定系統文件(一般為c:\windows\system32\winload.efi)
UEFIBIOS---->EFI系統分區(FAT格式的分區)---->\efi\boot\bootx64.efi---->\efi\Microsoft\boot\BCD---->\Windows\system32\winload.efi
UEFI BIOS引導windows系統時,是通過一個FAT格式分區下的bootmgfw.efi文件來導入BCD文件,然后BCD文件根據自身的配置內容加載系統引導文件winload.efi(對比legacy引導發現,UEFI的引導文件winload.efi,而Legacy的引導文件為winload.exe)
需要注意的是:GPT磁盤格式下,windows系統的啟動文件(bootmgfw.efi、BCD)是存放在一個FAT格式的分區里的,有些出廠預裝win8系統的電腦下將該FAT分區稱之為ESP分區或EFI分區
如下圖,ESP和EFI分區一般都是隱藏的FAT分區,可以通過DG分區工具來創建ESP分區,預裝系統的時候的MSR分區沒神馬用.不用管他
可見,UEFI+GPT模式引導windows系統時,并不需要MBR主分區來存儲主引導記錄,也不需要活動分區,只需要你一個存放了引導啟動文件的fat格式分區就可以了,這個Fat分區當然也可以是U盤等外接USB設備了。
就目前情況而言,GPT分區表磁盤不支持32位的win7以及win7之前的系統,支持64位的XP、win7、win8、win10和32位的win8、win10。一般地,GPT磁盤多與64位windows系統組合搭配。同時Ubantu16.04支持UEFI啟動.
引導修復教程
再來說說引導丟失、損壞導致系統無法正常進入情況下,如何通過修復引導來使系統正常啟動。
引導問題故障舉例:
常見的引導丟失、損壞情況說明如下:
上圖,Winload.exe文件有問題,可見是Legacy BIOS引導文件出錯;如果此處是winload.efi,則應推測是UEFI BIOS引導文件出錯。
上圖,NTLDR is missing,NTLDR文件丟失。推斷為:XP等NT5.x架構操作系統引導丟失。
NTLDR是如win 2000、XP、win2003等NT5.x架構操作系統的啟動管理器文件,與之對應的bootmgr則是如Vista、win7/8/9/2008/2012等NT6.x架構操作系統的啟動管理器,如下圖:
上圖,Bootmgr is missing,推斷為:win7、win8等NT6.x架構操作系統引導丟失。
引導修復工具
下面介紹的兩種方法所涉及到NABOOTAutofix、BOOTICE、DG等工具一般PE下都會集成的,這里就不給大家放單獨的下載鏈接了。PE制作及使用的話,請百度“電腦店”“大白菜”“老毛桃”等關鍵字。
使用NTBOOT AutoFix工具來修復引導
如果你的系統無法正常進入,那么請到PE下運行NTBOOT AutoFix進行修復;如果你是多系統,其中有一個系統可以正常進入,其它系統引導丟失,那么就可以在這個正常的系統下使用NTBOOT AutoFix進行修復,一般PE下都會集成這個軟件。
選擇你的系統盤符,如下圖
【注意】
使用該軟件進行UEFI+GPT模式系統引導修復時,需要建立ESP/EFI分區,可通過DG等工具為ESP/EFI分區并建立盤符,打開NTBOOT引導修復工具,在里面選擇ESP/EFI分區所在盤符,修復即可
使用BOOTICE工具來修復引導
此工具不是專門用來修復引導的,其功能很是強大,這里只講如何借助它修復引導
Legacy+MBR修復
運行BOOTICE后,切換到“BCD編輯”,然后“新建BCD”
新建BCD,文件名為:BCD
然后點擊“查看/修改”
點擊“添加”,選擇“windowsvista/7/2008”(這是NT6.x架構系統,當然win8/10也適用)
點擊“添加”后,如下圖為默認的初始BCD內容
UEFI+GPT修復
接下來,我們按照上面的方法再次添加win10的BCD信息,修改好之后,保存當前系統設置,win10的BCD信息就添加好了;然后再點擊“保存全局設置”,這樣,win8和win10的引導信息就會保存到我們創建的這個BCD文件中了,如下圖:
創建好BCD文件后,我們只需在PE下將這個BCD替換到相應的目錄下就可以完成引導修復了。
- 如果是UEFI+GPT模式的,隨此處BCD替換文件的目錄為ESP/EFI這個Fat分區:efi\Microsoft\BCD(都是隱藏分區要在pe下查看)
- 如果是Legacy+MBR模式,若磁盤有一個隱藏的活動主分區,我們需要先給這個隱藏的主分區添加盤符(PE下磁盤管理添加盤符或借助DG工具添加),然后將該BCD文件替換到這個活動主分區:\Boot\BCD(都是隱藏分區要在pe下查看)
命令行修復指定efi分區
如果誤刪EFI分區,在不用pe環境或者軟件的情況下
[圖片上傳失敗...(image-69d432-1517668526663)]
正常情況下是不能刪除的,不要手賤 不要手賤 不要手賤!
首先要有Windows的efi啟動環境
還存在efi分區
- 做完這個直接重啟選擇含有efi啟動的u盤
- 進到安裝界面以后按Shift+F10打開一個命令行窗口
- 如果你的EFI分區還在 只是被破壞需要修復的話,執行
bcdboot c:\windows /l
即可,c是Windows安裝的盤符,不是的話自己改下盤符就可以
不存在efi分區
如果沒有EFI分區 執行以下命令
diskpart
list disk
select disk * (選擇你要重建EFI分區的盤的編號,以數字代替*)
list partition (如果有大于500MB的未分配空間,跳過下兩步)
select partition * (選擇你要減少500MB空間的分區的編號,以數字代替*)
shrink desired = 500
create partition efi size = 500
format quick fs = fat32
exit
因為我硬盤上沒有未分配空間,上面的命令是從已經存在的分區分出500MB以便能創造新的EFI分區
然后執行執行bcdboot c:\windows /l
c是Windows安裝盤符,這條命令是把系統盤的引導信息復制到EFI分區
PE環境下修復
用bootice自動修復
我們建議大家啟動64位win8PE,用它帶的bcdboot來修復。
指定esp分區修復
1.啟動64位win8PE,并用esp分區掛載器或diskgenuis掛載esp分區
2.打開cmd命令行,輸入以下命令并運行
bcdboot c:\windows /s o: /f uefi /l zh-cn
其中:
c:\windows
硬盤系統目錄,根據實際情況修改
/s o
: 指定esp分區所在磁盤,根據實際情況修改
/f uefi
指定啟動方式為uefi
/l zh-cn
指定uefi啟動界面語言為簡體中文
注:64位win7PE不帶/s參數,故win7PE不支持bios啟動下修復不指定esp分區修復
環境為64位win7或win8PE,只有uefi啟動進入PE才可以
不用掛載esp分區,直接在cmd命令行下執行:
bcdboot c:\windows /l zh-cn
注意不指定esp分區的情況是已經存在了esp分區
其中
c:\windows
硬盤系統目錄,根據實際情況修改
/l zh-cn
指定uefi啟動界面語言為簡體中文
注:在8PE中,我們也可以在uefi啟動進入pe后,掛載esp分區用方法(一)修復
用bootice手動修復
從efi引導啟動過程來看,雖然它的文件很多,但主要用到的就是兩文件,我們完全可以在各pe下掛載esp分區,從硬盤系統中復制bootx64.efi文件,然后用用bootice制作好bcd,就完成efi引導修復。
- 啟動任一pe,用esp分區掛載器或diskgenuis掛載esp分區
- 查看esp分區是否可正常讀寫,如不正常可重新格式化為fat16或fat32分區格式。
- 在esp分區中建立如下空文件夾結構
\efi\boot\ (bootx64.efi等復制)
\efi\microsoft\boot\ (bcd等建立)
- 復制硬盤系統中的bootmgfw.efi(一般在c:\windows\boot\efi下)到esp分區的\efi\boot
下,并重命名為bootx64.efi
5.打開bootice軟件,有esp分區的\efi\microsoft\boot\下新建立一bcd文件,
打開并編輯bcd文件,添加“windows vista\7\8啟動項(參考上面圖片)
指定磁盤為硬盤系統盤在的盤,
指定啟動分區為硬盤系統分區(一般為c:)
指定啟動文件為:\Windows\system32\winload.efi, 是.efi,不是.exe,要手工改過來
最后保存當前系統設置并退出。
這樣子,精簡的UEFI引導就手工修復了,實機和虛擬機測試通過。
efi系統分區設定盤符
查看esp分區不一定在pe下,在正常的Windows下也可以
以管理員身份運行,輸入:
diskpart
list disk
select disk 0
list part
sel part x (x為EFI分區分區號)
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
assign letter=y (y為分配的盤符)
[圖片上傳失敗...(image-baed96-1517668526663)]
一步一步來! 每一行是一步!
安裝Ubuntu
在安裝前要介紹下ubuntu的各個目錄
ubuntu目錄介紹
/ 根目錄,建議在根目錄下面只有目錄,不要直接有文件。
swap 交換空間,相當于Windows上的虛擬內存(一般和物理運存一樣就可以)。
/boot 包含了操作系統的內核和在啟動系統過程中所要用到的文件,目前可有可無
/home 用戶的home目錄所在地,這個分區的大小取決于有多少用戶。如果是多用戶共同使用一臺電腦的話,這個分區是完全有必要的,況且根用戶也可以很好地控制普通用戶使用計算機,如對用戶或者用戶組實行硬盤限量使用,限制普通用戶訪問哪些文件等。 以往Linux系統主要是提供服務器使用,所以/home這個目錄使用量并不高。但隨著Linux的桌面應用發展,不少人也拿來在日常上使用,這時/home就變成存儲媒體中,最占容量的目錄。假如你安裝Ubuntu主要是桌面應用,那你可能需要把最大的空間留給他。 額外分割出/home有個最大的好處,當你重新安裝系統時,你不需要特別去備份你的個人文件,只要在安裝時,選擇不要格式化這個分區,重新掛載為/home就不會丟失你的數據。 還有一個特別的應用:假如你會在你的計算機上,安裝兩個或更多的Linux系統,你可以共享/home這個分區。簡單地說,你的個人文件可以在切換到其它Linux系統時,仍正常使用
/tmp 用來存放臨時文件。這對于多用戶系統或者網絡服務器來說是有必要的。這樣即使程序運行時生成大量的臨時文件,或者用戶對系統進行了錯誤的操作,文件系統的其它部分仍然是安全的。因為文件系統的這一部分仍然還承受著讀寫操作,所以它通常會比其它的部分更快地發生問題。這個目錄是任何人都能訪問的,所以需要定期清理。
/usr Linux系統存放軟件的地方,如有可能應將最大空間分給它
除了系統的基本程序外,其它所有的應用程序多放在這個目錄當中。除了/home,/var這種變動數據的存放目錄外,/usr大概是會是使用容量最大的目錄,不過一般Linux下的應用程序通常不大,所以大多數的桌面應用頂多 3~4GB 的空間就已經相當足夠了,若是服務器,多半也是 2~3GB 就足夠了。/bin
/usr/bin
/usr/local/bin 存放標準系統實用程序。/srv 一些服務啟動之后,這些服務所需要訪問的數據目錄,如WWW服務器需要的網頁數據就可以放在/srv/www中。
/etc 系統主要的設置文件幾乎都放在這個目錄內。
/lib
/usr/lib
/usr/local/lib 系統使用的函數庫的目錄。/root 系統管理員的家目錄。
/lost+found 該目錄在大多數情況下都是空的,但當實然停電或者非正常關機后,有些文件臨時存入在此。
/dev 設備文件,在Linux系統上,任何設備都以文件類型存放在這個目錄中,如硬盤設備文件,軟驅、光驅設備文件等。
/mnt
/media 掛載目錄,用來臨時掛載別的文件系統或者別的硬件設備(如光驅、軟驅)。
/opt 用于存儲第三方軟件的目錄,不過我們還是習慣放在/usr/local下
/proc 此目錄信息是在內存中由系統自行產生的,存儲了一些當前的進程ID號和CPU、內存的映射等,因為這個目錄下的數據都在內存中,所以本身不占任何硬盤空間。
/sbin
/usr/sbin
/usr/local/sbin 存放一些系統管理員才會用到的執行命令。/var 主要放置系統執行過程中經常變化的文件,例如緩存(cache)或者是隨時更改的登錄文件(log file)。
假如你的計算機主要是提供網頁服務,或者是mysql數據庫,那/var會大量增加,你最好能夠把/var額外分割出來。與/home的概念類似,重新安裝時,不要格式化,仍可保留原來的數據。
在服務器的應用時,數據的安全是相當重要的,額外分區對數據的安全也有所幫助。此外,/var/log是系統log檔保存的位置,養成有問題就去找log的好習慣,有助于解決問題。所以這也加強了額外分區的重要性。當一個服務器出現系統問題,甚至毀損時,除了你的數據外,之前的系統紀錄也相當重要,找出為什么系統會出問題,可以幫助管理器快速排除障礙。/var/log 系統日志記錄分區,如果設立了這一單獨的分區,這樣即使系統的日志文件出現了問題,它們也不會影響到操作系統的主分區。
本人方案
由于采用了GPT模式的硬盤分區,所以接下來的分區都是主分區
分為3個區
- 掛載點/: 安裝系統和軟件;大小為60G;分區格式為ext4; 這個是用的固態硬盤某個分區,用固態是為了快
- 掛載點/home: 相當于“我的文檔”;大小100G; 分區格式ext4; 這個是用的機械硬盤某個分區
- swap: 充當虛擬內存;大小等于物理內存大小;分區格式為swap ,用的機械硬盤
- /boot:不用分配
多系統共用esp
如果電腦之前就有Windows10或者通過自己按照上面的方法安裝了Windows10,會存在一個幾百兆的esp分區,當安裝多個系統的時候可以將引導都安裝到這個分區上,接下來利用ubuntu官網介紹制作u盤efi啟動(自行谷歌),最后安裝ubuntu引導到esp分區上就可以了
修復ubuntu啟動
如果ubuntu的引導和Windows的引導在一個esp分區上那就需要修復下引導了
- 啟動ubuntu安裝盤 用efi方式啟動然后選擇試用ubuntu 在命令行輸入
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair
修復后重啟就可以了
[圖片上傳失敗...(image-81ae04-1517668526663)]
自己電腦安裝:
宏碁E1-471g(我在家里開發用)
- 這款電腦是老式電腦,采用的啟動是Legacy+MBR引導模式
- 我的光驅位置換成了500G機械硬盤,主硬盤位置放上了固態,注意:固態最后放才能被識別
- 安裝完了Ubuntu后直接進入的是Windows,采用easybcd設置啟動項
聯想Y700
- 這款電腦是采用的UEFI+GPT啟動模式
- 先在pe下的分區助手將硬盤轉化為GPT格式
- 磁盤轉化完后,在分出一個500M的efi系統引導分區(FAT格式的),安裝Ubuntu的時候將引導放到efi分區上,這個分區存放這以后Windows和Ubuntu的引導文件
針對聯想Y700電腦還有一個毛病
就是無緣無故的鍵盤失靈,在這我升級了下BIOS,我測試過了(用了半個月)倒是沒有出現鍵盤失靈的情況,其實網上也有好多說直接弄個外接鍵盤,我只想說呵呵,那是在逃避問題并沒有解決問題,好了我就不廢話了直接上圖:
Y700-15ISK_bios cdcn53ww
查看BIOS版本:win+R
輸入msinfo32
出廠的BIOS版本:
升級后: