FreeBSD安装调试

来源:互联网 发布:北大青鸟学士后java 编辑:程序博客网 时间:2024/05/22 12:53

01.光碟开机
02.安装方式
a. Express Begin a quick installation(for impatient)
03.设partition
a. 通常将全部的硬碟分割给同一系统使用(A=Use Entire Disk)
04.分割label
a. C(Create)-->500M-->FS (A file system)--> / (挂入点为/)
b. C(Create)-->256M-->Swap (A Swap partition)
注意: swap 常为ram的两倍,但ram很大时用一倍就可以
c. C(Create)-->All(剩下的空间)-->FS (A file system)-->/usr (挂入点为/usr)
d. Q (Finish)
05.选择distributions
[X] 6.kern-Developer Full binaries and doc;kernel source only
06.select the encryption facilities you wish to install(选择编码方式)
[X] crypto Basic encryption services
07.安装ports (Yes)
08.选择用光碟或Ftp安装
CDROM
Ftp-->Url-->输入自己想要的站台(ex:freebsd.csie.nctu.edu.tw)
或是由内建的Ftp站台中选一个离你最近的
09.Network interface information required (网路卡设定)
若是用光碟安装 则需在Configuration Menu的network做设定
10.开始正式安装到硬碟中
11.是否做後设定 (yes)
FreeBSD Configuration Menu
a. package-->shell-->bash (用package安装bash这个shell)
b. Console-->Repeat(键盘的重速度)-->fast
c. Timezone-->选择台湾(台北Taipei) UTC(格林威治时间);(CST中原标准时间)
d. Mouse-->Disable (因server通常不用滑鼠,所以disable)
e. Network (如果之前没有设网卡的话)
12.重开机
13.开机完成後出现
XXXX login: root (以root登入)
passwd: (因为刚才安装时没有设定root密码所以不会出现)
14.# passwd (设定root密码,#表示root身份)
输入想要的passwd并重覆一次
15.# adduser (新增使用者)
一切以预设即可,会有简单的英文说明须注意的是在login group
login group:XXX(输入想要的group名称)
login group is "XXX" Invite XXX into other groups:guest no
(若还想要隶属於某群组,可在此加入)
16.基本的安装已完成

FREEBSD5.0的分区和LINUX的分区概念不一样,没有安装过FREEBSD的兄弟,倒是可以看看!个人的安装体会!
偶们知道一个硬盘最多可以划分四个主分区,扩展分区算一个主分区,在玩WIN的时候偶们的硬盘一般都只有两个主分区,一个是C盘,另外一个就是扩展分区,那么现在偶们要在保留WIN的情况下安装FREEBSD,就要分割硬盘,划分出一个分区作为主分区,因为FREEBSD必须安装在主分区上面,放心一个硬盘可以有四个主分区的,所以再多分一个主分区没问题的,如何填加一个主分区呢?偶建议兄弟用这个软件:partitionexpert2003,再网上找找应该可以找到,这个软件分区速度快!


好,偶们现在的硬盘上面已经有三个主分区了,一个是C盘,一个是扩展分区,还有一个是偶们刚才填加的主分区,接下来介绍一下FREEBSD的分区命名规则,和LINUX不一样的:
FREEBSD将主分区称为SLICE,也就是说一个硬盘最多可以有四个SLICE,这四个主分区分别叫wd0s1,wd0s 2,wd0s3,wd0s4,wd0为第一个IDE硬盘,使用s1标识第一个分区,如果说第二个主分区是扩展分区的话,就叫wd0s 2,以次类推。FREEBSD安装的时候会占用一个主分区,假设我们现在用第三个主分区来安装FREEBSD,也就是wd0s3,那么偶们必需指定这个分区作为FREEBSD的安装分区,在分区界面下偶们可以把光标移到wd0s3上,然后按“T”改变这个分区的类型,输入165,165是FREEBSD的分区类型,上面会有说明的,兄弟可以看看,改变好分区的类型后,偶们按“W”写入,此时会提示用什么工具作引导,偶一般都选“BOOTMANAGER”,最后按“Q”退出!
好了,现在FREEBSD的分区已经准备好了,接下来就要在这个分区上分“/”“/var”“/usr”swap分区了,偶们按“A”,让FREEBSD自动分这些区,其实这一部分就像在扩展分区上面划分逻辑分区的道理一样,接下来按“W”写入,按“Q”退出,好了,分区到此就搞定了,接下来安装其他的,哈哈!

说了这么多废话,就是想让兄弟们可以更好的理解,忍不住还想再总结一下:
1.FREEBSD必需安装在主分区上面,如果你的电脑现在只有两个主分区的话,一定要记得多划一个出来,要不然到时候不小心把扩展分区干掉了,555555555,血的教训啊!
2.先指定一个主分区给FREEBSD使用。
3.然后再指定的主分区上分“/”“/var”“/usr”swap之类的。

好了,说多了,偶语文太差,哈哈!如果兄弟们在安装过程中有什么问题可以提出来一起讨论!

FreeBSD服务器的安装与优化

发布日期:2005-1-1 9:46:00 来源:Itohot.com收集整理 录入:kedee 阅读: 39次

对于许多电脑用户来说,FreeBSD还是一个比较陌生的系统。本文将以FreeBSD 4.7 Release为例,一步一步地带您安装一份完整的FreeBSD操作系统。

  安装前的准备

  FreeBSD对于系统的硬件适应能力比较强(相比Lin ux可能稍差,特别是对于新的显示卡的支持;但对于服务器常用的硬件,包括SCSI设备的支持是相当完善的)。IA平台的多数处理器,下至386,上至Pentium-4及其兼容的CPU,都能够运行FreeBSD。为了有效地安装、运行FreeBSD,我个人推荐安装FreeBSD的系统至少要有2GB的剩余硬盘空间,以及至少64MB内存。这样配置的电脑在今天是很容易找到的。考虑到FreeBSD一般都被配置作为服务器使用,上面的配置要求显然是很容易做到的。

  对于服务器来说,双启动是不合适的(服务器往往要求持续、长时间工作,而切换操作系统无疑需要停止服务。此外,双启动的系统稳定性比较差,某个操作系统的崩溃很可能破坏另一个操作系统)。FreeBSD支持和其他操作系统并存、并在开机时通过菜单选择使用的操作系统,但我个人非常反对以这种方式使用FreeBSD。

  那么,让我来从头到尾地安装一台FreeBSD服务器,并说明FreeBSD的安装。为了安装FreeBSD,我准备了这样一台电脑:

  CPU: Pentium II-233, 内存64MB, 硬盘(IDE)6GB, PS/2键盘、鼠标,20x光驱、无软驱、RealTek8139网卡(TP-LINK)。

  上述配置在今天是很容易做到的。当然,就服务器而言,这个配置确实惨了点,不过FreeBSD在上面运行,并承担数据库、动态网页等服务是完全没有问题的。

  首先是准备FreeBSD的安装盘。FreeBSD有许多种安装方式,最简单易行的方式就是使用光盘安装;不过尽管如此,在没有软驱、光驱的计算机上也是可以通过BOOTP服务采用远程引导的方式来安装的。考虑到这种情况比较少见(笔者曾经在一台没有软驱、光驱的计算机上成功安装过FreeBSD,但方法是将硬盘挂接在另一台计算机上,而不是通常的BOOTP),在此不介绍。
  为了安装FreeBSD,我准备了一张空的CD-R。安装FreeBSD最少只需要2张1.44MB的空白软盘(其余文件使用FTP获得),而安装FreeBSD只需要第一张光盘就够了。除非你的计算机很慢,或无法接入Internet,否则一般情况只需要下载第一张光盘的镜像。由于网络中心的FTP上提供了FreeBSD 4.6全部四张光盘的镜像,以及4.6.2的前两张光盘,因此我直接下载并刻了后者的第一张光盘。

  打开计算机,进入BIOS Setup。在其中选择让计算机从光盘启动(这是关键步骤,虽然FreeBSD也可以从DOS环境中启动安装过程,但那可能会有一些问题)、禁用一切用不到的设备,包括串口、并口、软驱控制器(这么做主要是为了提高性能,因为外围设备可能会向主机发送中断请求,而用不到的设备发送请求除了浪费CPU的时间之外没有什么其他作用)。

  FreeBSD安装光盘上的系统使用的是GENERIC内核,这个内核可以适应绝大多数系统的情况。当然,正如他的名字“GENERIC(通用)”,这也带来的较低的性能,例如,这个内核不能够发挥双CPU的能力,等等。不过既然安装过程只会进行一次,我们也不必过分地在意它。

  安装光盘启动(对于软盘启动来说,是根据提示将两张软盘的内容全部加载到内存中)完成后,首先出现的是配置内核。

  配置内核通常不是必需的,因为FreeBSD能够自动识别硬件。然而,如果你的硬件配置比较特殊(例如,有两块网卡,使用特殊的IRQ,比较古老,等等),那么可能需要手工配置一下内核。对于绝大多数情况来说,只要删除那些用不到的设备,就能够正常完成FreeBSD的安装;如果你对于自己的硬件不熟悉,这一过程甚至可以跳过。

  我个人比较喜欢删除不用的设备,于是选择Visual方式,将不需要的设备统统删除。最后,按Q保存配置,进入FreeBSD的安装程序sysinstall(8)。

  FreeBSD基本系统的安装

  作为一个服务器管理员,经常性的服务器软件更新是必不可少的。FreeBSD提供了非常便捷的升级方式——cvsup,它可以从FreeBSD中央cvsup服务器,或某个cvsup镜像上获取FreeBSD的部分或全部源代码,而且,它只下载那些修改过的源代码,并且可以根据需要选择适合你的版本(使用-STABLE可以提供较好的稳定性以及操作系统的最新特性,多数管理员都会选择这个;使用-RELEASE能够获得成熟产品的品质,尽管话是这样说,但实际上选择这一分支的人很少;使用-CURRENT的用户主要是参与FreeBSD开发的人员,这个分支包含了所有即将进入-STABLE分支的新特性,但不要指望这个分支能够提供必要的稳定性保证,也不要指望它能够带来很好的性能,但所有的安全问题都是首先在这个分支内修正的。我将在后面详细介绍这些)。

  一旦最初的内核配置完成,它就会立即启动,并根据配置文件启动sysinstall(8)。我们将看到一个标准的文字模式配置界面,这有点类似于早期Visual Basic For MS-DOS编写的应用程序的界面。

  选择Standard进入标准的FreeBSD安装过程。首先是对磁盘进行分区。

  FreeBSD对于磁盘的管理和Windows有比较大的差别。一个磁盘上通常有一个Partition就够了,而一个Partition又可以分成若干个slice,并加以标记(label)。实际上,FreeBSD的slice基本上可以等同于Windows的磁盘分区,或卷的概念。
  为了保证与FreeBSD共存的系统能够启动,默认情况下FreeBSD会保留一部分磁盘空间(64 cyl)。对于单一操作系统的计算机来说,这是完全没有必要的。分区时按Shift+F可以选择不使用这个特性,不过这种情况下,除了彻底毁掉这套FreeBSD之外,恐怕就没有其他方法能够从这块硬盘上引导其他操作系统了。为了完全使用磁盘空间,我选择了不保留预留空间。



  随后是在这个Partition上创建slice。和Linux的情况类似,FreeBSD也使用单独的交换区。这种设计可以避免碎片,也防止了对文件系统的影响,性能较好。通常情况下交换分区是内存的2-2.5倍,这足以应付日常的突发事件。/var用于保存那些不在集群中共享的文件,/tmp用来保存临时文件,而/usr用来保存那些需要在集群中同步的文件。/就不用说了,它保存的是启动系统需要的文件。

  通常给/分配的空间是128MB,/tmp和/var各256MB,剩下的都分给/usr。不过也有例外,如果打算做一个大型的邮件系统,则/var要大一些(通常邮件系统依赖/var来保存邮件)。当然,各个slice可以mount到不同的地方(例如,你可以把曾经的/usr变成/var),不过最开始配置好可以减少很多麻烦。



  当然,偷懒的方法也是有的。在没有slice,或没有完全配完slice的情况下按A,系统会给出一组(或对剩下的label)默认的配置。如果你打算单纯提供Web+数据库这样的服务,完全可以直接接受这组配置。

  从FreeBSD 4.x开始,ufs支持了一个叫做SoftUpdates的技术。SoftUpdates的主要设计目标是提高文件系统性能。除了/所在的slice之外,所有的ufs slice都应打开SoftUpdates,这样对于提高系统整体性能很有好处。(/虽然也是ufs slice,但打开SoftUpdates会造成系统不稳定——FreeBSD文档如此警告,而笔者确实也吃过这个亏。不过,由于/的内容不需要经常变化,不打开SoftUpdates和打开了SoftUpdates几乎没有性能上的差别) 。SoftUpdates可以随时通过tunefs(8)来打开或关闭。在label(8)程序中,打开SoftUpdates的标志是文件系统显示为ufs+s。

  之后是选择安装介质和要装的Distribution。它提供了几组常见的情况。Minium安装最小系统,包括一些基本的Unix程序。Developer包括了一些开发工具;X-Developer和Kernel-Developer分别是X和内核开发人员用的。此外还有可选的ports,它可以帮助我们来安装应用程序。
  我通常使用的是Custom(定制安装),不安装源代码、ports(因为这些可以从cvsup同步得到最新的,安装一遍浪费时间),只安装XFree86(主要是为了运行cvsup,因为编译不需要X的cvsup需要很长时间,而且很多其他的东西,如php要用到的gd等等,需要XFree86的库文件的支持)、基本系统以及一部分库文件。当然,您也可以根据需要选择安装其他组件。

  完成之后系统就开始安装了。注意,一旦安装开始,所有前面做的分区、建立文件系统等操作就结结实实地写到了硬盘上,再没有反悔的机会了。如果您的硬盘上包含重要数据,那么请在这之前备份。

  根据计算机速度的不同,这个过程可能持续10分钟到数小时不等。在此过程中,除了光盘或硬盘出问题之外,基本上不会出现节外生枝的情况。按Alt+F2可以切换到用于调试sysinstall(8)的控制台,Alt+F4可以切换到一个命令行控制台,这些都是调试FreeBSD安装过程,或应付紧急情况的,通常用不到。

  全部系统文件安装完成之后,sysinstall(8)会给出一个祝贺画面。同时,它也告诉你如何在以后运行sysinstall(8)进行其他操作,如配置等等。实际上,在FreeBSD中sysinstall(8)基本上相当于Windows控制面板的作用。

  随后可以根据自己的情况配置网络、设置时区、显示字体、XWindow等等,并且创建新的用户(FreeBSD中的内建管理员叫做root,但由于它拥有一切特权,因此完全靠它来做日常工作有时会不太方便,笔者自己就曾不慎以root身分删除了modules,然后战战兢兢地重新编译内核)。



  FreeBSD安装盘上还提供了一些packages。这些packages是预先遍一号的应用程序。对于一台拥有很好的Internet连接的、速度足够快的机器来说,并不需要安装packages(KDE和X除外,编译它们各需要花上一天一夜的功夫)。这台机器速度还称不上“足够快”,所以我安装了cvsup,它在devel中。



  到目前为止,我们已经安装了FreeBSD的基本系统。由于FreeBSD基本系统中包括很多库文件,并且,这些库文件可能已经被发现存在问题,因此现在立刻安装应用程序或服务(如Apache等等)是不合适的。此后我们将讲解FreeBSD的在线升级(cvsup)、应用程序的安装,以及优化。
  更新FreeBSD

  完成了安装、配置,FreeBSD基本上就算装完了。不过,目前为止没有哪个通用操作系统能够保证“bug-free”,FreeBSD也一样。在重新启动之后,我们需要做一些调整;并且,通过重新配置内核,我们可以得到一个更小、更快的操作系统。

  第一步要做的是同步源代码。FreeBSD是一套开放源代码的操作系统,它的全部源代码都可以通过cvsup与中央cvsup服务器,或它的某个镜像同步。

  cvsup是一个可选的package,同样的,它也可以从ports里面安装(/usr/ports/devel/cvsup和/usr/ports/devel/cvsup-nogui)。考虑到许多应用程序都依赖X的库文件,在前面安装的部分我安装了它,并且直接安装了cvsup的package。不过,如果你有足够的耐心去一个一个地make需要的ports,那么先安装ports collection,然后make cvsup-nogui也是一个不错的主意,尽管这需要比较长的时间。

  创建一个用于cvsup(1)的supfile,命名为stable-supfile:

  (default host中选定的cvsup服务器——ftp.bjpu.edu.cn对访问的IP进行了限制,笔者只在北京工业大学校内使用过,因此如果您无法连接这个服务器,请尝试www.cn.freebsd.org,或cvsup.freebsd.org)


*default host=ftp.bjpu.edu.cn
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4
*default delete use-rel-suffix
src-all
ports-all tag=.


  随后执行

  cvsup -g -L 2 stable-supfile

  这里需要稍微解释一下FreeBSD的几种版本。

  FreeBSD包括3类分支:-RELEASE,-STABLE和-CURRENT。FreeBSD 3.x、4.x和5.0是目前受到维护的版本,如果你期待稳定运行,那么,可以选择的最新版本将是FreeBSD 4.6-STABLE(如果你是在4.6.2-RELEASE发行之后更新的,那么它实际上比4.6.2-RELEASE新,并且,它正式的CVS tag是RELENG_4,即FreeBSD 4-STABLE)。

  那么,三类分支有什么区别呢?

  FreeBSD的开发是非常活跃的。系统中可能会随时引入一些新的特性。最新的代码是在-CURRENT分支中引入的。-CURRENT的修改非常频繁,每天都可能有数百处修改。使用-CURRENT分支的FreeBSD需要耐心和勇气,因为你的系统随时可能崩溃(随着FreeBSD 5.0开发尾声的接近,这种现象已经越来越少),make world也可能空手而归(没有人保证-CURRENT分支能够正常编译),此外,这个分支的性能也不好(因为调试的原因,这个分支引入了大量的调试选项,这意味着运行速度不会太快)。当然,正像它的名字那样,-CURRENT分支的版本也是最新的5.0,而且,一切FreeBSD的错误和漏洞的修正都是首先在-CURRENT分支引入的。目前,-CURRENT分支硕果仅存的只有FreeBSD 5-CURRENT(指定cvs tag时写“.”),这个分支包括了FreeBSD 5.0开发的最新进展。

  FreeBSD 5中将引入大量的新特性,包括核心级线程(目前FreeBSD中的线程支持仅限于用户级线程,这在多处理器的环境下性能不够好,当然,目前使用fork()来支持的多进程线程模拟能够提供类似核心级线程的功能,但并不是所有的程序员都知道如何使用fork)、完整的Soft Updates(这一变化将提供更好的文件系统性能,同时提供更好的稳定性),等等。如果你有快速的Internet连接,一台或一些空余的机器(当然,不是生产用的服务器),并且希望为FreeBSD的开发作贡献,或者你关心操作系统的最新发展,那么,-CURRENT分支是最好的选择。
  此外,由于-CURRENT分支性能不好、稳定性不够等这些缺点,对于生产的服务器来说,通常运行的应该是FreeBSD-STABLE。如同它的名字那样,FreeBSD-STABLE的目的是“稳定地运行”。-CURRENT分支中的代码,在经过一段时间(通常是7到90天,但安全更新属于特例,通常会在几个小时)的验证之后,符合版本条件(有些新特性只能用于FreeBSD 5.0)的代码会被FreeBSD-STABLE吸收,这个操作称作MFC(Merge From -CURRENT,不是Microsoft Foundation Classes:P)。
  由于FreeBSD 5.0的第一个RELEASE至今仍然没有发布,因此,目前还没有5.0-STABLE。目前,FreeBSD-STABLE有两个版本,FreeBSD 3-STABLE和FreeBSD 4-STABLE,分别对应3.x和4.x的最新稳定版代码(对应的cvs tag分别是RELENG_3和RELENG_4)。由于版本的更新换代,其中3.x的-STABLE正在逐渐消亡。FreeBSD-STABLE每天平均会修改10个左右的文件。

  每隔一段时间,FreeBSD的发行工程组(Release Engineering Team)会对FreeBSD-STABLE的源代码树进行锁定。这段时间(目前的规定是30天,之前还有30天准备)内,所有的MFC操作都需要发行工程组的批准,因此,FreeBSD-STABLE在这个阶段基本不会引入任何新的特性。经过这段时间之后,发行工程组会在最后锁定ports树,并build一份所有的package,之后,这份锁定的-STABLE,可能经过若干RC(Release Candidate),被命名为RELEASE,并制作光盘发行。

  顾名思义,-RELEASE的设计目标是“发行”。一个版本一旦RELEASE,那么他的功能就不会再增加了。此后的所有维护的目标都只有一个,那就是绝对稳定。如果你和-RELEASE分支同步,那么绝不会出现make无法通过的情况,而且,通常这也可以保证你的系统“绝对”稳定,因为它不会引入任何新功能(例如,4.6就是4.6,如果你想要4.6.2的功能,必须明确地指定4.6.2)。

  目前,FreeBSD有很多RELEASE版本,它们的cvs tag如下。我个人建议使用最新的4.6.2-RELEASE。

  对于多数人来说,-RELEASE是一个比较极端的选择。无论何时出现版本升级,如果你想跟进,那都必须修改supfile,如果你选择不跟进,那么就可能造成ports工作异常。如果经常更新,-RELEASE可以保证操作系统本身的安全性,但同其他分支一样,如果ports出了问题,那么也得一块make,而既然这样,还不如使用-STABLE。

  如果你符合下面的条件,那么RELEASE分支可能比-STABLE分支更适合你


你使用的软件对于操作系统的变化非常敏感,比如,它只能FreeBSD 4.5,而无法在4.6上运行;同时,你不打算采用它的更新版本,或者它的作者拒绝更新
操作系统的更新对于你来

说没有任何意义,比如,你打算把FreeBSD当作一个相对固定的嵌入式操作系统来使用,例如,作为防火墙的一部分
更新会对你造成困扰,操作系统的绝大多数新特性对于你来说除了增加烦恼之外,不能带来任何其他东西。
-并且,符合以下的全部条件-

你每天察看FreeBSD,以及使用的全部软件的安全公告
你的Internet连接比较通畅


  目前我本人维护的所有主机,除了作为防火墙的那台之外,使用的都是FreeBSD-STABLE。

  一旦同步完源代码,就应该对整个系统进行更新。如果你没有每天察看安全公告的习惯,那就应该关心一下cvsup到底更新了哪些代码。nectar是目前FreeBSD的Security Officer。如果你发现他一下子更新了许多代码,那么对你来说立即make world和kernel很可能是必需的。

  为了更新整个系统,在/usr/src中执行

  make world

  以及

  make kernel KERNCONF=内核配置文件名

  当然,也可以连起来执行:

  make world kernel KERNCONF=内核配置文件名

  如果你的计算机运行速度较慢,那么,对于基本系统的更新(相当于不包括库的一次world),可以用

  make most
  替代make world,但make world是一个不错的主意,因为它能够保证对C运行环境的改变应用到所有的程序中,如果修正的不是动态连接的C函数库,那么make world可以保证代码的一致性。

  make kernel是一个需要重新启动的操作。如果你的make world修改了系统的关键服务,那么最好也重新启动一下。我很少有耐心看完make world和kernel的执行,根据系统的运行速度不同,这需要一个小时到一天的时间,而且,不是所有的SSH客户端都能够长时间正确的执行,例如,SecureCRT的多个版本都有内存泄漏问题。

  为了解决这个问题,我用下面的命令来完成更新:

  make world kernel KERNCONF=内核配置文件名 clean > /var/log/world,out && reboot &

  这个命令能够记录更新的全过程,如果在什么地方编译失败,你可以很快地找到原因。对于多数人来说,由于后面的&&,只需要察看uptime就能知道便以是否成功。

  需要说明的是,FreeBSD的make world并不总能成功。有时需要修改一些环境变量才能成功完成make。为了保证make成功,在/usr/src中执行任何make操作之前,建议你看一眼UPDATING中是否有特殊的要求(这种要求并不是在FreeBSD Release的时候才会出现,很多时候他会在某个CURRENT中引入,然后随着MFC进入-STABLE分支),并且,在进行大的版本升级之前(跨RELEASE,甚至主版本号),首先执行下面的命令

  mergemaster -p

  并在make world之后执行

  mergemaster -i

  运行mergemaster脚本需要一定的Unix配置知识,不过,由于配置文件中包含很多帮助信息,因此,只要master.passwd、group这样的文件不出大问题(如果cvsup更新了master.passwd,那么就需要留神,因为master.passwd标准配置是root口令为空,这时需要用m来合并,而不是使用i安装),mergemaster并不会引入什么新的问题。

  前一条命令是更新make的配置(/etc/defaults/make.conf和/etc/make.conf)。对于多数人来说,除非进行跨版本升级,否则一般情况下是不需要这样做的。后一条命令是同步全部配置,并安装以前不存在的配置文件,而不进行提示。

  笔者曾经遇到过FreeBSD因为系统日期不正确而无法make的情况,因此,再次特别提醒大家,如果你的系统日期不正确,最好是用date命令修改一下,或者干脆用ntpdate或ntpd来同步时间。关于如何使用ntp,将在以后说明。

  以后我们将讲解FreeBSD内核的配置,以及如何配置make.conf来优化FreeBSD的编译结果。

“简单的东西不容易出问题。”

  至理名言!事实上,削减操作系统中那些对你没用的功能是一件非常重要的事情。这不仅仅意味着一个更小的操作系统,占用更少的磁盘空间(现在的硬盘少说也有几十GB,几兆的空间根本就是九牛一毛),而且意味着你被攻击的可能性也更低——简而言之,你不需要担心操作系统中没有安装的模块存在问题会对你造成影响。

  这篇文章中,我们将一起对FreeBSD-i386的内核进行优化配置。这篇文章是针对FreeBSD4.7-STABLE写的,并且,FreeBSD 4.x的配置不会和这篇文章有太大出入。如果你要优化FreeBSD 5或FreeBSD 2/3的内核的话,则需要仔 细参考它们的LINT文件了(后面将会提到)。

  [注意:FreeBSD 5.0预定将于2002年11月20日发布。FreeBSD的开发组非常重视发行版本的质量,并认为这比发行版本的计划还重要,但由于同样的原因,我们往往会发现FreeBSD实际发行的版本比预定计划晚一些,通常在半个月之内。FreeBSD 5.0作为FreeBSD近期最为重要的发行版本,很可能也会延后发表,但笔者个人认为无论如何我们在今年年底之前肯定是可以看到最终的发行版本的。FreeBSD 5.0对系统进行了大量的修改,这一系列的文章将在FreeBSD 5.0发布当天发表针对5.0的修订版本,而现有版本将保留,但进入维护阶段,不再引入新的内容。]

  FreeBSD的源代码可以直接从中央cvsup服务器同步,也可以作为系统的一部分在安装的时候一兵装上。前面已经说过如何同步源代码,在此不再赘述。FreeBSD的源代码(通常在/usr/src)包含建造基本系统的全部代码,而在/usr/src/sys中则有若干个目录,对应不同的计算机体系结构(4.x只支持i386和alpha)。i386是一个泛指的名字,包含了与Intel 80386兼容的所有机器,并不是特指80386。

  简单介绍一下FreeBSD的内核文件。在4.x系统中,/kernel这个文件是默认的内核,通常正常启动使用的就是它。 /kernel.GENERIC这个文件是兼容性较强的内核,如果/kernel无法引导系统, 就得靠这个文件来引导。/kernel.old是本次make kernel之前的内核,通常如果你的kernel坏掉, 也可以考虑使用/kernel.old来引导系统。

  /modules/是内核的模块,而/modules.old/是对应/kernel.old的模块。这些文件在每次替换kernel的时候都会同时替换。

  在5.0中,内核以及内核的模块都被保存在/boot/kernel中。

  在/usr/src/sys/i386/conf中有两个配置文件,GENERIC和LINT。其中GENERIC是make kernel的默认配置文件,直接make kernel生成的是GENERIC内核,但安装时命名为/kernel。系统在安装时会安装一个kernel.GENERIC,以后,这个文件不会跟随系统的make kernel更新,因此,如果你认为这个文件有必要更新的话,需要手工make kernel,并把/kernel改名为kernel.GENERIC。当然,通常并不需要这样做。

  LINT是包括几乎所有内核编译配置详细信息的文件。这个配置并不是用来真正建立kernel的,他的主要用途是向用户展示可用的内核编译配置。在修改内核编译配置时,最好先参考这个文件。

  为了配置自己的内核,应将GENERIC复制为一个另外的文件。习惯上这个文件和主机名相同。例如,我把自己的这台Web机器命名为apache.intranet.frontfree.net,就把配置文件命名为APACHE:

cd /usr/src/sys/i386/conf
cp GENERIC APACHE

  随后,用ee APACHE编辑它。我们拿一个实际的GENERIC文件来说明。
  为了节省篇幅,这个文件头上的注释被删掉了一部分。

machine i386         # 体系模型为i386
cpu I386_CPU         # 支持80386
cpu I486_CPU         # 支持80486
cpu I586_CPU         # 支持Pentium
cpu I686_CPU         # 支持Pentium Pro以及更高
ident GENERIC        # 内核文件的名字
maxusers 0          # 自动检测同时允许的最大用户数
#makeoptions DEBUG=-g # 包含调试符号。通常只有current版本打开
options MATH_EMULATE #支持协处理器模拟
options INET     #支持互联网
options INET6     #IPv6通讯协议
options FFS      #伯克利快速文件系统
options FFS_ROOT   #FFS作为根设备[必须保留]
options SOFTUPDATES  #打开FFS soft updates支持
options UFS_DIRHASH  #提高大型目录的支持
options MFS      #内存文件系统
options MD_ROOT    #MD作为根设备
options NFS      #Network Filesystem
options NFS_ROOT   #NFS作为根设备(需要NFS)
options MSDOSFS    #MSDOS文件系统
options CD9660    #ISO 9660文件系统(光盘)
options CD9660_ROOT  #CD-ROM作为根设备(需要CD9660)
options PROCFS    #进程文件系统
options COMPAT_43   #兼容4.3BSD[必须保留]
options SCSI_DELAY=15000 #检测SCSI设备前的延时(ms)
options UCONSOLE   #用户可以夺取控制台
options USERCONFIG  #boot -c编辑器 editor
options VISUAL_USERCONFIG #菜单式boot -c编辑器
options KTRACE    #ktrace(1)支持
options SYSVSHM    #SYSV-风格的共享内存
options SYSVMSG    #SYSV-风格的消息队列
options SYSVSEM    #SYSV-风格的信号量(semaphores)
options P1003_1B   #Posix P1003_1B实时扩展
options _KPOSIX_PRIORITY_SCHEDULING
options ICMP_BANDLIM #对恶意ICMP请求进行限制
options KBD_INSTALL_CDEV # 在/dev安装一个CDEV设备

# 下面两项在制作对称多处理器(SMP)内核时需要
#options SMP     #对称多处理器内核
#options APIC_IO   #对称(APIC) I/O

device isa
device eisa
device pci

# 软驱
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 at fdc0 drive 1
#
# 如果使用东芝Libretto以及他的Y-E Y-E Data PCMCIA软驱
# 不要使用上面的fdc0,而应使用
#device fdc0

# ATA以及ATAPI设备
device ata0 at isa? port IO_WD1 irq 14
device ata1 at isa? port IO_WD2 irq 15
device ata
device atadisk # ATA 磁盘驱动器(IDE硬盘)
device atapicd # ATAPI 光驱
device atapifd # ATAPI 软驱
device atapist # ATAPI 磁带机
options ATA_STATIC_ID #静态设备编号

# SCSI控制器
device ahb # EISA AHA1742 family
device ahc # AHA2940 板载AIC7xxx设备
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (较新的芯片组)
options SYM_SETUP_LP_PROBE_MAP=0x40
# 使用ncr可以在配置了sym和ncr的情况下挂接旧的NCR设备

device adv0 at isa?
device adw
device bt0 at isa?
device aha0 at isa?
device aic0 at isa?

device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50

# SCSI 外设
device scbus # SCSI 总线(如果使用SCSI设备,必须有)
device da # Direct Access (硬盘)
device sa # Sequential Access (磁带,等等)
device cd # CD
device pass # Passthrough device (直接 SCSI 访问)

# 通过SCSI子系统接口的RAID控制器
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device dpt # DPT Smartcache - See LINT for options!
device iir # Intel Integrated RAID
device mly # Mylex AcceleRAID/eXtremeRAID
device ciss # Compaq SmartRAID 5* series

# RAID控制器
device aac # Adaptec FSA RAID, Dell PERC2/PERC3
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device amr # AMI MegaRAID
device mlx # Mylex DAC960 family
device twe # 3ware Escalade

# atkbdc0 控制键盘和PS/2鼠标
device atkbdc0 at isa? port IO_KBD
device atkbd0 at atkbdc? irq 1 flags 0x1
device psm0 at atkbdc? irq 12

device vga0 at isa?

# 启动画面和屏幕保护程序
pseudo-device splash

# syscons 是默认的控制台驱动,类似SCO控制台
device sc0 at isa? flags 0x100

# 对于pcvt vt220控制台,启用这个和PCVT_FREEBSD
#device vt0 at isa?
#options XSERVER # 在vt控制台支持X服务器
#options FAT_CURSOR # 使用大光标
# 如果你是用ThinkPad,将下面的一行和其他PCVT相关设备的注释去掉
#options PCVT_SCANSET=2 # IBM使用非标准键盘

# 浮点运算支持 - 请勿禁用
device npx0 at nexus? port IO_NPX irq 13

# 电源管理支持
device apm0 at nexus? disable flags 0x20 # Advanced Power Management

# PCCARD (PCMCIA) 支持
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000
device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable

# 串口(COM)
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? disable port IO_COM3 irq 5
device s

io3 at isa? disable port IO_COM4 irq 9

# 并口
device ppc0 at isa? irq 7
device ppbus # 并口总线 (所有并口设备都需要)
device lpt  # 打印机
device plip # 并口TCP/IP
device ppi  # 并口接口设备
#device vpo # 需要scbus和da

# PCI 以太网适配器
device de # DEC/Intel DC21x4x (``Tulip )
device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman )
device txp # 3Com 3cR990 (``Typhoon )
device vx # 3Com 3c590, 3c595 (``Vortex )

# 使用公共的MII总线控制器代码的PCI以太网适配器
# 注意:一定要保留 device miibus 以确保可用
device miibus # MII总线支持
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device pcn # AMD Am79C97x PCI 10/100 NICs
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire )
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device ste # Sundance ST201 (D-Link DFE-550TX)
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 ``EPIC )
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang , ``Cyclone )
device bge # Broadcom BCM570x (``Tigon III )

# ISA以太网适配器
# device ed 需要 device miibus
device ed0 at isa? port 0x280 irq 10 iomem 0xd8000
device ex
device ep
device fe0 at isa? port 0x300
# Xircom Ethernet
device xe
# PRISM I IEEE 802.11b wireless NIC.
device awi
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
device wi
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
device an
# The probe order of these is presently determined by i386/isa/isa_compat.c.
device ie0 at isa? port 0x300 irq 10 iomem 0xd0000
#device le0 at isa? port 0x300 irq 5 iomem 0xd0000
device lnc0 at isa? port 0x280 irq 10 drq 0
device cs0 at isa? port 0x300
device sn0 at isa? port 0x300 irq 10

# 伪设备 - 数字表示分配多少个
pseudo-device loop # 环回网络
pseudo-device ether # 以太网支持
pseudo-device sl 1 # 核心级SLIP
pseudo-device ppp 1 # 核心级PPP
pseudo-device tun  # 数据包隧道
pseudo-device pty  # 伪-tty(telnet等等)
pseudo-device md  # 内存虚拟盘
pseudo-device gif  # IPv6和IPv4隧道
pseudo-device faith 1 # IPv6-to-IPv4转发(翻译)

# `bpf 伪设备将启用伯克利数据包过滤器。
# 小心由此带来的管理问题
pseudo-device bpf #Berkeley packet filter

# USB支持
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device usb # USB Bus (required)
device ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device uscanner # Scanners
device urio # Diamond Rio MP3 Player

# USB 以太网,需要mii
device aue # ADMtek USB ethernet
device cue # CATC USB ethernet
device kue # Kawasaki LSI USB ethernet
  现在要做的是去掉我们不需要的任何设备。(红色、中划线表示删除,红色无修饰表示修改,蓝色表示增加)。这份配置是生产服务器上的配置文件。

#
# APACHE -- FreeBSD/i386内核配置文件
#
machine i386         # 体系模型为i386
cpu I386_CPU         # 支持80386
cpu I486_CPU         # 支持80486
cpu I586_CPU         # 支持Pentium
cpu I686_CPU         # 支持Pentium Pro以及更高
ident APACHE         # 内核文件的名字
maxusers 0          # 自动检测同时允许的最大用户数

#makeoptions DEBUG=-g # 包含调试符号。通常只有current版本打开
options MATH_EMULATE #支持协处理器模拟
#options GPL_MATH_EMULATE #GPL模拟更好,但仍然没必要,P III有内建协处理器
options INET     #支持互联网
options INET6     #IPv6通讯协议
options FFS      #伯克利快速文件系统
options FFS_ROOT   #FFS作为根设备[必须保留]
options SOFTUPDATES  #打开FFS soft updates支持
options UFS_DIRHASH  #提高大型目录的支持
options MFS      #内存文件系统
options MD_ROOT    #MD作为根设备
options NFS      #Network Filesystem
options NFS_ROOT   #NFS作为根设备(需要NFS)
options MSDOSFS    #MSDOS文件系统
options CD9660    #ISO 9660文件系统(光盘)
options CD9660_ROOT  #CD-ROM作为根设备(需要CD9660)
options PROCFS    #进程文件系统
options COMPAT_43   #兼容4.3BSD[必须保留]
options SCSI_DELAY=5000 #检测SCSI设备前的延时(ms)
options UCONSOLE   #用户可以夺取控制台[没有X,不用]
options USERCONFIG  #boot -c编辑器 editor
options VISUAL_USERCONFIG #菜单式boot -c编辑器
options KTRACE    #ktrace(1)支持
options SYSVSHM    #SYSV-风格的共享内存
options SYSVMSG    #SYSV-风格的消息队列
options SYSVSEM    #SYSV-风格的信号量(semaphores)
options P1003_1B   #Posix P1003_1B实时扩展
options _KPOSIX_PRIORITY_SCHEDULING
options ICMP_BANDLIM #对恶意ICMP请求进行限制[例如flood ping]
options KBD_INSTALL_CDEV # 在/dev安装一个CDEV设备

options CPU_ENABLE_SSE #启用SSE支持(Pentium III)
#options CPU_ATHLON_SSE_HACK #如果你的BIOS不能正确识别Athlon SSE
#options NO_F00F_HACK #如果你使用Pentium且没有F00F bug

# 对ISA总线,AUTO_EOI将启用8259A的自动EOI功能
# 这意味着每次中断调用节省0.7-1.25微秒,但不应用于笔记本
options AUTO_EOI_1
#options AUTO_EOI_2 # 请不要和AUTO_EOI_1同时打开,否则会崩溃。
#options MAXMEM="(1024*1024)" #除非你的BIOS设置不正确造成
               #无法检测内存大小,单位是KB

#在xntpd(8)的监督下启用内核相同步逻辑
#options PPS_SYNC

#IPFirewall。我们需要的功能IPFilter都提供,并且更高效
#除非你需要IPFirewall的某些专有功能,否则这部分不必编译
#options IPFIREWALL  #防火墙
#options IPFIREWALL_VERBOSE #允许防火墙日志
#options IPFIREWALL_FORWARD #允许透明代理
#options IPFIREWALL_VERBOSE_LIMIT=100 #限制日至
#options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包

#options IPFW2 # IPFW2,这一特性并非4.x默认。

options IPFILTER    #ipfilter支持
options IPFILTER_LOG  #ipfilter日志
options IPFILTER_DEFAULT_BLOCK #默认阻断所有IP包

# 静态数据包过滤许可规则(直接放入内核)
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP

#options DEVICE_POLLING #改善网络响应时间,但realtek不支持

options IPSTEALTH   #支持秘密IP转发
options RANDOM_IP_ID  #随机IP ID,阻止信息泄漏
#options TCP_DROP_SYNFIN #抛弃SYN+FIN包,阻止检测服务器
            #的TCP协议栈、操作系统,但这对Web
            #服务器是不推荐的,因为不符合RFC1644

#options QUOTA     #启用配额支持,但此处没用

makeoptions CONF_CFLAGS=-fno-builtin #禁用memcpy等GCC默认的影响性能的设置

# 根据内存大小配置应用程序可用的最大内存
# 这台机器有1GB内存
# FreeBSD默认是允许使用128MB
options MAXDSIZ="(1024*1024*1024)"
options MAXSSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"

#options PMAP_SHPGPERPROC=201 #每一进程的可用PV项数。

#options NO_SWAPPING     #禁用交换区。不推荐

options PANIC_REBOOT_WAIT_TIME=0 #内核异常(kernel panic)立即重启

#核心内存大小限制。我倾向使用默认值
#options VM_KMEM_SIZE="(12*1024*1024)"
#options VM_KMEM_SIZE_MAX="(256*1024*1024)"
#options VM_KMEM_SIZE_SCALE="4"

#将这份配置文件保存到kernel文件中,以便以后读取
#使用这样的命令:
# strings -n 3 /kernel | sed -n s/^___//p > APACHE
#这里我们不需要这样做。
#options INCLUDE_CONFIG_FILE # 包含配置文件到内核中

#options USER_LDT #某些ports需要这么做,未来的FreeBSD可能也需要

# 下面两项在制作对称多处理器(SMP)内核时需要
#options SMP     #对称多处理器内核
#options APIC_IO   #对称(APIC) I/O

device isa
device eisa
device pci

# 软驱
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 at fdc0 drive 1
#
# 如果使用东芝Libretto以及他的Y-E Y-E Data PCMCIA软驱
# 不要使用上面的fdc0,而应使用
#device fdc0

# ATA以及ATAPI设备
# 下面两行被删去,因为新系统不再需要它们。
device ata0 at isa? port IO_WD1 irq 14
device ata1 at isa? port IO_WD2 irq 15
device ata
device atadisk # ATA 磁盘驱动器(IDE硬盘)
device atapicd # ATAPI 光驱
device atapifd # ATAPI 软驱
device atapist # ATAPI 磁带机
options ATA_STATIC_ID #静态设备编号[新系统不再需要]

# SCSI控制器
device ahb # EISA AHA1742 family
device ahc # AHA2940 板载AIC7xxx设备
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (较新的芯片组)
options SYM_SETUP_LP_PROBE_MAP=0x40
# 使用ncr可以在配置了sym和ncr的情况下挂接旧的NCR设备

device adv0 at isa?
device adw
device bt0 at isa?
device aha0 at isa?
device aic0 at isa?

device ncv # NCR 53C500
d

evice nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50

# SCSI 外设
device scbus # SCSI 总线(如果使用SCSI设备,必须有)
device da # Direct Access (硬盘)
device sa # Sequential Access (磁带,等等)
device cd # CD
device pass # Passthrough device (直接 SCSI 访问)

# 通过SCSI子系统接口的RAID控制器
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device dpt # DPT Smartcache - See LINT for options!
device iir # Intel Integrated RAID
device mly # Mylex AcceleRAID/eXtremeRAID
device ciss # Compaq SmartRAID 5* series

# RAID控制器
device aac # Adaptec FSA RAID, Dell PERC2/PERC3
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device amr # AMI MegaRAID
device mlx # Mylex DAC960 family
device twe # 3ware Escalade

# atkbdc0 控制键盘和PS/2鼠标[这台机器没配鼠标,也不用图形界面]
device atkbdc0 at isa? port IO_KBD
device atkbd0 at atkbdc? irq 1 flags 0x1
device psm0 at atkbdc? irq 12 #鼠标器

device vga0 at isa?
options VGA_NO_FONT_LOADING # 不需要保存/加载字体[节省内存]
options VGA_NO_MODE_CHANGE # 不需要修改显示模式[节省内存]

# 启动画面和屏幕保护程序[我的服务器平时不接显示器]
pseudo-device splash

# syscons 是默认的控制台驱动,类似SCO控制台
device sc0 at isa? flags 0x100
options MAXCONS=4 # 不需要更多的控制台
options SC_DISABLE_REBOOT # 禁止Ctrl+Alt+Del重启,必须以root登录。

options SC_NO_CUTPASTE   # 禁用剪贴板[节省内存]
options SC_NO_FONT_LOADING # 禁用字体加载[节省内存]
options SC_NO_SYSMOUSE   # 禁用鼠标[节省内存]

# 对于pcvt vt220控制台,启用这个和PCVT_FREEBSD
#device vt0 at isa?
#options XSERVER # 在vt控制台支持X服务器
#options FAT_CURSOR # 使用大光标
# 如果你是用ThinkPad,将下面的一行和其他PCVT相关设备的注释去掉
#options PCVT_SCANSET=2 # IBM使用非标准键盘

# 浮点运算支持 - 请勿禁用
device npx0 at nexus? port IO_NPX irq 13

# 电源管理支持[这台机器期待长期运行]
device apm0 at nexus? disable flags 0x20 # Advanced Power Management

# PCCARD (PCMCIA) 支持
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000
device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable

# 串口(COM)
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? disable port IO_COM3 irq 5
device sio3 at isa? disable port IO_COM4 irq 9

# 并口
device ppc0 at isa? irq 7
device ppbus # 并口总线 (所有并口设备都需要)
device lpt  # 打印机
device plip # 并口TCP/IP
device ppi  # 并口接口设备
#device vpo # 需要scbus和da

# PCI 以太网适配器
device de # DEC/Intel DC21x4x (``Tulip )
device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman )
device txp # 3Com 3cR990 (``Typhoon )
device vx # 3Com 3c590, 3c595 (``Vortex )

# 使用公共的MII总线控制器代码的PCI以太网适配器
# 注意:一定要保留 device miibus 以确保可用
device miibus # MII总线支持
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device pcn # AMD Am79C97x PCI 10/100 NICs
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire )
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device ste # Sundance ST201 (D-Link DFE-550TX)
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 ``EPIC )
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang , ``Cyclone )
device bge # Broadcom BCM570x (``Tigon III )

# ISA以太网适配器
# device ed 需要 device miibus
device ed0 at isa? port 0x280 irq 10 iomem 0xd8000
device ex
device ep
device fe0 at isa? port 0x300
# Xircom Ethernet
device xe
# PRISM I IEEE 802.11b wireless NIC.
device awi
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
device wi
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
device an
# The probe order of these is presently determined by i386/isa/isa_compat.c.
device ie0 at isa? port 0x300 irq 10 iomem 0xd0000
#device le0 at isa? port 0x300 irq 5 iomem 0xd0000
device lnc0 at isa? port 0x280 irq 10 drq 0
device cs0 at isa? port 0x300
device sn0 at isa? port 0x300 irq 10

# 伪设备 - 数字表示分配多少个
pseudo-device loop # 环回网络
pseudo-device ether # 以太网支持
pseudo-device sl 1 # 核心级SLIP
pseudo-device ppp 1 # 核心级PPP
pseudo-device tun  # 数据包隧道
pseudo-device pty  # 伪-tty(telnet等等)
pseudo-device md  # 内存虚拟盘
pseudo-device gif  # IPv6和IPv4隧道
pseudo-device faith 1 # IPv6-to-IPv4转发(翻译)

# `bpf 伪设备将启用伯克利数据包过滤器。
# 小心由此带来的管理问题
pseudo-device bpf #Berkeley packet filter

# USB支持
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device usb # USB Bus (required)
device ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device uscanner # Scanners
device urio # Diamond Rio MP3 Player

# USB 以太网,需要mii
device aue # ADMtek USB ethernet
device cue # CATC USB ethernet
device kue # Kawasaki LSI USB ethernet

  LINT中对于配置有更详细的说明。由于时间关系,这里不给出LINT的完整翻译。对于常用的LINT配置(蓝色,但被注释的部分),我做了一点说明。

  需要说明的是,我个人的经验,在较旧的AMD处理器上运行FreeBSD服务器不是一个明智的选择。我个人的经验是,在K6上运行FreeBSD,只要CPU占用超过98%,系统就会死机。这可能是由于FreeBSD的设计过分地挖掘了系统的性能(按FreeBSD.org自己的说法,榨干服务器的每一滴油:),旧的AMD处理器可能会吃不消;但我在双AMD Athlon MP 1900+上运行FreeBSD没有出现类似的情况。与AMD不同,在Intel的全系列处理器上(包括存在F00F bug的Pentium处理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我从未遇到过任何问题。

  这台服务器的网卡使用的是Realtek-8139芯片,这样的网卡在市场上非常常见。为了确认你的网卡型号,请运行ifconfig(8)。

  编辑完配置文件,是用下面的命令编译、安装内核:

cd /usr/src
make kernel KERNCONF=APACHE

  LINT中对于配置有更详细的说明。由于时间关系,这里不给出LINT的完整翻译。对于常用的LINT配置(蓝色,但被注释的部分),我做了一点说明。

  需要说明的是,我个人的经验,在较旧的AMD处理器上运行FreeBSD服务器不是一个明智的选择。我个人的经验是,在K6上运行FreeBSD,只要CPU占用超过98%,系统就会死机。这可能是由于FreeBSD的设计过分地挖掘了系统的性能(按FreeBSD.org自己的说法,榨干服务器的每一滴油:),旧的AMD处理器可能会吃不消;但我在双AMD Athlon MP 1900+上运行FreeBSD没有出现类似的情况。与AMD不同,在Intel的全系列处理器上(包括存在F00F bug的Pentium处理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我从未遇到过任何问题。

  这台服务器的网卡使用的是Realtek-8139芯片,这样的网卡在市场上非常常见。为了确认你的网卡型号,请运行ifconfig(8)。

  编辑完配置文件,是用下面的命令编译、安装内核:

  cd /usr/src
  make kernel KERNCONF=APACHE

  注意,实际应用中,请将APACHE换成你自己的配置文件名。

  重新编译内核需要重新启动系统才能够生效。

  上面的配置文件是我根据LINT以及经验编写的配置文件,其编写目标在于尽可能避免不必要的代码,尽可能高效,尽可能安全,并且,在崩溃(注意,FreeBSD事实上很少会崩溃,我管理的FreeBSD机器的崩溃原因目前为止只有硬件故障或停电)之后尽可能快地恢复。(FreeBSD4.x目前还不支持后台fsck,因此启用softupdates只是改善运行性能和文件系统可靠性,而不保证重新启动速度的提高)

  由于在内核中屏蔽掉了大量的设备,因此,休想以这个内核启动去操作软盘或光盘,或者使用并口,以及SCSI设备(虽然这可能不是你想要的)。此外,这个内核在没有root允许的情况下,是不能在控制台上按Ctrl+Alt+Del启动的。如果你希望其他工作人员在停电(总之,或类似肯定引起系统关机的情况)之前能够帮助你关闭系统,你可能需要其他方法,比如告诉他root口令(假如那个人可以信任),sudo(比较好的方法,只允许他做reboot),或者去掉禁用Ctrl+Alt+Del的设置。此外,经过这样处理的内核只支持Realtek-8139芯片的网卡,因此,如果你的情况和我不同,应该做适当的修改。 如果您对这个配置有什么建议,欢迎给我写信。

  如此编译的内核大约是GENERIC内核大小的一半,当然,由于节省了一些内存,它的性能肯定会更好。

FreeBSD操作系统安装手册之配置篇(多图)

发布日期:2005-01-19    作者:小胖   来源:IT168.com

  文/小胖

  在系统软件复制到硬盘上之后,安装只能说是完成了一半,还需要继续进一步配置系统环境。如果使用Novice 或Express 安装方式,配置过程将连续进行,执行主菜单Configure 选项下的每个配置功能。如果是Custom 方式,就需要安装者自己选择Configure 菜单,然后分别选择子菜单,如Console、Network、TimeZone等进行配置。

  如果系统安装成功,我们就可以对一些基本的项目作安装后初步的配置。任何一项配置在重新开机前都可以重新配置,系统会使用最后一次的配置值。重新开机后如果再做配置,可以执行/stand/sysinstall 命令然后选择 Configure选项。

  一、配置网络

  需要配置的第一个重要部分是网络,在FreeBSD中网络功能的地位非常重要。通过Sysinstall下的Network配置,可以配置网络的基本设置内容,如IP、域名、缺省网关等,也可以设置基本的网络应用,如FreeBSD是否用作NFS Client、NFS Server、匿名ftp服务器,以及是否启动路由交换软件routed或gated等等。使用Sysinstall就能设置一个正常运行的网络客户计算机,并能对FreeBSD系统提供的几种基本网络服务进行设置,非常简便和直观。

  1、设置网络界面
  如果安装方式是NFS或ftp等网络安装方式,这一步应该在选择安装方式之后就需要进行设置,否则无法完成复制系统文件的过程。

FreeBSD操作系统安装手册之配置篇(多图)图1


  设置网络界面时首先要选择进行设置的网络界面,FreeBSD将列出内核探测出所有的网络界面,包括网卡、串口和并口等网络界面。一般这里只对网卡对应的网络界面进行设置,对应于并口、串口的网络界面常常需要较复杂的设置过程,需要在启动系统之后在额外设置。本例中系统有一个novell的网卡,网络界面名字为ed0。

FreeBSD操作系统安装手册之配置篇(多图)图2


  对选定的网络界面ed 0,可以配置主机名、域名网关、名字服务器、IP地址和子网掩码等基本的网络设置。配置好这个界面之后,不需要重新启动系统就可以立即使其发挥作用,从而使得在安装过程中就可以连接到网络上。

  使用Tab 键可以在各个栏目之间进行切换,请输入适当的信息:
  Host(机器名称):完整的机器名称,例如本例中的 ghq.example.com 。
  Domain(域名): 您机器所在的域名称,如本例的 example.com
  IPv4 Gateway(IPv4网关): 输入将数据包传送到远端网络的机器IP地址。只有当机器是网络上的一个接点时才要输入。如果这台机器要作为您局域网的网关, 请将此处设为空白。IPv4网关,也被称作默认网关或默认路由器。
  域名服务器: 本地网络中的域名服务器的IP地址。本例中假设机器所在的网络中没有域名服务器,所以填入的是ISP提供的域名服务器地址 (213.168.24.5。)
  IPv4 地址: 本机所使用的IP地址。本例为 192.168.0.1。
  子网掩码:本范例中的IP地址属于一个C类地址 (192.168.0.0 - 192.168.255.255)。默认的子网掩码为 (255.255.255.0)。
  ifconfig 额外参数设定:任何ifconfig命令跟网卡接口有关的参数。 本范例中没有。
使用 Tab 键选择 [ OK ]然后按 Enter键。然后在该对话框中选择Yes,使ed0这个网卡以前面设置的内容正常运行。

2、基本网络服务

配置好网络界面之后,还可以配置这台FreeBSD提供的基本网络服务功能,如Ftp服务、NFS服务、是否支持NIS、是否运行路由交换软件等。需要根据计算机实际要求的功能,设置相应的选项。

象ftp、telnet这些服务可以在安装完成后修改/etc/inetd.conf 配置文件来启用它们。
FreeBSD操作系统安装手册之配置篇(多图)(2)图3
如果选择允许匿名 FTP 存取,那么网络中任何人都可以使用FTP来访问您的机器。在启用匿名访问之前应该考虑网络的安全问题。
FreeBSD操作系统安装手册之配置篇(多图)(2)图4
如果使用者对这些选项不是很清楚,可以忽略这个步骤,因为这些设置选项可以在任意时候重新设置,没有必要一定在初始安装的时候将全部设置都设置的无可挑剔。FreeBSD的可伸缩性使得可以在任意时候改动系统设置,不需要重新启动系统就能使得改动生效。

二、配置系统终端

安装程序也将帮助安装者正确设置控制台的一些设置选项,控制台上的主要内容是键盘、显示和鼠标等设备。

1、键盘和显示
可以配置控制台上使用的字体,键盘的映射方式,键盘的重复率,字符模式的屏幕保护和屏幕映射等。
FreeBSD操作系统安装手册之配置篇(多图)(3)图5
最常用的选项就是屏幕保护程序了,使用方向键将光标移 动到 Saver 然后按Enter。系统也提供了几种不同字符模式屏幕保护程序,如黑屏、BSD吉祥物等以供选择,还可以定制不同的屏幕组织方式。

2、控制台鼠标设置
FreeBSD也提供在控制台中使用鼠标的能力,能用鼠标器在控制台上进行复制/粘贴工作,并提供了一个伪鼠标接口sysmouse,其他需要使用鼠标的程序,如X,就能配置为使用这个逻辑设备而不必关心真实的鼠标类型,使得设置X Window更为简易。这个配置程序对鼠标进行设置简单且方便。
FreeBSD操作系统安装手册之配置篇(多图)(3)图6
鼠标类型Type可以选择鼠标的真实类型,或者简单使用Auto让FreeBSD自动检测,然后选择鼠标端口Port,这个端口设置必须正确,对串口鼠标必须指定具体的串口,其他种类鼠标使用相应的鼠标端口等。然后就使用Enable来激活moused守护进程,如果鼠标指针移 动正常,说明设置正确。那么以后系统都在启动时就自动启动moused守护进程,在控制台的文本状态下进行鼠标操作。

三、其它设置

1、配置时区
配置您机器的时区可以让系统自动校正任何区域时间的变更并且在执行一些跟时区相关的程序时不会出错。参考您所在的地理位置来配置,选择适当的区域,选择您所在的国家,选择您所在的时区。

2、配置 X Server
为了使用图形化用户界面,例如KDE, GNOME,或其它窗口管理程序,您必须 配置 X server 。 为了以非root用户运行 XFree86,您必须安装 x11/wrapper 软件。在FreeBSD 4.7及以上版本是默认安装的,但以前的版本要手工安装到系统中。
FreeBSD操作系统安装手册之配置篇(多图)(4)图7
您可以通过许多方法来配置 X server,在认真读了所有的说明后,请使用方向键来选择一种配置方式,并按Enter键确认。

3、选择默认的桌面
有许多窗口管理器可以使用。它们从基本的桌面环境到全部的桌面应用,是一个大型的软件集。一些人可能只希望使用一些占用磁盘空间少,内存低的窗口管理器;而另外一些人则更倾向于使用有便多特性的桌面环境。选择使用那种桌面的最好的方法就是尝试着试用一些不同的桌面环境。这些桌面都可以在安装完成后通过ports收集或包管理器来进行安装。

您可以选择一个流行的桌面配置成为默认的桌面,可以使您在安装完成后立刻启动它。
FreeBSD操作系统安装手册之配置篇(多图)(4)图8
安装系统还能配置更多的选项,例如安装X组件之后,安装程序还会提示用户设置X Window图形界面,然而X Window的设置是另一项复杂的任务,
安装系统还需要做的工作包括为设置系统的时区信息,为root用户设置口令,以保证系统的安全性,进行添加用户和组等基本的系统管理等。

4、添加用户/组
至少要在安装过程中添加一个用户,以便于您能不用root 来登陆使用系统。根分区通常比较小,用 root 来运行应用程序可能会快一点。
FreeBSD操作系统安装手册之配置篇(多图)(4)图9
添加用户信息如下:
FreeBSD操作系统安装手册之配置篇(多图)(4)图10
下面的描述信息会出现在屏幕的下方,可以使用 Tab 键来切换不同的项目,以便输入相关信息:
Login ID: 新用户的登陆名(强制性必须写);
UID:这个用户的ID编号(如果不写,系统自动添加);
Group:这个用户的登陆组名(如果不写,系统自动添加);
Password:这个用户的密码(键入这个需要很仔细);
Full name:用户的全名(解释、备注);
Member groups:这个用户所在的组;
Home directory:用户的主目录(如果不写,系统自动添加);
Login shell:用户登陆的shell(默认是/bin/sh)。

登陆的shell可以在 /bin/sh 到 /usr/local/bin/bash 中修改。 bash shell 是先前默认安装的shell。 不要使用一个不存在的或您不能登陆的shell。最通用的shell是使用 BSD-world 的 C shell,可以通过指定/bin/tcsh来修改。

在所有的步骤完成之后,就能够重新启动系统,此时,一个完整的FreeBSD系统就将展现在使用者的面前了。

四、FreeBSD的启动与关闭

1、 FreeBSD 在 i386上启动
如果启动正常,您将看到在屏幕上有很多信息滚动,最后您会看到登陆命令行。 您可以通过键入 Scroll-Lock和使用 PgUp 与 PgDn来查看信息,再键入 Scroll-Lock 回到命令行。如果 X 服务器已经配置好了,默认的桌面也选择好了,就可以在命令行键入 startx 来启动视察环境。

2、FreeBSD 在 Alpha机器上启动
一旦安装完成,您就可以键入下面的命令来启动FreeBSD:
>>>BOOT DKC0
这是从指定的固定硬件进行引导。如果要使 FreeBSD 下次能够自动启动, 使用下面的命令:
>>> SET BOOT_OSFLAGS A
>>> SET BOOT_FILE ''
>>> SET BOOTDEF_DEV DKC0
>>> SET AUTO_ACTION BOOT
启动信息跟启动 i386机器时差不多。

3、FreeBSD 关机
正确的关闭操作系统是很重要的。不要仅仅关闭电源。首先,您需要成为一个超级用户,以root用户键入 shutdown -h now命令。

The operating system has halted.
Please press any key to reboot.

当shutdown命令发出后,屏幕上出现 “Please press any key to reboot” 信息时,您就可以安全的关闭计算机了。

原创粉丝点击