分享
 
 
 

如何在一个系统中使用 Linux 和 FreeBSD

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

这份文件途述如何在一个系统中使用 Linux 和 FreeBSD. 它介绍 FreeBSD, 并讨

论这两个系统如何互相影响, 如一起分享 swap 空间. 你在读这份文件之前, 应

该要有使用 Linux 与做硬碟分割的经验. 如果你对这篇文件有任何的评论, 问

题, 与建议, 请不要犹豫, 写封电子邮件给我. 我也希望听听有同时使用 Linux

NetBSD 或 OpenBSD 经验的人说说.

_________________________________________________________________

1. 什麽是 FreeBSD?

2. FreeBSD 标示硬碟的方式

* 2.1 FreeBSD ``slices'' 和 ``partitions''

* 2.2 Linux 和 FreeBSD 中的硬碟与切割区标示.

3. 在 Linux 和 FreeBSD间分享 Swap 空间

* 3.1 安装和准备 Linux

* 3.2 安装 FreeBSD

* 3.3 在 Linux 中设定 FreeBSD 的 swap 切割

4. 使用 LILO 来启动 FreeBSD

5. 架构档案系统

* 5.1 在 Linux 中架构 UFS 档案系统

* 5.2 在 FreeBSD上架构 ext2fs 档案系统

6. 执行外来的执行档

* 6.1 在 Linux 下执行 FreeSBD 的执行档

* 6.2 在 FreeBSD 下执行 Linux 的执行档

7. 参考文献於其他有趣的文件

8. 感谢和版权

* 8.1 Disclaimer

* 8.2 Copyright

_________________________________________________________________

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 下.

你可以在 [4]FreeBSD Inc. 下找到更多的资讯或是下载整个系统. 最新

``-stable"的版本和 ``-current"发展程式码可以在 [5]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

支援才能奏效. 看 [6]安装并准备 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 档案系

统支援, 在 [7]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版本, 可以在 [8]这个网站 找到. 现在你必须重新建立支援 U2FS 档案

系统 和 BSD disklabel 的核心. 参考 [9]安装和准备 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

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有