歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Linux+FreeBSDmini-HOWTO

作者: Niels Kristian Bech Jensen, [email protected] 譯者: 黃則榮 [email protected] v1.4, 23 January 1998 翻譯日期: 17 March 1998 -------------------------------------------------------------------------------- 這份文件途述如何在一個系統 作者: Niels Kristian Bech Jensen, [email protected] 
譯者: 黃則榮 [email protected]
v1.4, 23 January 1998 翻譯日期: 17 March 1998 


--------------------------------------------------------------------------------
這份文件途述如何在一個系統中使用 Linux 和 FreeBSD. 它介紹 FreeBSD, 並討論這兩個系統如何互相影響, 如一起分享 swap 空間. 你在讀這份文件之前, 應該要有使用 Linux 與做硬碟分割的經驗. 如果你對這篇文件有任何的評論, 問題, 與建議, 請不要猶豫, 寫封電子郵件給我. 我也希望聽聽有同時使用 Linux 和 NetBSD 或 OpenBSD 經驗的人說說. 
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

1. 什麽是 FreeBSD? 
FreeBSD 和 Linux 一樣是個免費的, 如同 unix 般的作業系統. 最主要的差異是, Linux 是自首到尾從新發展的, 而 FreeBSD 是基於 4.4BSD (柏克來大學軟□ Distribution) 自由 redistribution 的那一個部份而來. 這個部份也被稱為 4.4BSD-lite. 這個事實也許會使人這麽想: FreeBSD 比 Linux 更近於'真正'的unix. FreeBSD 只能在 Intel PC 平台上(i386或更高)執行. 而移植到 DEC Alpha 平台的版本目前正在被討論. FreeBSD 對硬□的需求與 Linux 非常的相像. 

FreeBSD 的發展與 Linux 比較起來是比較封閉的. 主要的決定是由一個開發人員所成立的中心團隊負責. 大的改變先在mail-list 上事先做討論. FreeBSD 有兩個發展樹, (如同 Linux 一般) : ``-current' 和 ``-stable". 新功能的發展在``-current"發展樹中, 而``-stable"樹中的改變主要都是己除去 bug 的了. 

FreeBSD 如同 Linux一般可自由免費的使用與(re-)散發. 系統的大部份是在BSD 版權下發行, 而其他的則是在 GNU GPL 或 GNU LPGL 下. 

你可以在 FreeBSD Inc. 下找到更多的資訊或是下載整個系統. 最新 ``-stable"的版本和 ``-current"發展程式碼可以在 Walnut Creek CDROM 購得. (他們是使用 FreeBSD 來提供 web 和 ftp 服務) 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

2. FreeBSD 標示硬碟的方式
Linux 和 FreeBSD 使用兩種不同的方式來標示與切割硬碟. 

2.1 FreeBSD ``slices' 和 ``partitions' 
FreeBSD 只需要用硬碟上的一個主硬碟切割區. 這個主切割區在 FreeBSD 的術語中被稱為 ``slice'. 然後它用 disklabel 這個程式在這個主硬碟切割區中制造邏輯切割區. 這些邏輯切割區在 FreeBSD 的術語中被稱為``partitions'. 這個觀念與 Linux (和 DOS) 處理括充切割區中的邏輯切割區是非常相像的. 注意: Linux fdisk 程式的主功能表中並不會將 FreeBSD slice 中的 partitions 顯示出來, 但是你可以使用命令 'b' 來顯示 BSD 磁碟標簽的訊息. 它的輸出將如這樣 : (/dev/hda4 是 FreeBSD 的 slice): 


# 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
#

在第一個欄位中的字母 `a'...`f' 與下面 FreeBSD slice 的例子中的是相同的. 字母`b'指的是 swap partition, 而`c'指的是整個 slice. 閱讀 FreeBSD 文件以便獲取指定這些字母給不同切割型態的``標准方法" 的更多資訊. 

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

FreeBSD slice 是如下方法標示: (/dev/hda 為□例): 
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 中的 partitions 如下述方法標示 (/dev/hda4 是例子中的 FreeBSD slice ): 
Linux label FreeBSD label Default 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 的 kernel 必須有 UFS 支援才能奏效. 看 安裝並准備 Linux) 部份: 
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

如果你在 /dev/sdb3 slice 中安裝 FreeBSD, 而且 /dev/sdb2 是一個含有兩個邏輯切割的 Linux 擴充切割 (/dev/sdb5 及 /dev/sdb6), 之前的例子看起來將如同這樣: 
Linux label FreeBSD label Default 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 >

如果你有一個 Linux 延伸磁區在 FreeBSD slice 之後, 你便有了麻煩. 因為大多數的 Linux 核心安裝磁片沒有內含UFS 支援, 它們認不得 FreeBSD slice 中的 partitions. 看到的(/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 >

這會導致錯誤的設施指定, 並會令資料遺失. 我的建議是 永遠把你的 FreeBSD slice 放在任何 Linux 延伸切割之後, 並且不要在安裝 FreeBSD 後, 改變 Linux 延伸切割中的任何邏輯切割. 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

3. 在 Linux 和 FreeBSD間分享 Swap 空間
這一個篇幅描述我如何讓 Linux 和 FreeBSD 共用一個 Swap 切割. 可能還有別的方法可以做到相同的結果. 這裡所用的 Linux 是 Red Hat 4.1 和 4.2 (Linux 核心 2.0.29 和 2.0.30) 與 FreeBSD 2.2.2. 如果你願意, 你可以在安裝 Linux 之前先安裝 FreeBSD, 但要注意 FreeBSD slice 中 partition 的順序. 


3.1 安裝和准備 Linux 
第一步是如平常一樣的安裝 Linux. 你必須在你的硬碟中留下給 FreeBSD slice 的空間. 你不用作 Linux 的 Swap 切割, 但如果你要這樣一個切割, 就把它放在你要給 FreeBSD 的空間中. 這樣, 你便可以在稍後刪除這個切割, 並把它拿來給 FreeBSD 用 . 

在完成 Linux 的安裝後, 你必須要重新編譯 kernel. 如果你對這不清楚, 可以參考 The Linux Kernel HOWTO. 你 必須 加入對 UFS 檔案系統 的支援, 與對 BSD disklabel (FreeBSD partition tables) 的支援. 

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

安裝新的核心並重新開機. 如果你有建構 Linux Swap 切割, 把在/etc/fstab 檔中任何含有 swap 的那幾行刪去. 確定你有可用的新核心開機片 你便可以開始來安裝 FreeBSD 了. 
3.2 安裝 FreeBSD 
依 FreeBSD 文件中所描述的方式來安裝你的 FreeBSD. 如果你有建構 Linux swap 切割, 把它刪除, (你可以使用 FreeBSD 的fdisk 程式.) 注意一下 FreeBSD slice 中 partitions 的順序. 如果你使用預設的標簽編碼, 第二個 partition 將是swap 切割. 完成 FreeBSD 的安裝, 並使用Linux的開機片 重新開機進入 Linux. 


3.3 在 Linux 中設定 FreeBSD 的 swap 切割 
在進入 Linux 後執行 dmesg. 在它的輸出你應該會看到類似這樣的東西: 

Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

這表示 /dev/hda4 是你的 FreeBSD slice, 而 /dev/hda5, /dev/hda6, /dev/hda7 和 /dev/hda8 是 FreeBSD 切割. 如果你的 swap 切割是在 slice 中的第二個切割, 那將會是 /dev/hda6. 你必須把下面的這幾行放到你的 /etc/fstab 檔中來開啟 swap partition 的功能. 
/dev/hda6 none swap sw 0 0

FreeBSD 可以用任何型態的切割來當作 swap 切割, 但 Linux 的 swap 切割需要特別的簽名. 這個簽名是用 mkswap 來建構的. FreeBSD 使用這個共用的 swap 切割時會對這個簽名造成破壞, 所以你必須在每次進入 Linux 的時後執行 mkswap. 要讓這個動作自動執行, 你必須找出執行 swapon 的 script 並在開機時執行. 以 Red Hat 而言, 這是 /etc/rc.d/rc.sysinit. 把下面這一行放到 swapon -a 前: 
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

這將會在每次開機時, 在 /etc/fstab 中的任何 swap 切割上執行 mkswap, 除非你把它取消 (使用 ``#' 當一行的第一個字元) 
在你重新開機進入 Linux 後, 使用 free 來檢查 swap 空間的大小. 你也必須重新開機進入 FreeBSD 來確認一切都如預期的運作. 如果沒有, 那你可能使用了錯誤的切割來當作 swap 切割. 唯一的解決辦法, 便是重新再安裝 FreeBSD, 並再試一次. 經驗是好的導師. :-) 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

4. 使用 LILO 來啟動 FreeBSD 
你可以非常容易的使用 LILO 來啟動 FreeBSD. 如果你要使用 LILO, 不要安裝 FreeBSD 的 boot loader (Booteasy). 在你的/etc/lilo.conf 檔中加入下列這幾行, 並執行 lilo ( FreeBSD slice 是在 /dev/hda4): 


other=/dev/hda4
table=/dev/hda
label=FreeBSD

如果你把 FreeBSD 安裝在第二顆 SCSI 硬碟中, 使用類似這樣的設定(FreeBSD slice 在 /dev/sdb2): 
other=/dev/sdb2
table=/dev/sdb
loader=/boot/chain.b
label=FreeBSD



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

5. 架構檔案系統
5.1 在 Linux 中架構 UFS 檔案系統 
不幸的, Linux 核心對 UFS 的支援有問題. 當你試著去架構 UFS 檔案系統時, 只會得到一些錯誤訊息(檔案系統事實上已經被架上去了, 但你卻不能讀到任何東西). 所幸 Linux 2.0.xx 核心 (xx<30) 有一個新 (ALPHA) 版本的 UFS 檔案系統支援, 在 SunSite. 這被稱為 U2FS, 而目前的版本是 u2fs-0.4.3.tar.gz. U2FS 是用下列的方式來安裝(假設u2fs-0.4.3.tar.gz 是存放在/usr/src): 

cd /usr/src
tar xvzf u2fs-0.4.3.tar.gz
patch -p0 -E < u2fs-0.4.3.patch

Linux 2.0.31 或更新的核心(u2fs-0.4.4.tar.gz), 與最新的 2.1.xx 核心適用的 U2FS版本, 可以在 這個網站 找到. 現在你必須重新建立支援 U2FS 檔案系統 和 BSD disklabel 的核心. 參考 安裝和准備 Linux 來得到更多的資料. 當使用U2FS時, 你可以忽略核心的 UFS 檔案系統 支援. 當完成新的核心安裝後, 你可以使用如下列的指令來架構你的 UFS 檔案系統(所有在 FreeBSD slice 中的切割, 除了 swap 切割. 

mount -t u2fs /dev/hda8 /mnt

這個 UFS 支援是唯讀的. 那即是你可以自UFS 檔案系統中讀取,但你不能對其作寫入. 
5.2 在 FreeBSD上架構 ext2fs 檔案系統 
要在 FreeBSD 中架構 ext2fs 檔案系統, 你要先建立一個支援 ext2f 的核心. 請參照 FreeBSD 的文件來明白如何進行. 放這幾行 

options "EXT2FS"

在你新核心的設定檔中. 在完成使用新的核心來開機後, 你可以用下列這幾行來架構你的 ext2fs 檔案系統 
mount -t ext2fs /dev/wd0s3 /mnt

注意: 你不能把 ext2fs 檔案系統架構在 FreeBSD 的延伸切割中. 
基於 FreeBSD 的某些錯誤, 你必須在關閉 FreeBSD 前卸下所有的 ext2fs 檔案系統. 如果你在有 ext2fs 檔案系統未卸下前就關閉 FreeBSD, FreeBSD 便不能 sync UFS 檔案系統. 這會導致FreeBSD下次啟動時 fsck 被執行. 這個錯誤據報告說已在``-current" 發展樹中被修正. 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

6. 執行外來的執行檔
6.1 在 Linux 下執行 FreeSBD 的執行檔 
iBCS package 有提供在 Linux 下執行 FreeBSD 執行檔的支援; 但它已太老舊且沒有人維護. 我不能成功讓它動作. 如果你幸運地叫它動起來, 請你告訴我. 


6.2 在 FreeBSD 下執行 Linux 的執行檔 
FreeBSD 有能力來執行 Linux 的執行檔, 包括 a.out 和ELF 型式. 要這麽做, 你必須要采取下列三個步驟: 

你必須開啟與 Linux 相容的機制. 要這麽做 (in FreeBSD 2.2.2 --- 其他版本的細節可能不同) 你要修改你的/etc/rc.conf 檔案, 並修改 
linux_enable="NO"

成 
linux_enable="YES"

你必須安裝 Linux 共享的程式庫. 它們在 FreeBSD 2.2.2 中被包含成為 packagelinux_lib-2.4.tgz (更新的版本可能已經出來了.) 執行這個命令 
pkg_add /linux_lib-2.4.tgz

來安裝這個package.  是這個package存放的目錄. 
安裝你要執行的 Linux 程式. 這些程式可任意安裝在 UFS 或 ext2fs 檔案系統中. 看章節 在 FreeBSD 上架構 ext2fs 檔案系統 來獲取在 FreeBSD 中使用 ext2fs 檔案系統的更多資訊. 
我已成功地使用這些方法在 FreeBSD 2.2.2 執行 Linux 版的 Applixware 4.3 和 Netscape 3.01 (兩個都是 ELF 格式), (是的, 我知道有 FreeBSD 版的 Netscape 4.) 讀 FreeBSD 的文件來了解有關這個主題. 
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

7. 參考文獻於其他有趣的文件
最新版的這份 mini-HOWTO 能夠在 我的 homepage http://www.image.dk/~nkbj/中找著, 有數種格式 (包括 SGML 與 PostScript.) 這份文件已被 Mr. Teruyoshi Fujiwara 翻譯成日文, 成為 JF project 的一部份. 

FreeBSD 手冊與 FreeBSD FAQ 被與 FreeBSD 一起散發. 它們也可以在 FreeBSD Inc. http://www.freebsd.org/中被找著. 這個網站也有很多關於 FreeBSD 的其他資訊. 

Linux Kernel HOWTO 被散發成為 The Linux Documentation Project (http://sunsite.unc.edu/LDP/)的一部份. 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

8. 感謝和版權
感謝 *BSD 丹麥使用者群成員的回答一位 FreeBSD 新手的問題, 也感謝 Mr. Takeshi Okazaki 讓我注意到U2FS 的存在. 

8.1 Disclaimer 
雖然這文件內容所提供的訊息是被相信正確的, 作者本人將不為文件中的內容負責. 請自己承擔使用這些技巧和□例的風險. 


8.2 Copyright 
Copyright (c) 1997, 1998 by Niels Kristian Bech Jensen. This document may be distributed only subject to the terms and conditions set forth in the LDP license. 版權 Copyright (c) 1997, 1998 by Niels Kristian Bech Jensen. 這份文件只可在遵守 the LDP license 的條文和條件下被散發. 


--------------------------------------------------------------------------------

Copyright © Linux教程網 All Rights Reserved