FreeBSD
By Wing
摘要:這個文檔描述了如果在同一個系統上使用Linux和FreeBSD。它介紹了FreeBSD,並且討論如果使這兩個系統協同工作,比如,共享swap空間。在讀些文檔之前,最好有一些對於fdisk分區和Linux或FreeBSD系統的經驗。這個文檔使用的經驗在FreeBSD 2.2.2上通過,當然對於新的版本,它依然是適用的。
這個文檔描述了如果在同一個系統上使用Linux和FreeBSD。它介紹了FreeBSD,並且討論如果使這兩個系統協同工作,比如,共享swap空間。在讀些文檔之前,最好有一些對於fdisk分區和Linux或FreeBSD系統的經驗。這個文檔使用的經驗在FreeBSD 2.2.2上通過,當然對於新的版本,它依然是適用的。如果有什麼問題,請來信,我也希望看看別人使用NetBSD和OpenBSD與Linux共存的經驗。
內容列表
什麼是FreeBSD?
FreeBSD對於磁盤分區的方式
2.1 FreeBSD "slices"和"partitions"
2.2 在Linux和FreeBSD中的驅動器和分區標號
在Linux和FreeBSD系統上共享swap空間
3.1安裝Linux
3.2安裝FreeBSD
3.3在Linux中設置FreeBSD的swap分區
使用LILO啟動FreeBSD
掛起文件系統
5.1在Linux掛起UFS文件系統
5.2在FreeBSD中掛起ext2fs文件系統
運行外部二次制代碼
6.1 在Linux下運行FreeBSD的二進制代碼
6.2 在FreeBSD下運行Linux的二進制代碼
信息資源
---------------------------------------------------------
1、什麼是FreeBSD?
FreeBSD是一個免費的類Unix的操作系統,非常類似於Linux。這個主要的區別是,Linux的內核是拼湊出來的,FreeBSD是根據自由發布的4.4BSD(伯克利軟件分部)發展而來的。這個現實可能導致了一些人提出FreeBSD比Linux更接近於“真正”的UNIX。FreeBSD只運行在Intel的PC系統上(i386體系);DEC Alpha和Sun Sparc平台上的ports也在此時一起被開發。NetBSD和OpenBSD都與FreeBSD非常相像,非常都可以運行在幾個平台之上。*BSD的硬件的需要與Linux差不多。
被管理FreeBSD的開發過程與Linux的開發過程並不一樣。有一個核心小組對內核代碼進行裁決並且領導整個工程的開發。
如果有大的改變,則需要在電子郵件中進一步討論。FreeBSD工程具有兩個開發樹(就像Linux):"-CURRENT"和"-STABLE"。"-CURRENT"開發樹包括了新的特性。而"-STABLE"開發樹則修證了新特性中測試出來的錯誤和漏洞。
FreeBSD可以被免費地使用和發布,就如同Linux一樣。在其下運行的許多部件都使用了BSD的版權。
2、FreeBSD對於磁盤分區標記的方式
Linux和FreeBSD標記了硬盤驅動器和分區。對於兩個系統來說,對於扇區的闡述不盡相同。實際上FreeBSD的分區方式只是BSD的分區方式在PC的fdisk分區方式上的體現。因此它非常類似於其它的類Unix系統,比如NetBSD,OpenBSD,Ultrix,Digial Unix,SunOS,和Solaris。
2.1. FreeBSD"slices"和"partitions"
FreeBSD需要在你的PC上的硬盤上的分區表中占用四個項。在FreeBSD術語中,主分區被稱為一個"slice"。使用disklabel程序在這個主分區中造成8個分區。在FreeBSD術語中,這些邏輯分區被稱為“partitions"。這個概念與Linuxs管理在一個擴展分區中的邏輯分區的方式非常類似。你不可以在由Linux建立的擴展分區中安裝FreeBSD。注意,Linux的fdisk程序不能在其主菜單中顯示出在FreeBSD的slice中的BSD分區,但是你可以通過命令“b“來顯示BSD的卷標。輸出如下內容:
bash# fdisk /dev/hda
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 27 54400+ 83 Linux native
/dev/hda2 28 28 55 56448 83 Linux native
/dev/hda3 56 56 403 701568 83 Linux native
/dev/hda4 404 404 621 439488 a5 BSD/386
Command (m for help): b
Reading disklabel of /dev/hda4 at sector 1624897.
BSD disklabel command (m for help): p
8 partitions:
# size offset fstype [fsize bsize cpg]
a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419)
b: 104832 1689408 swap # (Cyl. 420 - 445)
c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621)
e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461)
f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621)
BSD disklabel command (m for help): q
bash#
注意,在第一欄中的字母"a...f"。在BSD中,有三種特別的分區。字母'a'表示是root分區,'b'表示是swap分區,c是整個slice。如果您想知道詳細情況,請查閱"standard"的方式。
2.2 在Linux和FreeBSD中的驅動器和分區標號
在Linux和FreeBSD中,硬盤被標記成以下方式。
Linux FreeBSD
First IDE drive /dev/hda /dev/wd0
Second IDE drive /dev/hdb /dev/wd1
First SCSI drive /dev/sda /dev/sd0
Second SCSI drive /dev/sdb /dev/sd1
而在一個IDE驅動器的分區(FreeBSD slices)由以下方式標記:
Linux FreeBSD
First primary partition /dev/hda1 /dev/wd0s1
Second primary partition /dev/hda2 /dev/wd0s2
Third primary partition /dev/hda3 /dev/wd0s3
Fourth primary partition /dev/hda4 /dev/wd0s4
在我的FreeBSD的slice上的分區,由以下方式標記。這是默認的標記方法。如果你自定義安裝FreeBSD,那麼則有可能改變它。(/dev/hda4在例子中是一個FreeBSD slice)。
Linux label FreeBSD label FreeBSD mount point
/dev/hda5 /dev/wd0s4a /
/dev/hda6 /dev/wd0s4b swap
/dev/hda7 /dev/wd0s4e /var
/dev/hda8 /dev/wd0s4f /usr
如果你在Linux中運行“dmesg”,你將發現下面情況:(Linux的內核必須支持UFS文件系統)
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
如果你已經在/dev/sd1s3 slice上安裝了FreeBSD,並且/dev/sdb2是一個Linux的擴展分區,它包括了兩個邏輯分區(/dev/sdb5和/dev/sdb6),比如:
Linux label FreeBSD label FreeBSD mount point
/dev/sdb7 /dev/sd1s3a /
/dev/sdb8 /dev/sd1s3b swap
/dev/sdb9 /dev/sd1s3e /var
/dev/sdb10 /dev/sd1s3f /usr
dmesg的輸出:
Partition check:
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >
如果在你的FreeBSD slice中你有了問題之後,你有一個Linux的擴展分區,因為大多數Linux內核安裝軟盤被建立的時候沒有包括UFS的支持,它們將不能識別FreeBSD的分區。在dmesg:(/dev/hda3是FreeBSD slice並且/dev/hda4是Linux的擴展分區)
Partition check:
hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >
被看作:
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
這將給出設備的錯誤信號,並且引起數據的丟失。我的建議是:允許在任何一個Linux擴展分區之後放入人的FreeBSD分區,並且在安裝了FreeBSD之後,不要改變在Linux擴展分區中的任何邏輯分區。
3、在Linux和FreeBSD系統上共享swap空間
這個部分描述了如何使用Linux和FreeBSD來共享一個swap空間。有幾種不同的方法可以實現它。如果你願意,你可以在Linux安裝之前安裝FreeBSD,只是需要注意FreeBSD slice的分區順序。
3.1.1安裝Linux
第一步是正常安裝Linux。你必須在硬盤上留下一些空間作為FreeBSD的slice。你不必分出一個Linux swap分區,但是如果你需要一個,將其放在你為FreeBSD安排的空間中。這個方法可以使你在以後使用FreeBSD的空間時,刪除Linuxswap分區。
當你安裝了Linux後,你必須重新編譯一個新的內核。如果不熟悉,請讀一下Linux kernel HOWTO。你必須在內核中包入UFS文件系統支持(只讀)和BSD磁盤標記(FreeBSD分區表)支持:
UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
(NEW) y