Linux+FreeBSD mini-HOWTO

资讯 驱动中国 1,625 次阅读 0 条评论
分享 Q

作者:NielsKristianBechJensen,nkbj@image.dk
译者:黄则荣tjhuang@technologist.com
v1.4,23January1998翻译日期:17March1998


--------------------------------------------------------------------------------
这份文件途述如何在一个系统中使用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只能在IntelPC平台上(i386或更高)执行.而移植到DECAlpha平台的版本目前正在被讨论.FreeBSD对硬□的需求与Linux非常的相像.

FreeBSD的发展与Linux比较起来是比较封闭的.主要的决定是由一个开发人员所成立的中心团队负责.大的改变先在mail-list上事先做讨论.FreeBSD有两个发展树,(如同Linux一般):``-current''和``-stable".新功能的发展在``-current"发展树中,而``-stable"树中的改变主要都是己除去bug的了.

FreeBSD如同Linux一般可自由免费的使用与(re-)散发.系统的大部份是在BSD版权下发行,而其他的则是在GNUGPL或GNULPGL下.

你可以在FreeBSDInc.下找到更多的资讯或是下载整个系统.最新``-stable"的版本和``-current"发展程式码可以在WalnutCreekCDROM购得.(他们是使用FreeBSD来提供web和ftp服务)



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

2.FreeBSD标示硬碟的方式
Linux和FreeBSD使用两种不同的方式来标示与切割硬碟.

2.1FreeBSD``slices''和``partitions''
FreeBSD只需要用硬碟上的一个主硬碟切割区.这个主切割区在FreeBSD的术语中被称为``slice''.然後它用disklabel这个程式在这个主硬碟切割区中制造逻辑切割区.这些逻辑切割区在FreeBSD的术语中被称为``partitions''.这个观念与Linux(和DOS)处理括充切割区中的逻辑切割区是非常相像的.注意:Linuxfdisk程式的主功能表中并不会将FreeBSDslice中的partitions显示出来,但是你可以使用命令'b'来显示BSD磁碟标签的讯息.它的输出将如这样:(/dev/hda4是FreeBSD的slice):


#fdisk/dev/hda

Command(mforhelp):p
Disk/dev/hda:64heads,63sectors,621cylinders
Units=cylindersof4032*512bytes
DeviceBootBeginStartEndBlocksIdSystem
/dev/hda1*112754400+83Linuxnative
/dev/hda22828555644883Linuxnative
/dev/hda3565640370156883Linuxnative
/dev/hda4404404621439488a5BSD/386
Command(mforhelp):b
Readingdisklabelof/dev/hda4atsector1624897.
BSDdisklabelcommand(mforhelp):p
8partitions:
#sizeoffsetfstype[fsizebsizecpg]
a:6451216248964.2BSD000#(Cyl.404-419)
b:1048321689408swap#(Cyl.420-445)
c:8789761624896unused00#(Cyl.404-621)
e:6451217942404.2BSD000#(Cyl.446-461)
f:64512018587524.2BSD000#(Cyl.462-621)
BSDdisklabelcommand(mforhelp):q
#

在第一个栏位中的字母`a'...`f'与下面FreeBSDslice的例子中的是相同的.字母`b'指的是swappartition,而`c'指的是整个slice.阅读FreeBSD文件以便获取指定这些字母给不同切割型态的``标准方法"的更多资讯.

2.2Linux和FreeBSD中的硬碟与切割区标示.
Linux和FreeBSD中的硬碟是如下列方法标示的:

LinuxFreeBSD
FirstIDEdrive/dev/hda/dev/wd0
SecondIDEdrive/dev/hdb/dev/wd1
FirstSCSIdrive/dev/sda/dev/sd0
SecondSCSIdrive/dev/sdb/dev/sd1

FreeBSDslice是如下方法标示:(/dev/hda为□例):
LinuxFreeBSD
Firstprimarypartition/dev/hda1/dev/wd0s1
Secondprimarypartition/dev/hda2/dev/wd0s2
Thirdprimarypartition/dev/hda3/dev/wd0s3
Fourthprimarypartition/dev/hda4/dev/wd0s4

FreeBSDslice中的partitions如下述方法标示(/dev/hda4是例子中的FreeBSDslice):
LinuxlabelFreeBSDlabelDefaultFreeBSDmountpoint
/dev/hda5/dev/wd0s4a/
/dev/hda6/dev/wd0s4bswap
/dev/hda7/dev/wd0s4e/var
/dev/hda8/dev/wd0s4f/usr

如果你在Linux中执行dmesg你将会看到如下(Linux的kernel必须有UFS支援才能奏效.看安装并准备Linux)部份:
Partitioncheck:
hda:hda1hda2hda3hda4<hda5hda6hda7hda8>

如果你在/dev/sdb3slice中安装FreeBSD,而且/dev/sdb2是一个含有两个逻辑切割的Linux扩充切割(/dev/sdb5及/dev/sdb6),之前的例子看起来将如同这样:
LinuxlabelFreeBSDlabelDefaultFreeBSDmountpoint
/dev/sdb7/dev/sd1s3a/
/dev/sdb8/dev/sd1s3bswap
/dev/sdb9/dev/sd1s3e/var
/dev/sdb10/dev/sd1s3f/usr

在dmesg的输出中看起来将如
Partitioncheck:
sdb:sdb1sdb2<sdb5sdb6>sdb3<sdb7sdb8sdb9sdb10>

如果你有一个Linux延伸磁区在FreeBSDslice之後,你便有了麻烦.因为大多数的Linux核心安装磁片没有内含UFS支援,它们认不得FreeBSDslice中的partitions.看到的(/dev/hda3是FreeBSDslice而/dev/hda4是Linux延伸切割)

Partitioncheck:
hda:hda1hda2hda3<hda5hda6hda7hda8>hda4<hda9hda10>

出现成:
Partitioncheck:
hda:hda1hda2hda3hda4<hda5hda6>

这会导致错误的设施指定,并会令资料遗失.我的建议是永远把你的FreeBSDslice放在任何Linux延伸切割之後,并且不要在安装FreeBSD後,改变Linux延伸切割中的任何逻辑切割.



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

3.在Linux和FreeBSD间分享Swap空间
这一个篇幅描述我如何让Linux和FreeBSD共用一个Swap切割.可能还有别的方法可以做到相同的结果.这里所用的Linux是RedHat4.1和4.2(Linux核心2.0.29和2.0.30)与FreeBSD2.2.2.如果你愿意,你可以在安装Linux之前先安装FreeBSD,但要注意FreeBSDslice中partition的顺序.


3.1安装和准备Linux
第一步是如平常一样的安装Linux.你必须在你的硬碟中留下给FreeBSDslice的空间.你不用作Linux的Swap切割,但如果你要这样一个切割,就把它放在你要给FreeBSD的空间中.这样,你便可以在稍後删除这个切割,并把它拿来给FreeBSD用.

在完成Linux的安装後,你必须要重新编译kernel.如果你对这不清楚,可以参考TheLinuxKernelHOWTO.你必须加入对UFS档案系统的支援,与对BSDdisklabel(FreeBSDpartitiontables)的支援.

UFSfilesystemsupport(readonly)(CONFIG_UFS_FS)[N/y/m/?]y
BSDdisklabel(FreeBSDpartitiontables)support(CONFIG_BSD_DISKLABEL)[N/y/?]
(NEW)y

安装新的核心并重新开机.如果你有建构LinuxSwap切割,把在/etc/fstab档中任何含有swap的那几行删去.确定你有可用的新核心开机片你便可以开始来安装FreeBSD了.
3.2安装FreeBSD
依FreeBSD文件中所描述的方式来安装你的FreeBSD.如果你有建构Linuxswap切割,把它删除,(你可以使用FreeBSD的fdisk程式.)注意一下FreeBSDslice中partitions的顺序.如果你使用预设的标签编码,第二个partition将是swap切割.完成FreeBSD的安装,并使用Linux的开机片重新开机进入Linux.


3.3在Linux中设定FreeBSD的swap切割
在进入Linux後执行dmesg.在它的输出你应该会看到类似这样的东西:

Partitioncheck:
hda:hda1hda2hda3hda4<hda5hda6hda7hda8>

这表示/dev/hda4是你的FreeBSDslice,而/dev/hda5,/dev/hda6,/dev/hda7和/dev/hda8是FreeBSD切割.如果你的swap切割是在slice中的第二个切割,那将会是/dev/hda6.你必须把下面的这几行放到你的/etc/fstab档中来开启swappartition的功能.
/dev/hda6noneswapsw00

FreeBSD可以用任何型态的切割来当作swap切割,但Linux的swap切割需要特别的签名.这个签名是用mkswap来建构的.FreeBSD使用这个共用的swap切割时会对这个签名造成破坏,所以你必须在每次进入Linux的时後执行mkswap.要让这个动作自动执行,你必须找出执行swapon的script并在开机时执行.以RedHat而言,这是/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的bootloader(Booteasy).在你的/etc/lilo.conf档中加入下列这几行,并执行lilo(FreeBSDslice是在/dev/hda4):


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

如果你把FreeBSD安装在第二颗SCSI硬碟中,使用类似这样的设定(FreeBSDslice在/dev/sdb2):
other=/dev/sdb2
table=/dev/sdb
loader=/boot/chain.b
label=FreeBSD



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

5.架构档案系统
5.1在Linux中架构UFS档案系统
不幸的,Linux核心对UFS的支援有问题.当你试著去架构UFS档案系统时,只会得到一些错误讯息(档案系统事实上已经被架上去了,但你却不能读到任何东西).所幸Linux2.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
tarxvzfu2fs-0.4.3.tar.gz
patch-p0-E<u2fs-0.4.3.patch

Linux2.0.31或更新的核心(u2fs-0.4.4.tar.gz),与最新的2.1.xx核心适用的U2FS版本,可以在这个网站找到.现在你必须重新建立支援U2FS档案系统和BSDdisklabel的核心.参考安装和准备Linux来得到更多的资料.当使用U2FS时,你可以忽略核心的UFS档案系统支援.当完成新的核心安装後,你可以使用如下列的指令来架构你的UFS档案系统(所有在FreeBSDslice中的切割,除了swap切割.

mount-tu2fs/dev/hda8/mnt

这个UFS支援是唯读的.那即是你可以自UFS档案系统中读取,但你不能对其作写入.
5.2在FreeBSD上架构ext2fs档案系统
要在FreeBSD中架构ext2fs档案系统,你要先建立一个支援ext2f的核心.请参照FreeBSD的文件来明白如何进行.放这几行

options"EXT2FS"

在你新核心的设定档中.在完成使用新的核心来开机後,你可以用下列这几行来架构你的ext2fs档案系统
mount-text2fs/dev/wd0s3/mnt

注意:你不能把ext2fs档案系统架构在FreeBSD的延伸切割中.
基於FreeBSD的某些错误,你必须在关闭FreeBSD前卸下所有的ext2fs档案系统.如果你在有ext2fs档案系统未卸下前就关闭FreeBSD,FreeBSD便不能syncUFS档案系统.这会导致FreeBSD下次启动时fsck被执行.这个错误据报告说已在``-current"发展树中被修正.



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

6.执行外来的执行档
6.1在Linux下执行FreeSBD的执行档
iBCSpackage有提供在Linux下执行FreeBSD执行档的支援;但它已太老旧且没有人维护.我不能成功让它动作.如果你幸运地叫它动起来,请你告诉我.


6.2在FreeBSD下执行Linux的执行档
FreeBSD有能力来执行Linux的执行档,包括a.out和ELF型式.要这麽做,你必须要采取下列三个步骤:

你必须开启与Linux相容的机制.要这麽做(inFreeBSD2.2.2---其他版本的细节可能不同)你要修改你的/etc/rc.conf档案,并修改
linux_enable="NO"


linux_enable="YES"

你必须安装Linux共享的程式库.它们在FreeBSD2.2.2中被包含成为packagelinux_lib-2.4.tgz(更新的版本可能已经出来了.)执行这个命令
pkg_add/linux_lib-2.4.tgz

来安装这个package.是这个package存放的目录.
安装你要执行的Linux程式.这些程式可任意安装在UFS或ext2fs档案系统中.看章节在FreeBSD上架构ext2fs档案系统来获取在FreeBSD中使用ext2fs档案系统的更多资讯.
我已成功地使用这些方法在FreeBSD2.2.2执行Linux版的Applixware4.3和Netscape3.01(两个都是ELF格式),(是的,我知道有FreeBSD版的Netscape4.)读FreeBSD的文件来了解有关这个主题.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

7.参考文献於其他有趣的文件
最新版的这份mini-HOWTO能够在我的homepagehttp://www.image.dk/~nkbj/中找著,有数种格式(包括SGML与PostScript.)这份文件已被Mr.TeruyoshiFujiwara翻译成日文,成为JFproject的一部份.

FreeBSD手册与FreeBSDFAQ被与FreeBSD一起散发.它们也可以在FreeBSDInc.http://www.freebsd.org/中被找著.这个网站也有很多关於FreeBSD的其他资讯.

LinuxKernelHOWTO被散发成为TheLinuxDocumentationProject(http://sunsite.unc.edu/LDP/)的一部份.



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

8.感谢和版权
感谢*BSD丹麦使用者群成员的回答一位FreeBSD新手的问题,也感谢Mr.TakeshiOkazaki让我注意到U2FS的存在.

8.1Disclaimer
虽然这文件内容所提供的讯息是被相信正确的,作者本人将不为文件中的内容负责.请自己承担使用这些技巧和□例的风险.


8.2Copyright
Copyright(c)1997,1998byNielsKristianBechJensen.ThisdocumentmaybedistributedonlysubjecttothetermsandconditionssetforthintheLDPlicense.版权Copyright(c)1997,1998byNielsKristianBechJensen.这份文件只可在遵守theLDPlicense的条文和条件下被散发.


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

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友