CentOS7出來的時間已經不算短了,前段時間一直在虛擬機上使用,最近閑下來了,就像在自己的筆記本上裝一個win7和Centos7的雙系統體驗以下實體機的效果,幾經波折之后終於順利的裝上了WIN7和CentOS7的雙系統!在這里主要是想分享一下自己遇到的問題,以供網友門參考借鑒!
首先介紹一下我的電腦配置,我的筆記本型號是Y400,一共有三塊硬盤,128ssd(1號) + 1T的hdd(2號) + 1T的hdd(3號);128的SSD被分為兩個分區,第一個分區裝win7,第二個放游戲和一些免安裝的軟件;我在第二塊硬盤和第三塊硬盤用作倉庫盤,因為都沒有用完,所以隨時可以從兩塊hdd后邊划一部分出來使用!
我刻錄U盤鏡像使用的是UltraISO(軟碟通) ,刻錄完成后的安裝步驟網上已經介紹的很詳細了,我這里就不多作介紹了,我在安裝過程中選擇的是第二塊硬盤(也就是2號硬盤,提前已經在windows下畫出了136G的未分配空間),選擇“我要配空間”,點擊“完成”后,選擇“標准分區”,然后通過左下角的“+”號分區,分500mb的/boot分區,120GB的/分區,16GB的swap空間,此時然后點擊完成,選擇“接受更改”,然后一步一步安裝配置就好,安裝完成后點擊重啟;
由於我的電腦是多硬盤,所以在安裝Centos7時安裝引導只能裝在Centos7所在的那塊硬盤上(默認的,如果更改也只能選擇不安裝引導),此時重啟后的電腦沒有像網上網友所說的那樣“只有Centos7的啟動菜單,而沒有了win7的引導菜單”,我的電腦直接向往常一樣直接進入win7的界面,然后啟動進入win7,因為我的ssd默認為第一啟動盤,而我裝Centos7裝在了第二塊硬盤上,所以對ssd上的東西都沒有影響,因此我嘗試用第二塊硬盤啟動(F12選擇以第二塊硬盤啟動),結果是屏幕左上角只有一個點和一個光標,此方法失敗(僅僅是我的電腦這樣失敗了,有網友這樣成功過,你也可以試一試);
然后在網上查資料,問網友,於是乎就在win7下裝了一個EasyBCD,
然后重啟電腦,就可以看到NeoSmart Linux了(這個名稱可以自己改,我改為了“menu list”)。
回車進入該啟動項列表:
有啟動項列表了,這下總算弄好了,但是回車后,發現屏幕黑屏,沒什么反應,於是強制重啟電腦,到CentOS Linux啟動項列表這里時,不按回車,按字母“E”鍵,查看一下啟動菜單哪有問題:
發現這個啟動菜單有些問題,我的電腦是三硬盤,而我的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都沒有問題,系統可以啟動,但是為什么在多硬盤多系統下就無法啟動!如果有懂這個東西的麻煩指教一下