在機器裡安裝FreeBSD,LINUX和WindowsXP作業系統(轉)

post0發表於2007-08-09
在機器裡安裝FreeBSD,LINUX和WindowsXP作業系統(轉)[@more@]

越來越大的硬碟讓人們有了更多的選擇,一些玩LINUX的人也開始嘗試更多的作業系統,使用UNIX的人也開始嘗試使用 LINUX,而WindowsXP在做某些工作還是比較方便,本文就是基於這樣一個想法,讓三種系統共存在一個硬碟裡,並很好的工作。本文的主要探討的內容是硬碟的分割槽和grub配置安裝的一些要點和基礎知識的講解,並不太深入細節,希望本文對大家有幫助。

1.在閱讀本文之前,我們有幾個約定:

載入程式選用GRUB--這個新的載入程式的強大和靈活不用我來說了,知道的的就知道了,不知道它的建議去找找它的資料,然後把LILO給換了。:)它的功能是我選用它的原因。

我們使用一個硬碟作例子,如果你有多個硬碟,你需要更改文中的一些硬碟名引數。

最後一個約定很重要,那就是你用本文作指導時,請先備份你的資料,儘管我已經很小心並試驗了全文中的各個部分,但是僅是在我的機上成功實現,我並不擔保在你的機上成功實現。

2.我們先來明確幾個概念:

一塊硬碟最多可以分成四個主分割槽,原因是在硬碟的起始引導扇區MBR中只能記錄四個分割槽的資訊,其中一個比較讓從windows下轉過來人容易誤解的是擴充套件分割槽也是屬於一個MBR主記錄的分割槽之一。這也就是說,如果你把一個硬碟分四個主分割槽,那麼就不能分擴充套件分割槽了;如果你要分一個擴充套件分割槽,那你就只能最多分三個主分割槽了。

因此,我們只能分四個主分割槽,並且只有一個分割槽是活動的,它是系統開機讀入MBR之後預設訪問的分割槽,從這個分割槽的引導扇區讀入引導該分割槽作業系統的資訊並引導該系統,但是像LINUX的lilo和GRUB進駐MBR後,MBR的引導方式又多了一種,那就是可以直接指定一個分割槽,並從中載入指定分割槽的引導扇區並引導這個分割槽的作業系統。

順帶說一下擴充套件分割槽,眾所周知,可以在擴充套件分割槽裡劃分多個邏輯分割槽。擴充套件分割槽的資訊由MBR記錄,而邏輯分割槽的資訊則是由擴充套件分割槽的引導扇區記錄的。

這一部分很重要,下面的將重點使用這部分知識:

在LINUX中,硬碟的分割槽是這樣命名.

如果你只有一個硬碟,並把它裝在IDE1上,那麼你的硬碟名在LINUX中稱為hda,在硬碟中的分割槽規則則是:從1開始劃分主分割槽(注意,這裡的主分割槽包括了擴充套件分割槽,下面提到的主分割槽也是如此理解),比如,你在硬碟裡劃分了三個主分割槽,第一個稱1,第二個稱2,第三個稱3,以此類推。那邏輯分割槽呢?因為一塊硬碟只能有四個主分割槽,那命名規則中把1,2,3,4分給了主分割槽,那麼邏輯分割槽只能從5開始命名,這就是為什麼我們看到邏輯分割槽總是從5開始的原因了。好了,這樣,我們就可以唯一的給我們的硬碟命名了,舉個例子,你的第一塊硬碟的第一個分割槽稱為hda1,第一塊硬碟的第二個分割槽稱為 hda2........,第二塊硬碟的第一個分割槽稱為hdb1,第三塊硬碟的第二個分割槽稱hdc3,以此類推。但是如果你的第一塊硬碟分二個區,第二個分割槽(hda2)是擴充套件分割槽,並在擴充套件分割槽裡分了兩個邏輯分割槽,那麼你的命名方式將是這樣的:

第一分割槽為:hda1

第二分割槽(即擴充套件分割槽):hda2

第二分割槽第一邏輯分割槽:hda5

第二分割槽第二邏輯分割槽:hda6

這時你用fdisk -l,檢視分割槽資訊時將會有類似如下顯示:

Device Boot Start End Blocks Id System

/dev/hda1 * 1 638 5124703+ 83 Linux

/dev/hda2 639 7476 39560062+ 5 Extended

/dev/hda5 7477 2615 514048+ 82 Linux swap

/dev/hda6 2616 3890 10241406 83 Linux

grub的硬碟命名方式和LINUX中稍微有所不同:

對IDE1主盤,IDE1從盤,IDE2主盤,IDE2從盤命名為hd0,hd1,hd2,hd3,也就是用0-3代替了a-d,對每個硬碟裡的分割槽用也是以0開始的數字代替了原本以1開始的LINUX下的命名,而擴充套件分割槽的邏輯分割槽是從4開始命名的,這樣,在LINUX下的命名在GRUB可是要減1了,由上舉個例子,第三個硬碟的第二個分割槽將命名為hd2,1上述的例子中的分割槽對應如下:

/dev/hda1 ------- (hd0,0)

/dev/hda2 ------- (hd0,1)

/dev/hda5 ------- (hd0,4)

/dev/hda6 ------- (hd0,5)

OK,所有的準備知識都已經講完,要是你對以上內容還有疑問,建議找找其他的相關內容參閱。

3.正式的安裝:

3.1 分割槽考慮:

安裝的難點是FreeBSD和WindowsXP都必需要安裝在主分割槽內,這樣就需要我們對硬碟的分割槽有所考慮。

在一塊40G的硬碟裡作為例子,可以更加的說明問題:

既然FreeBSD和WindowsXP都必須要安裝在主分割槽內,而LINUX可以安裝在擴充套件分割槽中,也可以安裝在主分割槽中。那麼,這意味著我們必須要分至少三個主分割槽,其中一個為擴充套件分割槽,另外兩個分割槽分別給FreeBSD和WindowsXP,擴充套件分割槽裡的邏輯裡安裝LINUX。但我不想厚此薄彼,乾脆就分四個主分割槽,其中包括了一個擴充套件分割槽,裡面分兩個邏輯分割槽,這樣,我們的分割槽方案(以LINUX的命名方式描述)就定下來了:

/dev/hda1 第一主分割槽

/dev/hda2 第二主分割槽

/dev/hda3 第三主分割槽

/dev/hda4 第四主分割槽(即擴充套件分割槽)

/dev/hda5 擴充套件分割槽第一邏輯分割槽

/dev/hda6 擴充套件分割槽第二邏輯分割槽

3.2 對硬碟格式化,使用fdisk進行低階格式化(即常說的分割槽):

我這裡選用Dos下的fdisk,你也可以使用其他的分割槽工具,比如LINUX下的fdisk,但建議只用一種分割槽工具對硬碟分割槽,因為使用多種分割槽工具的話可能會產生相容上問題,而使分割槽表無法使用。你可以根據自己的實際需要劃分分割槽的大小。但有一個比較好的建議是在擴充套件分割槽裡劃分一個小的大約是記憶體的大小兩倍的邏輯分割槽給LINUX用作SWAP分割槽,而活動分割槽隨便,不作要求,這全得益於GRUB的引導方式不是隻能從活動分割槽引導作業系統,而是它能定位特定分割槽並啟動該分割槽的作業系統。這裡不打算詳細寫出分割槽步驟,這方面的參考資料太多了,用google搜一下,跳出的網頁足以讓你看上一個星期。(誇張了一點點)

3.3 安裝步驟的選擇:

可以先安裝FreeBSD或是Windows,再安裝LINUX,原因是LINUX現在都有自帶GRUB的安裝,我們要使用GRUB引導三個系統,就可以在最後安裝LINUX時把GRUB安裝在MBR上,而不會給FreeBSD和Windows的載入程式覆蓋掉。在這裡我選擇先安裝FreeBSD.

3.3.1 安裝FreeBSD

在FreeBSD下將主分割槽稱為SLICE,命名方式IDE第一塊硬碟裡的四個主分割槽稱為wd0s1,wd0s 2,wd0s3,wd0s4。

LINUX裡的命名方式來述說,把FreeBSD放在/dev/hda1分割槽裡,用光碟安裝,插入FreeBSD安裝盤,光碟啟動之後有一些互動的安裝,安裝指導請參閱其他相關資料,到了分割槽介面下時,選擇wd0s1安裝FreeBSD,然後按T改變這個分割槽的型別,165是FreeBSD的分割槽型別 FFS的代號,然後按w寫入完成,在選擇載入程式裡,可以選:BOOTMANAGER,最後退出,接下來安裝下面的步驟,此處省略。

3.3.2 安裝WindowsXP

這個步驟要說明的就是把它安裝在第二個主分割槽,即/dev/hda2中,在分割槽介面裡選擇第二個分割槽,建議使用FAT32格式化該分割槽,這樣可以使 LINUX可讀可寫該分割槽,用NTFS則在LINUX下不可寫入,只能讀。下面的安裝步驟都不用說了,是地球人都會按NEXT了。

3.3.3 安裝LINUX並配置GRUB

這個步驟安裝LINUX,安裝LINUX的文章更多,有許多非常優秀的文章,如果你還不會安裝LINUX,可以先去看這些文章再讀本文,我這裡只講一些要點,在分割槽介面裡,把第三個分割槽,即/dev/hda3用做LINUX的安裝分割槽,同時你在擴充套件分割槽裡劃了準備用作SWAP的分割槽的話,記得把它一起加上格式化。OK!!,可以了,在下面的步驟裡,你要選擇把GRUB安裝到MBR中,必須要這樣做。安裝在其他地方是不可以用GRUB來引導的,可能安裝這些時GRUB並不能識別你在第一分割槽的FreeBSD,或者在你硬碟裡的其他一些作業系統,不要緊,我們可以對GRUB做一些修改,使它引導這些作業系統。在這裡給出在本例中的GRUB配置。

一般來說,Windows是可以被檢測到的,但FreeBSD可能會有些問題。

在GRUB的配置中,主要是對/etc/grub.conf作修改:

可能安裝好LINUX後的/etc/grub.conf檔案和下面的很類似:

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

# all kernel and initrd paths are relative to /, eg.

# root (hd0,5)

# kernel /boot/vmlinuz-version ro root=/dev/hda6

# initrd /boot/initrd-version.img

#boot=/dev/hda

default=0

timeout=10

splashimage=(hd0,2)/boot/grub/splash.xpm.gz

title Linux (2.4.20-8)

root (hd0,2)

kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/1

initrd /boot/initrd-2.4.20-8.img

title Dos

rootnoverify (hd0,1)

chainloader +1

我對主要的行作一些解釋,以#打頭的是註釋行,可以不用理它。

default=0 是指預設選項是第一個title標記的作業系統將引導,這裡是LINUX

timeout=10 指十秒之內使用者沒有作出選擇的話,將以預設的選項作業系統引導

title Linux (2.4.20-8) 這行是title標記,後面的內容在GRUB選單中被顯示

root (hd0,2) 這行是指從哪個分割槽引導作業系統,即GRUB定位分割槽作業系統

kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/1 這行是從指定分割槽中給出核心的路徑,以便引導系統

rootnoverify (hd0,1)和chainloader +1表示從特定分割槽使用鏈式的引導方式,本例來說即GRUB定位hd0,1這個分割槽裡,找到該分割槽的作業系統的載入程式,啟用它,讓它來引導該分割槽的作業系統。一般來說,windows系列就是這樣引導的。

另外我們這裡title Dos標記引導的是WindowsXP了。

現在這個40G的硬碟裡的三個作業系統可以引導兩個了(如果你的WindowsXP不能引導的話,把/etc/grub.conf改成上面類似的樣子,再進行下面的步驟);

接下來要修改/etc/grub.conf以使它可以引導FreeBSD,

加入下面的內容到/etc/grub.conf中:

title FreeBSD

rootnoverify (hdx,y)

chainloader +1

要是你理解了上面以Dos為標記的引導塊的語句,就不難理解這個FreeBSD的引導塊的語句了。上面的意思是定位到hdx,y分割槽(本例中為hd0,0,這正是我們安裝FreeBSD的分割槽),然後啟用該分割槽的載入程式,由該載入程式來引導FreeBSD。

還有一種方法也可以實現FreeBSD的引導,你也可以嘗試一下,但不一定都成功。

加入以下幾行至/etc/grub.conf

titile FreeBSD

root(hd0,x,y)

kernel /boot/loader

其中,x為你的FreeBSD的分割槽,y為FreeBSD/所在的SLICE.

OK!儲存修改。如果一切順利的話,重新啟動機器,將看見有三個可選項,LINUX,FreeBSD和Dos,試著進入每個系統,所有配置正確的話將看見每個系統都可以進入。如果你發現有某個系統不能進入,請找到一些GRUB的資料,它將給你詳細的指導。

如果你對本文的任何錯誤或是改進,請和我聯絡huangyiddle@21cn.com,本人將非常的感激

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

相關文章