Grub輕鬆解決單硬盤3OS+n個Linux多系統啓動

創建:2005-10-28 00:00:00
作者:Unlinux
來自: http://www.Unlinux.com

作者:likuku
來自:LinuxSir.Org

版權:本文爲likuku原創,只要承認作者的版權,允許任意轉載,但是不得用於商業目的。

因爲要學習Linux和Unix,不得在一塊硬盤上安裝4個操作系統:

FreeBSD(Unix最純的一種)+Win98+RedHat9+紅旗4。安裝不難,可是要想讓他們和睦共處,,可我花了一番功夫!經過一星期的死磨硬泡,總算搞定!這期間,我在網上發現這也算是個熱點話題,乾脆也把我的體會也告訴大家。

1-0-1 開端:

因爲Linux特殊的硬盤管理模式,可以說是"固定"式的:決不會因爲硬盤的增減、BIOS中 硬盤啓動順序更改,而造成像Windows裏的分區號的變更/混亂。因此其下的GRUB啓動管理器是實現多系統啓動的最佳工具。


Grub的功能強大、支持16位色1024分辨率開機背景、更改開機菜單簡單方便、故障恢復也很簡單。因爲Grub是一個獨立的,有他自己的一套命令行指令(可以脫離操作系統運作)。

相比有人用NT/2K/XP的Ntload來實現,這需要獲得其他系統啓動分區的啓動扇區文件。這個要直接讀寫硬盤扇區,你要是不會Linux/Unix,在Windows/Dos下,簡直是惡夢!!操作難度高,出錯?!後果不堪設想!

同樣是獲得啓動扇區 在Linux/Unix下只要一個簡單的 dd if=/目的分區of=/輸出路徑/輸出文件的指令行就OK。


2-0-1 安裝系統前的分區規劃:


因爲一塊硬盤最多隻可劃分4個主分區。擴展分區算作一個主分區,它只能有一個!

2-0-a.假若你要裝BSD,要給它分一個主分區(分區類型不限,先別問爲什麼)。

2-0-b.假若你要裝MS Windows 請給每個Windows分一個主分區。

2-0-c.確認你已經沒有需要安裝在主分區上才能使用的系統/已經分完了3個主分區。

2-0-d.如上一步已經確認,則可以把剩下的空間全交給擴展分區。

2-0-e.假若你還需要更多的Win分區空間,可以在擴展分區裏繼續分些。

2-0-f.確認完成後,刪除先前給BSD分好的分區。

2-0-g.保存分區表,重啓生效。

#注意:不要激活任何分區/設爲活動Active分區,到下一步再作。


BSD的"類型安裝",選Xuser,只需要不到400M空間。

沒有給Linux分區,這不要緊,當安裝時再分更方便。建議如果用XWindow圖形界面,最少給每個Linux留2.5G空間。

3-0-1 安裝系統:

按照下面順序安裝

3-0-a.安裝Windows大家都會吧?

如多個Windows,要裝哪個分區就先把那個分區激活,然後就直接裝在C:裏,是WinNT/2K/XP的,一定要手動設置爲是單個系統啓動,不要多系統菜單,也可以自己編輯根目錄下的隱藏boot.ini把多系統的其他選項行去掉。如不把前面預留給BSD的分區幹掉 現在說不定很容易搞錯。我是用Ghost系統鏡像灌的,不會出錯!當然,你也用Ghost的,就不用設置活動分區這些。


3-0-b.安裝BSD時,要選擇是否安裝BootManger一定選None跳過,這裏不用!

3-0-a.安裝Linux,直接在擴展分區分區就行,全裝成邏輯分區!畢竟主分區很寶貴!或者你早用完了!

3-0-d.如果硬盤裏除了主分區、擴展分區還有空閒的空間,Linux可能會自動把"/"分區,或者"/boot"分區(假如你單獨給/boot分區的話)強行轉變成主分區。特討厭!如這樣,你要返回上面2-0-e步,手動給Linux分區(每個詳細的分區:/、/boot、swap、/usr等,只要大小和你真正的linux分區一樣就可以。做好後就可以重新開始安裝Linux了。

3-0-e.因爲你是把Linux裝在邏輯分區,他可能會警告你,不管他,強行設置分區、掛載點、文件系統格式,最好都選擇格式化 。

3-0-f.繼續安裝,只是在安裝引導程序GRUB時一定要裝在MBR或者叫/dev/hda上!多系統菜單現在不用編輯,裝好後再編輯。

3-0-g.假如你只裝一個Linux,那就到此結束。

3-0-h.要裝多個Linux,那麼3f這步,需要注意,Grub只需要在其中一Linux的安裝時安裝就可以了。其餘幾個,要直接選擇不安裝引導程序,安裝也完全沒有必要,還會造成麻煩。

3-0-i.所有Linux都安裝完後,根據系統提示取出光盤,自動重啓。啓動後就會看到啓動菜單。

4-0-1.Grub、Linux分區管理理論基礎

Linux管理分區很特別也很先進,但對一般Windows用戶來說很陌生,但不難。懂了後就會發現它的巨大好處. Grub因爲可視作一個帶有一些操作系統基本功能的軟件,因此它的硬盤管理/識別規則不同於其他任何操作系統,但和Linux最接近,同樣也是"固定不變式的"。下面用個很簡單的對比表就可說明它們的關係:

主板IDE接口 Linux環境 Grub

IDE0 主盤------------------------------ /dev/hda--------------------------------hd0

|第一主分區-------------------- /dev/hda1------------------------------hd0,0
|第二主分區--------------------/dev/hda2-------------------------------hd0,1
|第三主分區--------------------/dev/hda3-------------------------------hd0,2
|擴展分區--------------------/dev/hda4-------------------------------hd0,3
|第一邏輯分區-------/dev/hda5-------------------------------hd0,4
|第二邏輯分區-------/dev/hda6-------------------------------hd0,5
|第N邏輯分區--------/dev/hdaN------------------------------hd0,N-1


IDE0 從盤------------------------------ /dev/hb--------------------------------hd1

|第一主分區-------------------- /dev/hdb1------------------------------hd1,0
|第二主分區--------------------/dev/hdb2-------------------------------hd1,1
|第三主分區--------------------/dev/hdb3-------------------------------hd1,2
|擴展分區--------------------/dev/hdb4-------------------------------hd1,3
|第一邏輯分區-------/dev/hdb5-------------------------------hd1,4
|第二邏輯分區-------/dev/hdb6-------------------------------hd1,5
|第N邏輯分區--------/dev/hdbN------------------------------hd1,N-1

IDE1 主盤------------------------------ /dev/hdc--------------------------------hd2
|第一主分區-------------------- /dev/hdc1------------------------------hd2,0
|第二主分區--------------------/dev/hdc2-------------------------------hd2,1
|第三主分區--------------------/dev/hdc3-------------------------------hd2,2
|擴展分區--------------------/dev/hdc4-------------------------------hd2,3
|第一邏輯分區-------/dev/hdc5-------------------------------hd2,4
|第二邏輯分區-------/dev/hdc6-------------------------------hd2,5
|第N邏輯分區--------/dev/hdcN------------------------------hd2,N-1

IDE1 從盤------------------------------ /dev/hdd--------------------------------hd3
|第一主分區-------------------- /dev/hdd1------------------------------hd3,0
|第二主分區--------------------/dev/hdd2-------------------------------hd3,1
|第三主分區--------------------/dev/hdd3-------------------------------hd3,2
|擴展分區--------------------/dev/hdd4-------------------------------hd3,3
|第一邏輯分區-------/dev/hdd5-------------------------------hd3,4
|第二邏輯分區-------/dev/hdd6-------------------------------hd3,5
|第N邏輯分區--------/dev/hddN------------------------------hd3,N-1

5-0-1.檢測分區和設置啓動菜單:

都裝好了麼?最好確保現在通過Grub只能啓動一個Linux! OK!我們開始!


5-0-a.以root身份進入Linux,在控制檯下/終端下,輸入fdisk -l小寫的哦!注意空格!

我的硬盤分區信息顯示如下: (以下#後的是我寫的註釋,方便讀者理解)

[root@SGI root]# fdisk -l

Disk /dev/hda: 20.0 GB, 20020396032 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 575 765 1534207+ b Win95 FAT32 #我的Win98

/dev/hda2 766 2434 13406242+ f Win95 Ext'd (LBA) #我的擴展分區(在dos下分的)
/dev/hda3 1 574 4610623+ a5 FreeBSD #我的FreeBSD
/dev/hda5 766 1148 3076416 b Win95 FAT32 #我的FAT32邏輯分區
/dev/hda6 1149 1161 104391 83 Linux #紅旗Linux的/boot分區
/dev/hda7 1162 1289 1028128+ 83 Linux #紅旗Linux的/分區
/dev/hda8 1290 1672 3076416 83 Linux #紅旗Linux的/usrt分區
/dev/hda9 1673 1737 522081 82 Linux swap #Linux的SWAP交換分區
/dev/hda10 1738 1747 80293+ 83 Linux #RH 9Linux的/boot分區
/dev/hda11 1748 2129 3068383+ 83 Linux #RH 9Linux的/usr分區
/dev/hda12 2130 2193 514048+ 83 Linux #RH 9Linux的/分區
/dev/hda13 2194 2244 409626 83 Linux #RH 9Linux的/tmp分區

Partition table entries are not in disk order

[root@SGI root]#


有點眼暈是不是?慢慢看就好了!擴展分區不是hda4,這個有點不好解釋,和Windows/FreeBSD的安裝有關,反正這兩個夠難侍候,這也就是爲什麼要先裝他們的原因---當分區穩定後再進行多啓動設置,一次就行不用反覆調整!但邏輯分區不會改變,第一個邏輯分區是hda5嘛!

Device Boot Start End

驅動器/分區 是否激活 起起始數據塊 結束數據塊

Blocks

數據塊數/容量大小(單位:kB)

Id

就是工業上統一的對各種文件系統/分區格式的標識代碼,只要你用過專業點的分區工具(如國產的DiskMan也叫DiskGeniue)就很好理解。這些早就成了業界統一的標準!

System

系統,很明顯,這是fdisk自動根據文件系統識別出的系統類型。

5-0-b.好了,我們只注意你的系統所在的Device驅動器標識。

Win98 安裝在 /dev/hda1

FreeBSD 安裝在 /dev/hda3 (我只用了一個分割,實際的只要記下/所在的hdxn代號就可以了.)

5-1-1. Linux稍稍麻煩點,分兩種情況:

5-1-a.像我一樣,專門給/boot分了一個分區,/boot和/不是一個分區。這就要分別記錄/和/boot的分區標識!

5-1-b.直接用/分區,沒有專用的/boot分區,那就只記錄/分區的標識就可以。

建議專給/boot建一分區,這樣啓動速度和安全(所有系統穩定後,可把/boot分區設爲只讀!)更有保障!

5-2-1.我的例子記錄的是:

紅旗是:/ 是/dev/hda7 /boot 是/dev/hda6 RH9 / 是 /dev/hda12 /boot 是/dev/hda10

5-3-1.辛苦了半天最後一步很簡單,就是編輯個文本,大家都會吧?

用個文本編輯器打開/boot/grub/grub.conf文件,我的是紅旗的文件,RH的也一樣,編輯如下:(#後的都是註釋,上面系統原有的,最好別刪,那都是規則說明!我寫的,你看看就行,不用加進去。)

***注意:Grub裏的分區標識和Linux下的不同,請參照 4-1-0轉換!***

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,5)
# kernel /vmlinuz-version ro root=/dev/hda7
# initrd /initrd-version.img
#boot=/dev/hda
default=0 #系統默認選項 (0爲第一項,1爲第二項,依此類推)
timeout=10 #選單等待時間 單位:秒
splashimage=(hd0,5)/grub/splash.xpm.gz #選單背景畫面文件路徑

title Red Flag Linux (2.4.20-8)
root (hd0,5)
kernel /vmlinuz-2.4.20-8 ro root=/dev/hda7 vga=785 console=/dev/null CONSOLE=/dev/tty2 acpi=off
initrd /initrd-2.4.20-8.img

title Red Flag Linux (Safe Mode)
root (hd0,5)
kernel /vmlinuz-2.4.20-8 root=/dev/hda7 acpi=off 4
initrd /initrd-2.4.20-8.img

title Red Flag Linux (Console Mode)
root (hd0,5)
kernel /vmlinuz-2.4.20-8 root=/dev/hda7 acpi=off 3
initrd /initrd-2.4.20-8.img

title Red Hat Linux (2.4.20-8) #系統選單標識
root (hd0,9) #系統引導分區(就是/boot所在分區)
kernel /vmlinuz-2.4.20-8 ro root=/dev/hda12 #內核路徑 和/分區標識 initrd /initrd-2.4.20-8.img #內核文件系統鏡像文件路徑

title Windows 98 SE #系統選單標識
rootnoverify (hd0,0) #系統引導分區(就是Win98安裝所在分區)
makeactive #自動激活
chainloader +1 #交由此係統自行引導,不可忘記!!忘了,讓你發瘋我不管!

title FreeBSD 4.8
rootnoverify (hd0,2a) #系統/分區所在的驅動器標識,別忘了加個a ,忘了?同上!
makeactive #同上
chainloader +1 #同上

5-4-1.注意:***這裏的設置都是以擁有一個單獨的/boot分區爲例,如果你沒把/boot獨立出來,那麼你需要作下面的:

5-4-a.把 "root (hd0,9)" #系統引導分區(就是/boot所在分區)修改爲你的/分區標識

5-4-b.把"kernel /vmlinuz-2.4.20-8 ro root=/dev/hda12 #內核路徑 和/分區標識" 和"initrd /initrd-2.4.20-8.img #內核文件系統鏡像文件路徑"中的路徑都修改爲真實的路徑如:

"kernel /boot/vmlinuz-2.4.20-8 ro root=/dev/hda12 #/分區標識按實際修改

"initrd /boot/initrd-2.4.20-8.img #內核文件系統鏡像文件路徑

5-4-2.對於#選單背景你可參照#選單背景畫面文件路徑的文件自己作,比MS的好多!

5-4-3.確認完工,保存退出,重啓就OK。

6-0-1.遇故障,恢復Grub多啓動菜單:

雖然Linux很穩定,但也不是鐵板一塊,再說人的"不穩定性"遠勝機器,大部分都是人爲失誤造成故障。(比如,又胡亂裝系統,裝那種強制性修改MBR的系統:如MS的。重新大規模分區,造成Linux隨完好但是啓動不起來的情況。)

這也分兩種情況:

6-1-1.Linux系統損壞/刪除,這只有在重裝Linux時裝上Grub了。然後從4-0-1開始了!

6-2-1.Linux系統正常只是MBR損壞/被覆蓋了。這樣需要重新把Grub裝在MBR就OK了。

很簡單就三步:

6-2-a.用Linux救援/啓動軟盤(與你的內核版本一致,或參看《電腦報2001合定本 (上)64頁 <製作Linux啓動盤的四種方法>》)啓動。或者Linux安裝光盤啓動進入linux seuce 拯救模式。

6-2-b.現用fdisk -l查看分區,然後把你的"啓動版"Linux的 /、 /boot 、/usr都mount上來,然後進入mounted的對應原/boot目錄.(如有在安裝"啓動版"Linux時創建的啓動軟盤,就可省略這一步,應該是可以 直接啓動Linux的。(但是當你把Linux裝在主分區上,而主分區又改變了,那還是用fdisk 和mount吧!).

6-2-c.確認/boot/grub的路徑,執行grub命令,請稍等,Grub在檢測完BIOS後會起動,會有一個grub> 的提示符(像個操作系統吧?)

輸入以下命令,一次輸完:

install_(hd0,5)/grub/stage1_d_(hd0)_(hd0,5)/grub/stage2_p_(hd0,5)/grub/grub.conf

全都正確的話,什麼也不會顯示,鍵入quit或exit退出!reboot就好了!

注意:下劃線實際爲空格!

*這只是針對擁有 Linux下標識爲/dev/hda6 即Grub格式 hd0,5 的獨立/boot分區的情況!*

6-3-1.對於沒有獨立/boot分區,只有/分區的用戶,可以用:

install_(hd0,6)/boot/grub/stage1_d_(hd0)_(hd0,6)/boot/grub/stage2_p_(hd0,6)/boot/grub/grub.conf

*這是針對只有一個Linux下標識爲/dev/hda7 即Grub格式 hd0,6 的/分區情況!
*實際的參數需要fdisk -l 檢查和通過4-0-1的對照表來轉換!

6-4-0.這第二種方法同樣適用於因爲MBR被重寫/損壞導致的Linux無法啓動的情況!

7-4-0.後記:

總算寫完了!看來,Linux適應能力夠強的!就像,像----病毒!我是在RH9 Gnome環境用OPenOffice寫的,還不錯,輸出的Doc文檔,WPS和MS-OfficeWord下都可以正常打開、顯示、編輯!當然沒有一次死機、藍屏、崩潰、死鎖!

外:一個竅門,因爲Linux/Unix和Windows的數據結構不同,用Linux/Unix的編輯器寫的中文*.TXT文檔在Windows/Dos下不能正常顯示,英文*.TXT也是換行不正確。我經過實驗,使用Gnome自帶的 附件"文本編輯器"寫出的中文文檔,在KDE下根本無法顯示,在KDE下用Kwaiter/Kate寫的中文*.txt在Windows下可以顯示,但是換行不正常!最好的辦法是用OpenOffice寫,文件--另存爲 "文件類型"選"文字,使用編碼的" 接下來的 "字符集"用GB2312 "換段落"用 CR&LF 就OK了!非常棒!


哇!寫這篇文檔,足足花了7小時40分的工時!算作給自由軟件傳播作貢獻吧!
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章