CentOS7出來的時間已經不算短了,前段時間一直在虛擬機上使用,最近閒下來了,就像在本身的筆記本上裝一個win7和Centos7的雙系統體驗如下實體機的效果,幾經波折以後終於順利的裝上了WIN7和CentOS7的雙系統!在這裏主要是想分享一下本身遇到的問題,以供網友門參考借鑑!html
首先介紹一下個人電腦配置,個人筆記本型號是Y400,一共有三塊硬盤,128ssd(1號) + 1T的hdd(2號) + 1T的hdd(3號);128的SSD被分爲兩個分區,第一個分區裝win7,第二個放遊戲和一些免安裝的軟件;我在第二塊硬盤和第三塊硬盤用做倉庫盤,由於都沒有用完,因此隨時能夠從兩塊hdd後邊劃一部分出來使用!linux
我刻錄U盤鏡像使用的是UltraISO(軟碟通) ,刻錄完成後的安裝步驟網上已經介紹的很詳細了,我這裏就很少做介紹了,我在安裝過程當中選擇的是第二塊硬盤(也就是2號硬盤,提早已經在windows下畫出了136G的未分配空間),選擇「我要配空間」,點擊「完成」後,選擇「標準分區」,而後經過左下角的「+」號分區,分500mb的/boot分區,120GB的/分區,16GB的swap空間,此時而後點擊完成,選擇「接受更改」,而後一步一步安裝配置就好,安裝完成後點擊重啓;ubuntu
因爲個人電腦是多硬盤,因此在安裝Centos7時安裝引導只能裝在Centos7所在的那塊硬盤上(默認的,若是更改也只能選擇不安裝引導),此時重啓後的電腦沒有像網上網友所說的那樣「只有Centos7的啓動菜單,而沒有了win7的引導菜單」,個人電腦直接嚮往常同樣直接進入win7的界面,而後啓動進入win7,由於個人ssd默認爲第一啓動盤,而我裝Centos7裝在了第二塊硬盤上,因此對ssd上的東西都沒有影響,所以我嘗試用第二塊硬盤啓動(F12選擇以第二塊硬盤啓動),結果是屏幕左上角只有一個點和一個光標,此方法失敗(僅僅是個人電腦這樣失敗了,有網友這樣成功過,你也能夠試一試);windows
而後在網上查資料,問網友,因而乎就在win7下裝了一個EasyBCD,ui
而後重啓電腦,就能夠看到NeoSmart Linux了(這個名稱能夠本身改,我改成了「menu list」)。spa
回車進入該啓動項列表:htm
有啓動項列表了,這下總算弄好了,可是回車後,發現屏幕黑屏,沒什麼反應,因而強制重啓電腦,到CentOS Linux啓動項列表這裏時,不按回車,按字母「E」鍵,查看一下啓動菜單哪有問題:blog
發現這個啓動菜單有些問題,個人電腦是三硬盤,而個人CentOS7是裝在第二塊硬盤上的,上圖中我用紅色圈出來的那塊區域中顯然不對,接口
set root='hd0,msdos2' 指定root爲第一塊硬盤的第二個分區,這裏的root對應的是/boot分區(若是沒有單獨指定/boot分區的,這個root應該指向"/"分區)。遊戲
題外話(基礎知識補充)
hdx,msdosy
hd指定的是硬盤,以0開始,hd0表明第一塊硬盤,以此類推
msdos指定一塊硬盤上的分區,以1開始,msdos1表明第一個分區,以此類推(其實直接寫1也是能夠的)
hda 和sda的區別:
hd表明本機磁盤接口爲IDE接口
sd表明本機磁盤接口爲SCSI接口
他們都以a開始,以hda或sda表明第一塊磁盤,a,b,c,d...以此類推
hda和sda後能夠跟數字,表明第一塊磁盤的不一樣分區;如sda1表明第一塊磁盤的第一個分區;
以個人電腦硬盤爲例加以說明:
個人電腦有三塊硬盤(我電腦是scsi接口的,因此用sd描述,而沒有用hd描述):
SSD整塊磁盤 分區一(C) 分區二(F)
sda sda1 sda2
第一塊HDD 分區一(D) 分區二(/boot) 分區三(/) 分區四(swap)
sdb sdb1 sdb2 sdb3 sdb5
第二塊HDD 分區一(E)
sdc sdc1
新手們確定會疑惑爲何第一塊HDD的分區四編號爲sdb5,而不是sdb4,那是由於在mbr分區模式(還有一種GPT分區沒有此限制,可是我對這中分區不太瞭解)下一塊硬盤最多有四個主分區,那麼超過四個主分區怎麼辦?此時只能將第四塊分區會變成擴展分區,在擴展分區中在進行分區,之後所分配的區域都將被成爲邏輯分區,整個擴展分區表明的是sdb4,擴展分區內部進行分區時是從編號5開始的。
若是一個電腦有一塊硬盤,硬盤有兩個分區,一個主分區,一個擴展分區,擴展分區裏只一個邏輯分區,那麼主分區就是sda1,另外一個邏輯分區就是sda5
我就說到這裏,若是又不明白的或是不懂得,直接問我,或者百度,這些都是很是基礎的東西。
這句配置語句顯然與個人實際狀況不符,個人Centos7是裝在第二塊硬盤的,因此應該是hd1,/boot是第二塊硬盤的第二個分區,因此這句應改成
set root='hd1,msdos2',
if下邊那一段和else下邊那一段是在尋找/boot分區,併爲其設定uuid(全球惟一標示),這個東西知不知道無所謂,你只要知道if和else之間那一段中出現hd的地方都必須是hd1,msdos2就好了(這裏我查過我經過虛擬機安裝的Centos7的grub.cfg,事實證實確實出現hd的地方都要和root設定的值一致)。
知道了這個我就進行了臨時修改,而後經過ctrl+X執行啓動菜單,結果依然沒法進入系統,這就令我很鬱悶,難道多硬盤引導Centos7就這麼困難?
因而就在網上發帖求教,有個大神告訴我在啓動項列表 處選中第一項按"C"(或者在啓動項菜單頁面按"ctrl + C")進入 grub> 界面,
而後執行(一行一行的執行,不要一次寫完再執行)
linux (hd1,msdos2)/vmlinuz-3... root=/dev/sdb3 (若是/boot分區不爲單獨分區,則執行 linux (hd1,msdos2)/boot/vm... root=/dev/sdb2);
initrd (hd1,msdos)/initramfs-3....img (若是/boot分區不爲單獨分區,則執行 initrd (hd1,msdos2)/boot/initramfs-3...img);
boot
上邊三行代碼,前兩行寫到數字3時能夠按下tab鍵補齊,root前有空格,其中(hd1,msdos)表明的是/boot分區,root表明的是/分區,因此/boot分區是單獨分區和不是單獨分區有一點小小差異,老鳥們不要吐槽,我寫這麼詳細主要是爲了幫助新手們的!
執行完上邊的代碼後果然進入了系統,進入新的Centos7配置完成後,再次手動啓動了Centos7,有點鬱悶,說不定之後啓動系統都得用手動加載的方式了,因而我又看了下啓動菜單的代碼,最終發現菜單用的是linux16和initrd16,以下圖
我以前能順利啓動用的命令是linux和initrd啊,因而乎抱着試一試的心態將/boot/grub2/grub.cfg裏的linux16與initrd16後的16都去掉,將set以後else以前出現hd的地方都改成了'hd1,msdos2',而後重啓系統,居然真的經過Centos的啓動菜單進入系統了 。
至此,多硬盤下,win7和Centos7雙系統的引導終於算是完成了,可是如今終於能正常的使用雙系統了!
可是躁動個人並無就此罷手,我忽然想起我以前在個人雙硬盤電腦上裝win7和ubuntu的雙系統時好像也遇到相似的狀況(忘記當初有沒有使用easyBCD了,可是幫同窗在單硬盤上安裝win7和ubuntu的雙系統時確實成功了),總是沒法啓動成功,也沒有啓動項,因而我在第三塊硬盤上分出一塊100G的爲分配空間,在那塊空間安裝了ubuntu14.04,安裝完成後仍是因爲多硬盤的的關係沒法啓動,本身引導竟然也沒有成功,經過在網上查閱相關資料,grub2有一個比較方便而強大的功能,grub2-mkconfig -o /boot/grub2/grub.cfg,這條命令可掃描全部的啓動項,並將其顯示在啓動菜單上(在linux下使用時,它只能掃描到linux能識別的盤符,若是你的windows盤的ntfs的格式,則沒法掃描到windows的啓動項,若是你想讓它掃描到windows的啓動項,就必須經過ntfs軟件掛在相應的windows系統盤,掛在以後就能掃描到了,關於掛在windows盤可參照個人「Centos6.5系統初學者基本系統配置1」),由於Centos7使用的是grub2做引導的,其內部使用的是grub2,因此我直接進入CentOS7,經過root用戶執行grub2-mkconfig -o /boot/grub2/grub.cfg,而後重啓電腦,發現果真有有ubuntu的啓動項了
而後真的能夠進入ubuntu了,看來grub2仍是蠻強大的,有興趣的可一多多研究,
這裏面還有一個不懂得地方,就是若是裝單系統或是在虛擬機裏裝Centos7,linux16和initrd16都沒有問題,系統能夠啓動,可是爲何在多硬盤多系統下就沒法啓動!若是有懂這個東西的麻煩指教一下