Grub輕鬆解決單硬碟3OS+n個Linux多系統啟動(轉)

post0發表於2007-08-11
Grub輕鬆解決單硬碟3OS+n個Linux多系統啟動(轉)[@more@]

版權:本文為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 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分的工時!算作給自由軟體傳播作貢獻吧

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945154/,如需轉載,請註明出處,否則將追究法律責任。

相關文章