回首頁
修改
Mail
FTP

中




2008年3月22日 星期六

[MBR]GRUB多重Linux安裝解釋及原理

通常在家裡的環境是灌xp又灌linux的!如果想要同時灌兩個以上的Linux呢!甚至更多Distribution
該怎麼做呢!
其實不會很難!
以下就來試看看!
(假設您對磁碟分割已經了解,下面介紹的是MBR及super block部份)
安裝的順序是-->
XP > Ubuntu 7.10 > Fedora 6
160GB分成 (30GB->xp)(80GB->ubuntu)(30GB->fedora 6)剩20Gb就是及以後要擴充的系統及備份
此為160G sata硬碟代號為(sda) 如為IDE介面是(hda)
在grub底下硬碟都稱為(hd0)第一顆硬碟,而(hd0,0)就是第一顆硬碟的第一個分割區以此類推
在Linux底下的代號為:xp(/dev/sda1[hd0,0])Ubuntu(/dev/sda2[hd0,1]),Fedora(/dev/sda4[hd0,3)swap (/dev/sda3)
通常會將xp先灌在第一個分割區[hd0,0]然後再安裝剩餘兩套Linux Distribution
灌好xp在灌第一套linux通常不會有問題 因為linux 是後來才灌
且grub能夠認到xp所以在選單制做上就會多出一個xp的選項
就像這樣

title windows nt/2000/xp
root (hd0,0)
savedefault
makeactive
chainloader +1

先要了解一件事就是Grub的結構
大家都知道MBR很小只有512bytes 然而/boo/grub/stage1 剛好也是512bytes
知道我要說什麼了嗎?
Grub安裝第一件事就是將stage1(最小主程式)載入MBR~而後就是載入剩於的設定檔
stage2及其他環境參數檔

所以在安裝好linux後能夠有個選單是像這樣的

title ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,1)
kernel /vmlinuz-2.6.22-14-generic ro quiet splash locale=zh_TW
initrd /initrd.img-2..22-14-generic
quiet

title ubuntu 7.10, kernel 2.6.22-14-generic (recover mode)
root (hd0,1)
kernel /vmlinuz-2.6.22-14-generic ro single (就是runlevel 1)
initrd /initrd.img-2..22-14-generic

title ubuntu 7.10 memtest86+
root (hd0,1)
kernel /memtest86+.bin

title windows nt/2000/xp
root (hd0,0)
savedefault
makeactive
chainloader +1


大致上是這樣

如果在安裝一套LInux 上去
會發生什麼事呢?
大家應該知道super block也可以放boot loader
所以一開始我灌xp時會強制將MBR[hd0]與super bloack[hd0,0]
裡的boot loader 灌成xp自帶的開機程式
這也就是為什麼要先灌xp在灌linux的原理
既然知道原理就好解決
xp的super bloack[hd0,0]就不用動他 這樣以後才能將loader 控球權丟給xp
title windows nt/2000/xp
root (hd0,0)
savedefault
makeactive
chainloader +1
這一行就是將loader丟給xp 讓他自己開機的意思!

回到正題
灌完xp後在灌第一套linux
linux會將boot loader灌成Grub並且自動在安裝時
尋找其他系統的loader
比如說找到xp..就會在menu.lst裡新增一筆title為xp的loader

目前已經知道有兩套系統存在且選單也能夠正常啟動ubuntu與xp
接下來在灌fedora 6 第二套linux前請先做一個動作
就是將ubuntu 的grub也安裝一份到super bloack[hd0,1]
步驟:

root@ubuntu:~/grub
grub> find /boot/grub/menu.lst or find /grub/menu.lst
(hd0,1)
grub>root (hd0,1) 設定含/boot那個分割區
grub>setup (hd0,1) 安裝到super bloack

為什麼呢? 因為灌完fedora之後會變成有雙重選單
所以會把原先ubuntu 灌在MBR裡的boot loader蓋過去
但我只想要保留一個選單原本ubuntu那一個,然後在視fedora的menu.lst
將內容裡的

title Fedora core (2.6.18-1.2798.fc6)
root(hd0,3)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet vga=787
initrd /boot/initrd-2.6.18-1.2798.fc6.img


title copy到ubuntu的menu.lst 做整合
清單如下:完整的

title ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,1)
kernel /vmlinuz-2.6.22-14-generic ro quiet splash locale=zh_TW
initrd /initrd.img-2..22-14-generic
quiet

title ubuntu 7.10, kernel 2.6.22-14-generic (recover mode)
root (hd0,1)
kernel /vmlinuz-2.6.22-14-generic ro single (就是runlevel 1)
initrd /initrd.img-2..22-14-generic

title ubuntu 7.10 memtest86+
root (hd0,1)
kernel /memtest86+.bin

title Fedora core (2.6.18-1.2798.fc6)
root(hd0,3)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet vga=787
initrd /boot/initrd-2.6.18-1.2798.fc6.img

title windows nt/2000/xp
root (hd0,0)
savedefault
makeactive
chainloader +1

然後在將Fedora 灌在MBR的loader給蓋過去

grub> find /boot/grub/menu.lst or find /grub/menu.lst
(hd0,1)ubuntu
(hd0,3)fedora
找到兩個
grub>root (hd0,1) 這邊我們選ubuntu的menu.lst
grub>setup (hd0) 這次是安裝到MBR唷!重要

這樣就完工了!

其實方法很多不一定要造我這樣做






0 回應: