从Linux移植到FreeBSD

简介:

FreeBSD 和各种Linux发行版一样,是一种免费的Unix类操作系统。由于FreeBSD的推出稍晚于Linux,因此国内介绍FreeBSD的文章较少,而且 由于某些煤体不负责任的推波助澜,Linux被过分夸大、神化了。实际上,很多大网站都在用FreeBSD,如Yahoo,甚至包括Microsoft的 Hotmail(Microsoft收购Hotmail 4年了,但直到去年11月Microsoft才宣布Hotmail向Windows/IIS迁移,而且,至今Hotmail主机群中依然包括 FreeBSD Boxes,可见Microsoft对于Windows并不是真的很放心,这一事实也证明了FreeBSD引以为耀的稳定性)等等。和Linux各种混乱 不堪的发行版相比,FreeBSD只有唯一的版本,同时,FreeBSD关注的是操作系统的稳定性、性能和品质,适合作为服务器的操作系统。当然,对于选 择FreeBSD还是某种Linux发行版本作为操作系统,不同的人肯定有不同的偏爱,但译者认为,FreeBSD作为服务器来说,比Linux更好一 些,当然,如果不考虑开发成本,仅仅考虑运行效率,也更远好于Windows。原因很多,有机会的话,我会在今后的文章中一一提到。

需要说明的是,译者不认为最近一两年之内免费操作系统阵营能够和Microsoft等商业系统阵营决出胜负高下,因为他们的操作系统的设计理念存在 差别。我自己很喜欢命令行方式的操作,然而在图形界面方面,X Window的效率是很难超过Windows的,这是因为X是以用户模式运行图形界面,而Windows则是以核心模式运行,这实际上就造成了Unix类 操作系统在图形界面上的先天不足。而且,由于Microsoft的产品是要卖钱的,因此它为了维护自己的市场地位,会为客户提供比较好的服务,而免费 Unix操作系统在这一点则比较困难,而且,它对用户的要求较高。在这里我不想给出一个确切的建议,如桌面操作系统应该选择什么,服务器操作系统应该选择 什么,一切要从实际情况出发。请大家注意这样的事实:专业人员维护的Windows服务器的安全性未必就差,非专业人员维护的*nix服务器的安全性也肯 定是无法接受。在抨击Nimda横行的同时,也请注意,Microsoft早在Nimda出现前半年的时候就已经推出了预防性的补丁;*nix一样也有非 常让人难堪的安全问题,同样的,他们也会及时推出补丁,因此,绝大多数服务器的安全问题是由于管理员的疏忽造成的。选择操作系统之前,最好是先想好:什么 样的配置对于您最有利,请考虑整体拥有成本(TCO)而不仅仅是操作系统的价格。目前很多网站采用的、非常流行的Windows 2000+Apache+PHP+MySQL组合实际上就同时牺牲了IIS开发周期短和Apache+Unix组合相对比较容易定制的优点,可谓竹篮打水 一场空。

这篇文章比较客观地对FreeBSD和Linux进行了对比,值得一读,所以我决定把它介绍给国内的读者。总之,Think different,决定选择什么东西之前,最好先尝试一番,特别是那些同类产品。

简介:即使是和IT不沾什么边的企业信息技术人士大概也都听说过Linux。有些人可能用过,或正在使用它,原因五花八门,有的甚至只是为了看看那 些大肆吹嘘它的人到底说的是不是实话。然而,GNU/Linux并不是可用的唯一一个“free”的Unix类操作系统。FreeBSD和它的堂兄弟, OpenBSD和NetBSD都是商业UNIX版本——Berkeley Software Distribution免费的分支产品。这篇文章让您更多地了解FreeBSD,也帮助您更轻松地进行潜在的迁移过程。

与Linux使用的GPL授权不同,BSD家族的操作系统使用BSD风格的授权。用一句话来概括两种授权的不同就是,GPL要求源代码的任何衍生物也是公有的,并且使用GPL授权,而BSD授权没有这个要求。

FreeBSD和主要的Linux发行版本的工作方式有一定区别。这篇文章将告诉你我自己认为在把我的桌面操作系统由Linux切换到FreeBSD时的收获。

当然,肯定会有人坚持这样的观点:Linux指的仅仅是操作系统的内核,而不是其他什么东西。在你的Red Hat或Debian匣子中,每天使用的应用程序是由相应的发行版本提供的。而FreeBSD,则包括了操作系统内核和整个操作系统中的那些基本的应用程 序,例如复制、移动文件的命令等等。这一区别的结果是,Linux由不同的发行版本,例如Mandrake, SuSE, Debian和Slackware。任何使用过Mandrake和Debian的人都会告诉你这两套发行版本的世界有多么大的区别。相反,只有一个 FreeBSD,我的FreeBSD和你拥有的FreeBSD是完全一样的,只要他们的版本一样。

三中最主要的Linux发行版本,Red Hat、Mandrake和SuSE使用了RPM安装包管理器。RPM处理安装、升级、卸载,并检查安装在这些操作系统上的应用程序依赖关系。虽然在安装 程序之前检查依赖关系的错误,但RPM遗留了比我们期待的更多的问题。例如,它不能自动地下载它需要的其他RPM。我知道至少3个项目试图解决这个问题, urpmi, Debian的apt-get,当然,附带说一句,只是一个“仅Debian采用”的特性,而且是一个RPM和apt-get的混血儿。所以,除非你打算 是用上面的方法,否则你将不得不手工寻找、下载所需要的RPM。听起来很简单么?直到你用RPM安装Gnome或者升级Xfree的时候你才会知道事情有 多么严重。而且,即使你找到了正确的RPM,如果他们是为SuSE设计的,而你运行的是Red Hat,那么你的麻烦课就大了。

每一个Linux发行版本都存在一些差异,而它们之间最大的差异则在于文件系统的结构。我肯定绝大多数人都听说过SuSE把KDE放到/opt,而 Red Hat则放到/usr文件夹中。更糟糕的是,RPM不能识别从源代码中编译得到的程序。所以,如果你拥有最新编译的程序,RPM甚至无法知道他们的存在。

FreeBSD使用“包”来安装、卸载和升级应用程序。‘pkg_add’命令被用于安装一个你手工下载到计算机的包。你也可以用‘-r’开关来让 它自动的从Internet获取,当然,也包括这个包所依赖的一切。不过,FreeBSD包的真正美妙之处在于“连接点”(Ports)树。连接点树是 ——FreeBSD包含的应用程序之间的继承关系。每一个文件夹都包含Makefile,以及让特定应用程序能够在FreeBSD上正确运行所需要的补 丁。例如,如果我想安装Apache web服务器,我所需要做的只是cd到/usr/ports/www/apache文件夹,然后运行‘make && make install’,然后去小吃售卖机前。如果我拥有一台速度够快的电脑,同时拥有一个足够大方的Internet连接,当我回来的时候Apache源代码 的下载、补丁、编译和安装肯定都已经做完了。连接点树也能够处理Apache运行依赖的那些程序,无论我用连接点树安装、手工编译,还是通过安装已经编译 好的二进制包。连接点树能够通过$PATH找到它需要的东西。

Linux和FreeBSD的另一个区别在于,对于FreeBSD而言,你安装的连接点或者包99%都会被放到/usr/local,而在 Linux上有时是/usr,有时是/opt。这可能只是一个很小的区别,但你至少可以知道你的程序安装到了/usr/local,而不是扩散到了文件系 统的各个地方。

FreeBSD系统使用cvsup来保持它是最新的。一旦你建立了‘sup-file’,cvsup将会把你本地的系统和cvsup服务器上的进行 比较,并且下载那些修改过的东西。你可以用它来确保你的本地连接点树和FreeBSD源代码都是最新的。和Linux不同,Linux通常只有内核被半正 规性的下载和变异。使用cvsup,你可以很容易地下载整个FreeBSD操作系统的源代码。这样做的主要理由是,它使得FreeBSD从一个版本升级到 另一个的过程变的简单。Cvsup之后,你可以用make world来编译整个操作系统,或者编译新的操作系统内核。这些都非常的简单。

处理分区的方式也有区别。Linux将一个硬盘分为不同的分区,在这些分区中,有些又包括逻辑分去。我们常说的分区在FreeBSD中称为片断(Slices),没个片断中包括一个或多个BSD分去。BSD分区在/etc/fstab中可以找到。

也许Linux和FreeBSD的下一个最大的区别就是操作系统设计的基本理念。Linux强调最新的操作系统特性和驱动程序(例如不开放源代码的 nVidia图形卡驱动程序)。FreeBSD在这些方面比较保守。他们喜欢经过时间考验和测试过的东西,甚于最新特性。他们倾向于等待主要的bug被修 正。对于桌面操作系统来说,如果你使用最新的硬件,追求最新的驱动程序,或那些更酷的特性,保守是FreeBSD的一个毛病。然而在服务器中,你肯定希望 更加稳定的代码。另外,你会把一块价值200美元的显示卡放到你的不包括显示器的服务器上么?

另一个区别是默认安装的内容。如果你接受SuSE的默认安装选项,那么你至少会装上1GB的软件。而FreeBSD只是安装那些最基本的系统(注 意,我知道你会告诉SuSE仅仅安装‘基本系统’,但我说的是‘默认’安装)。他带给你那些最本质的东西,而你可以在以后通过连接点树安装4000多种应 用程序中的任何一个。几乎所有在Linux中运行的程序都已经被移植,并且能够正常运行于FreeBSD,唯一的区别在于在Linux上,应用程序要么被 “默认安装”,要么,除非你用Debian,你就必须手工下载它们。在FreeBSD上他们只是可选的,而且绝大多数过程已经被自动化了。另一些区别就 是,Linux上默认的命令行外壳是bash,而FreeBSD上则是tcsh。

对于商业应用程序,如Oracle或HP Openmail,FreeBSD提供了一个“Linux兼容”层。简而言之,它让FreeBSD能够以接近在Linux上运行的速度直接运行Linux 的二进制应用。应用程序是否能够在FreeBSD上全速运行完全取决于它是否真的愿意在Linux上运行。兼容层比模拟更进一步。需要的Linux库被以 二进制形式安装在BSD系统中。当你试图运行Linux程序时,FreeBSD识别它是Linux程序,并简单地指明它需要的Linux运行库的位置。同 时,FreeBSD夜提供了商业BSD、NetBSD、OpenBSD和SCO的模拟。每种不同的操作系统获得不同的支持,其中最完善的是商业BSD、 NetBSD和OpenBSD。

尽管BSD开发者更重视软件的品质和数量,但这并不意味着FreeBSD缺乏某些功能。预定于2002年11月推出的FreeBSD 5.0包括了更加精细的进程控制机制,这允许它更加有效地运行于最多32个处理器。版本5.0也将提供一个完整的DEVDFS设备文件系统。虽然这些在 Linux上已经存在了一段时间,但你也许还没有听说过。DEVDFS大体上是一个允许动态变化的设备文件系统。例如,如果你接入了一个USB键盘,它将 ‘魔术般地’加入到/dev文件夹。在日志文件系统方面,4.4稳定版提供了‘soft updates’特性。尽管在技术上它也许不能北郊做日志文件系统,但它可以做得比你对日志文件系统的要求更好。

欢迎转载:请注明转载自 http://www.7cm.org

1998-1999年.com爆炸中,Linux是真正的关键词。所有地方的电脑用户都听说了一种*免费*的,正在服务器领域和桌面领域挑战 Microsoft地位的操作系统。即使在今天,Linux的忠实用户仍然在增加。但是,很多人只是刚刚听说FreeBSD。希望这篇文章能够帮助你对 FreeBSD有一个初步的了解,并且把它作为满足你的需求的一种选择。在最后我想说的时,既然它们都是免费的,为什么不都试一试,看看谁更满足你的需要呢?

补充一句,本人虽然是Linux的拥护者,感觉这是篇不错的文章,所以也转载分享下

 

参考至:http://www.7cm.org/

如有错误,欢迎指正

邮箱:czmcj@163.com

作者:czmmiao 原文地址:http://czmmiao.iteye.com/blog/1057925
相关文章
|
7月前
|
Unix Linux
Linux/FreeBSD 安装
在Linux/FreeBSD上安装Julia 1.7.2的步骤:从[官方](https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.2-linux-x86_64.tar.gz)或[Tsinghua镜像](https://mirrors.tuna.tsinghua.edu.cn/julia-releases/bin/linux/x86/1.7/julia-1.7.2-linux-i686.tar.gz)下载二进制包,然后使用`tar`解压。
|
6月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
6月前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
247 0
|
7月前
|
Linux 编译器 网络安全
嵌入式Linux移植dropbear
嵌入式Linux移植dropbear
230 3
|
7月前
|
JSON Ubuntu Linux
LuaJit交叉编译移植到ARM Linux
LuaJit交叉编译移植到ARM Linux
142 1
|
7月前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
242 0
|
7月前
|
存储 Linux Shell
嵌入式 Linux 移植与系统启动方法
嵌入式 Linux 移植与系统启动方法
105 0
|
7月前
|
Linux 计算机视觉
Linux交叉编译opencv并移植ARM端
通过以上步骤,你可以在Linux上交叉编译OpenCV,并将生成的库文件和头文件移植到ARM平台上,从而在ARM上使用OpenCV。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
463 0
|
7月前
|
编解码 Ubuntu 算法
【Linux】NUC977移植使用MQTT(基于mosquitto)
【Linux】NUC977移植使用MQTT(基于mosquitto)
|
7月前
|
网络协议 Unix Linux
【Linux】NUC977移植使用libmodbus
【Linux】NUC977移植使用libmodbus
206 0