why freebsd ?
当谈到免费的unix时,人们通常认为“就是linux”。 当然,linux应用十分广泛,而且(几乎)每个人都听说过它。新用户的数量一直在增长,媒体(不管是不是“专业”的)对它进行了很多宣传。一个主要的原因是linux专门运行在使用最广泛的intel兼容计算机上。当然,它还可以运行在许多其它处理器上,因为unix的一个理念就是“我们不在意是什么处理器”。然而,如果linux仅仅为一个特殊的处理器进行开发,它可能不会获得如此成功,或者,至少要艰难一些。
但免费的unix并不是只有linux:bsd家族也是。它有三个主要的分支:freebsd.netbsd和openbsd。bsd是 “berkeley software distribution”的缩写。如果你想了解更多的关于unix历史的信息,你可以参考article 176。(经过考虑,那篇文章没有讨论关于bsd和system v之间的区别:那完全可以写一本书了。)
每个分支都有自己的特色:
.netbsd几乎可以在任何一种平台上运行,包括很多老计算机:姑且认为有30到40种不同的平台.netbsd证明了我们前面提到的:unix不在乎处理器。如果你在家里或者在工作中有一台相当老的“垃圾”,这是你很好的选择。我在amiga和intel机器上使.netbsd很多年,并且我感觉不错。
openbsd是最安全的unix之一。它是一个很理想的服务器平台,当然,它也可以在许多处理器上运行。它可能是inte.net上最多的被用作服务器的系统之一。但它作为家用用途却不是很理想,不过,每个人根据自己喜好来做选择……
freebsd是上面两种bsd的“综合体”。它专注于intel和alpha处理器,并且从openbsd那里“继承”了一部分安全体系。跟 linux一样,它运行于intel处理器使它成为应用最广泛的bsd之一。它也是家庭用户的一个很好的选择。但这并不是说你不能在工作中使用它!
这里还有一些关于freebsd的事情:他们(译注:指freebsd core team成员)与apple公司“共享”mac os x的自由软件部分。并且,我很喜欢os x……顺便说说,不要困惑:虽然os x是基于bsd,但是它的内核跟freebsd的却没有任何关系。它使用的是已经在nextstep中使用的mach内核,os x的“父亲”:很明显,当nextstep于80年代末问世以来,这个内核发展了不少。
现在,我们见到了……让我们进一步深入吧。
获得并安装freebsd
和大多数自由软件一样,freebsd可以从freebsd的web站点上下载。很明显,这需要很高的连接速度。不用担心:你可以在世界上的任何地方找到freebsd的cd。
目前(在写本文的时候)的最新发行版是4.6。本文讨论的是i386发行版。
从cd-rom(或其它介质)上安装freebsd十分简单……虽然它并没有图形界面来完成安装!你将会使用伪图形界面。只需要按照提示做, freebsd就会被安装到你的硬盘上。和通常的情况一样,你需要将你的硬盘进行分区,配置一些东西,比如网络连接或者甚至是内核(可选)。下面,你将见到sysinstall,就像它的名字暗示的一样,它是一个很好的安装工具。你可以选择安装全部packages或者仅仅安装一部分。你可以在任何时候用任何方式添加它们。
它的包管理方式也很简单。你可以象在solaris下一样使用pkg命令,或者你可以选择使用ports。简而言之,pkg命令就像linux的rpm或者deb,而ports是一些需要通过make和make install进行编译的文件。换句话说:freebsd的操作跟linux的没有什么大的不同或者有困难的地方。
让我们安装一个linux兼容包——你应该安装它:它允许你在freebsd上编译和运行linux的应用程序。
所有事情都是很简单的,并且为防万一,freebsd准备了一个很好的手册,它详细解释了每一个步骤。并且它有很多语言的版本(译注:在/usr/share/doc目录下可以看见以各个语言命名的目录,不同语言的手册就在相应的目录中)。
因此,没有必要在这上面花过多时间。
配置freebsd
再强调一次,我们的这篇文章不可能面面俱到。最重要的是知道核心文件在哪里。跟往常一样,你可以在/etc目录找到它们。它们被命名为rc.something并且可以管理很多不同的部分:常规配置、防火墙、网络、sysctl等。
rc.conf文件十分重要,正如它的名字一样,可以在这里调整系统配置。在这个文件中你可以告诉系统是否打开某些守护程序(sshd、sendmail 等),防火墙类型,你是否想激活内核级安全,你是否想激活ipv6等。在这里有很多选项,令人惊讶的是,你可以在被称作 /etc/defaults/rc.conf的默认文件中找到所有它们。不要误会,这个文件包括了默认设置,而不是范例。也就是说, /etc/rc.conf/etc/rc.conf是不考虑这些默认设定的。换句话说就是,不要将/etc/defaults/rc.conf复制到 /etc.rc.conf,也不要尝试修改/etc/defaults/rc.conf,应该在/etc/rc.conf中作更改。
在sysinstall所选择的项目将会被自动加入到/etc/rc.conf中(网卡配置,主机名,安全等级等)。
请格外注意:freebsd默认没有在/etc/.netd.conf中打开任何服务。这就是说,在第一次启动系统的时候,由.netd管理的守护程序(daemon)默认应该是关闭的。以我的愚见,每个unix系统都应该这样。无论如何,这是一个好主意!
另外的rc文件允许你配置防火墙或者sysctl,以及其他的东西。这理所当然的将我们引导到了调整freebsd的话题上。
调整freebsd
调整系统最好的工具之一是sysctl(在linux下也一样)。你可以通过命令行来定义某些特殊值,或者(同时也建议你)写一个sysctl.conf文件,除非你使用命令行仅仅是来进行测试。
比如,如果你的机器被用作网关,通过命令sysctl -w.net..net.ip.forwarding=1可以使sysctl允许ip转发。如果想获得更高的安全性,你可以使用sysctl -w.net..net.ip.check_interface=1命令核对这些包是否到达目标ip所对应的网络界面。你可以通过使用sysctl来控制你的系统的大部分行为:请参见man page。明显地,如果你希望将这些写入sysctl.conf文件,只需要将这些变量加入进去就可以了,而不必加入sysctl命令本身。 sysctl.conf文件使用variable = value格式。上面的例子可写为:.net..net.ip.forwarding=1
.net..net.ip.check_interface=1
当然,你的sysctl.conf文件支持超过两行的文件,因此它几乎可以在内核级控制控制任何东西。
在本文的开头,我们讨论了安全级。有从-1到3四个不同的等级,3代表最高安全级。建议你在选择之前了解每个等级。使用除了-1或者0之外的其它等级有可能导致系统无法象你希望的那样运行。第一个缺点就是level 1将阻止你正常使用x服务器。你也不能加载或者卸载内核模块。
无论如何,高安全等级对于需要高安全性的特殊服务器来说是很有用的。作为一个家庭用户,你可以保持level 0,当然,这由你自己决定……
chflags命令也与安全等级有关。要想了解这个命令,请阅读man page:它是一个很有用的命令。
如果继续这个话题将把本文写成一个“安全配置freebsd”的文章,因此,让我们进入下一个章节。
升级freebsd
让我们假设你刚购买了freebsd 4.5cd。几天以后,freebsd 4.6就发布了。倒霉!
不必烦恼:freebsd有一个基于cvs的升级系统。你可以选择使用匿名cvs或者cvsup。前者比较容易使用,而后者更有效率。通过这些工具,你可以获得新的原码树(source tree),并且同步(synchronize)它。
下面,你必须使用make buildworld命令编译所有新代码。如何进行编译在freebsd handbook里已经十分详细的进行了阐述(译注:freebsd handbook 1.73版中关于升级系统的部分zer4tul已经完成了翻译工作,正在进行校对)。最重要的一点是它使你拥有一个紧跟升级步伐的崭新的系统。
但是,并不仅仅如此。跟通常情况一样,自由软件(free software)的弱点很快就会被发现,并且很快被修复。跟其它商业操作系统一个漏洞可以很久不被修复不同,自由软件社区的人们会以最快速度为你提供补丁。很明显,你的工作就是检查系统中有什么地方需要补丁。freebsd的web站点上有一个安全公告区(security section)提供各发行版的安全公告。你可以从那里下载.asc文件(文本文件)来获得你所需要知道的信息:关于系统问题的系统问题的描述和解决的方法。其它web站点为你提供的也是这些信息。比如linuxsecurity,cert等。
这并不是说你必须升级你的系统。
更新freebsd
你并不想花过多的时间在了解系统漏洞上,是么?和其它免费unix系统一样,freebsd为你提供了补丁。你可以直接获取这些补丁并且使用它们。对于 linux用户来说,最大的不同就是你并非抓取一个修改过的包,而是一个补丁原码。这就是说你必须在打补丁之后重新编译内核,当然,这就意味着你的机器已经装上补丁了。在linux下也可以这样,但是人们通常是下载修正过后的包,例如rpm包,至少对于应用程序是这样,有时也下载被打过补丁的内核rpm 包。
linux和freebsd最大的不同是内核。freebsd是基于bsd 4.4,并且没有不像linux一样有不同的内核版本。这就是说,它的内核都是稳定版本,当然,它也受益于可加载模块。缺点就是如果你想让你的系统尽可能安全的话,你必须比在linux下更频繁的编译内核。
无论如何,相比linux的体系,我更喜欢这样的方式,但这仅仅是我个人的意见。我并不认为三个不同的内核版本同时进行可以带来很好的稳定性。应用程序必须从一个版本的内核“移植”到另外一个版本,特别是在安全方面。另外一个例子就是系统包:三个不同的内核版本,三个不同的软件组合!当然还有其它问题。
我极为尊敬那些参与这个伟大工程的人们,但是这是否就是正确的方法呢?改进通常是必要的,但是这是否代表我们随时随刻都必须更改所有东西呢?不必担心!
很明显,你也可以编译一个更符合你要求的内核……并且在那时,就跟在linux下一样。完成这项工作的方法在freebsd handbook中已经很详细的阐明了,因此,让我们转入其它话题。
应用程序
正如我们所说过的,大多数自由软件(虽然不是全部)都可以在freebsd下运行。你并不需要上面提到的那些ports和包(packages)。无论是什么类型的软件,你都可以在freebsd下将它们编译成可执行格式。
对于喜欢使用桌面环境的人来说,可以使用kde和gnome……并且它们被包括进了发行版。还包括很多窗口管理器(window magager)。gnustep在freebsd下也可以很好的运行。要想编译它,你需要一个比发行版自带的更新的gcc版本:不必担心!直接抓取一个相应的文件(archive)并且编译它。很明显,gnustep应用程序,象gnumail.app、gorm.app或者 projectbuilder.app也可以很好的运行。
真的,所有你可以在linux上运行的软件都可以在freebsd上使用……并且还有更多其它软件! really, all the software you run under linux is available for freebsd... and there are many others!
比如,freebsd有很多关于安全工具。监控工具、管理工具等,这些都是发行版的一部分。
防火墙、代理服务器、端口扫描器、ids等也可以使用。例如,你可以选择使用ipsec或者ipfw。你可以使用nessus、nmap、portsentry等。再强调一次,它们中的大部分是发行版的一部分,并且你可以自己抓取、编译并使用最新的版本。
我们已经讨论了关于桌面环境和窗口管理器,但是我们对于它们所依赖的东西——x window system(译注:很多人把x window叫做x windows)——还只字未提。目前默认是xfree86 4.x。再freebsd 4.5之前,xfree86 3.x是默认设置。这就是说,你在发行版中有xfree86 4.x,但是安装进程通常选择安装xfree86 3.x。现在xfree86 4.x是默认设置,但是如果你愿意,你还是可以使用3.x版。
硬件
因为我们讨论的是基于i386的发行版,那么我们就来说说大多数可以在freebsd下工作的硬件,虽然它可能有一些古老了。例如一块3com combo网卡在你使用ifconfig命令指定了媒体类型后就可以很好的工作。如果你使用的是bnc连接,只需要在/etc/rc.conf的 ifconfig行最后加入media 10base2/bnc就可以了。
某些老显卡也是这样:使用xfree86 4.x可以解决大多数问题。特别是对于老的ati显卡来说。
总之,你可以参考freebsd web站点的hardware列表。
安全
我们已经提到了很多安全工具,比如防火墙、端口扫描器等。freebsd自带了许多安全工具。openssh、openssl、kerberos、md5 等都是发行版的一部分。跟通常情况一样,如果没有这些工具,你根本无法使用freebsd,当然,还得再重复一次,你必须检查万一可能有的漏洞。
一个新近的例子显示出了小心谨慎的重要性。假设你注意到了openssh中被发现的漏洞。正确的做法是到它的主页上去下载修正版本(corrected version)。
是的,但是这还不够!一定要控制对这个包(package)的校对。
这个关于openssh的例子并非是杜撰出来的:几周以前,有人用一个被修改的档案替换了原来的。openssh的人员很快作出了反应。但是,在这短短的一段时间内下载并且没有进行档案校对的用户就安装上了一个“无效”的版本。因此,一定要进行校对……并且需要控制校对过程。
即使这已经超出了本文的范围,但是我们仍然坚持安全是第一位的。
网络通信
freebsd的网络功能十分先进。ipv6被管理得非常好。现在,网络通信功能和系统融为一体。如果你使用的adsl或者cable modem,你可以很容易的将它们配置好。
许多isp现在都使用pppoe。freebsd通过一种很简单的方式支持它:ppp.conf中的几行就可以完成这个任务。如果是连接到pppoa的话,现在freebsd只支持alcatel modem。这种情况在不久就会改变(或许现在就已经支持其它某些modem了)。
相关文档
freebsd handbook并不是仅有的可用文档。你还可以从freebsd web站点找到faq、安装指南(install guide)等。另外一些比较重要的相关文档可以在http://www.freebsd-howto.com找到。
接下来是什么?
这仅仅是对freebsd的一个很简短的介绍。这个系统跟其它免费unix一样,也是非常有趣的。它有许多特点,很值得一试。很不幸,本文不能对它进行一个完整的概述,很多重要的特点没有提到。
使用freebsd比使用某些类似windows的linux发行版需要更多的unix知识,但是其实它也很容易使用。
当然,有的没有任何unix知识的人将遇到一些困难,因为他必须经常在更新系统后重新编译他的系统。虽然它将花费一些时间,但是,这是一个学习的好方法。今天的人们似乎忘记了,在最初的时候,unix是开发者为开发者开发的,而不是为家庭用户或者普通用户。
他们很幸运,因为无论自由的还是商业的unix改变了它们最初的方式。我们应该感谢哪些为此做出努力的开发者们。在80年代,现在的linux用户中的大多数将避开unix,仅仅因为它那复杂的安装进程。发行版被储存在磁带上,并且安装阶段可能会持续一整天,而配置工作还需要一天来完成。我们并不是说的配置应用程序!而今天,你可以在甚至不了解unix的情况下使用它,比如mac os x。在90年代初已经被os x的“父亲”,也就是nextstep变成事实。
这看上去好像跑题了,然而nextstep引领了免费unix和商业unix的潮流……以及一些其它系统!将unix带给家庭用户将是一个挑战,并且它已经展开了。祝贺所有参与这个挑战的人,无论他们工作是为了钱还是免费的。那些免费工作的人更应该被特别的提出并且给予更多的感谢
我十分看好freebsd和apple的“共享”。两者都从对方那里通过正确的途径得到好处。商业软件通常利用自由软件……而不声张。apple是这样, sgi也是。还有其它一些也一样……但是为了某些隐蔽的目的。无论如何,我还是认为有足够的空间提供给所有人……当然,想独自占有所有空间并且对unix 不作出任何贡献的除外!
关于linux的炒作淹没了其它免费unix:迄今为止,还是如此之好。这也有它好的一面……这就是我使用freebsd的主要原因。当然,我还是在使用linux(还有其它一些系统):我喜欢不同的感觉!
如果你打算给freebsd一个机会,本文将会变得更有意义。自己去体验它,你将会发现许多本文没有提到的东西。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器