筆記本多硬碟win7下隨身碟安裝Cnetos7引導問題!,win7cnetos7
CentOS7出來的時間已經不算短了,前段時間一直在虛擬機器上使用,最近閑下來了,就像在自己的筆記本上裝一個win7和Centos7的雙系統體驗以下實體機的效果,幾經波折之後終於順利的裝上了WIN7和CentOS7的雙系統!在這裡主要是想分享一下自己遇到的問題,以供網友門參考借鑒!
首先介紹一下我的電腦配置,我的筆記本型號是Y400,一共有三塊硬碟,128ssd(1號) + 1T的hdd(2號) + 1T的hdd(3號);128的SSD被分為兩個分區,第一個分區裝win7,第二個放遊戲和一些免安裝的軟體;我在第二塊硬碟和第三塊硬碟用作倉庫盤,因為都沒有用完,所以隨時可以從兩塊hdd後邊劃一部分出來使用!
我燒錄隨身碟鏡像使用的是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都沒有問題,系統可以啟動,但是為什麼在多硬碟多系統下就無法啟動!如果有懂這個東西的麻煩指教一下