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

來源:互聯網
上載者:User
 

來源:http://www.ddvip.net/

越來越大的硬碟讓人們有了更多的選擇,一些玩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,本人將非常的感激。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.