夏武

夏武的博客

他的个人主页  他的博客

GNU/Linux vs FreeBSD

夏武  2009年06月20日 星期六 19:27 | 2175次浏览 | 2条评论

很少使用FreeBSD,今天在Free software Magzine上发现了这篇文章,简单的翻译了一下,希望对大家有用。看原文在http://www.freesoftwaremagazine.com/articles/comparing_linux_and_freebsd?page=0%2C1

GNU/Linux是目前地球上最流行的构建在自由/开源软件基础上的操作系统。不过它不是唯一的一个:FreeBSD由于其稳定性、健壮性和安全性也非常流行。在本文中,我将介绍一下GNU/Linux和FreeBSD之间的异同。

一、简介

FreeBSD是一个基于Berkeley Software Distribution(BSD)的操作系统。在FreeBSD的开发过程中,为了避免版权问题,FreeBSD的开发者重写了最初的BSD代码,而不是直接拷贝BSD源代码。
和GNU/Linux不同的是,FreeBSD是一个完整的操作系统:内核、设备驱动、系统管理工具以及其他的软件都在相同的一个版本管理系统中维护。
Linux的开发开始于1991年,当时的Linux Torvalds以Andrew Tanenbaum开发的Minix为基础(这个操作系统当时是一个以教学为目的的操作系统)写了Linux系统的第一个版本。恰逢当时Richard Stallman领导的GNU项目(开始于1983年)开发和收集了所有构建操作系统需要的类库、编译器、文本编译器、shells和其他软件,但是缺少一个内核。于是Linux内核的开发者们决定修改他们的内核和GNU软件一起构建完整的操作系统,由此,GNU/Linux诞生了!
FreeBSD的内核和大部分代码都使用BSD License发布(一些组件也采用GPL、LGPL、ISC License)。Linux内核和大部分GNU项目的软件使用GNU GPL License发布。



二、技术方面的差异
虽然FreeBSD和Linux都遵从UNIX的设计哲学,但是仍旧有不少差别存在。下面从技术的角度分析一下这些差别:
2.1 设备
在操作系统领域,术语“设备”指disks、network cards、printers、graphics cards、mice、keyboards等硬件设备。Linux和FreeBSD对硬件的命名采用不同的命名规范。
Linux对每个设备使用预先定义的名字,例如eth0表示第一块网卡,对任何芯片组都是如此。与此不同,FreeBSD对不同芯片组采用不同的名字,例如, 在FreeBSD中,一个RealTek 8139芯片组的网卡被命名为rl0。
在Linux中,硬件信息可以通过/proc目录下的内容获得,一些指令lspci和lsusb可以输出格式化后的信息。FreeBSD不使用/proc目录,而是使用sysctl命令显示与系统相关的硬件信息,同时可以通过该指令配置和调整系统。

2.2 Runlevel和启动脚本

Runlevel用于描述系统操作(例如reboot、halt、单用户模式、多用户模式)的术语。在GNU/Linux中,/etc/inittab文件描述这些不同的runlevel和启动过程,可以通过修改此文件修改系统的runlevel。FreeBSD使用类似reboot或者shutdown -h等指令来改变当前的runlevel,而不是GNU/Linux中的telinit指令。
在GNU/Linux中,每个runlevel都在/etc或者/etc/rc.d/有个子目录,具体位置依赖于发行版的设计。例如,在Debian中,使用/etc/,子目录分别是rc0.d,rc1.d等(通常有7个runlevel)。每个rc_x_.d子目录里包括到/etc/init.d/目录中启动脚本的符号链接。
在FreeBSD中,启动脚本在/etc/rc.d/和/usr/local/etc/rc.d/目录中。这些脚本使用start或者stop参数,运行在系统启动、重新启动、关闭模式下。

2.3 内核
很明显,在Linux内核和FreeBSD内核中存在不同的设计,但是也有一些相似的地方:
* 内核模块: 支持在不重新编译内核和重新启动系统的情况下,动态加载和卸载内核模块。
* 版本: 每个官方发布的内核都有一个数字版本号。
* 内核定制:都支持内核定制,以获得更快的启动时间、低内存使用和额外的硬件支持。
加载和卸载内核的模块的指令是不同的。Linux使用modprobe指令load模块,lsmod显示已装载模块,rmmod卸载模块。FreeBSD使用kldstat显示已加载模块,kldload装载模块,kldunload卸载模块。
Linux内核的每个版本有一个数字版本号:第一个数字表示主版本数字(当前是2),第二个数字表示是稳定版还是开发版,最后一个数字表示patch版本,例如2.6.17。FreeBSD使用二个数字标识版本,第一个数字表示主版本,第二个数字最小的新release,例如,6.1。
定制内核需要从源代码开始构建。不过,具体的步骤在二个系统中有些差别。第一步是从DVD、CD,网络上下载源代码,这一步是一样的。接下来,Linux提供GUI和CLI工具创建定制的内核。FreeBSD使用文本编辑器注释或者打开注释来控制构建过程。最终,都使用make指令编译和安装内核。

2.4 软件安装
第三方的软件可以以二进制或源代码的形式分发。通常,软件通过压缩工具tar和gzip打包。不过,很多GNU/Linux发行版使用自定义的格式进行软件包的管理,提供软件包的安装、卸载、配置。例如,Debian使用.deb包格式和类似apt或dpkg工具管理。这些工具使得软件包的管理更容易,下面的例子介绍如何安装GIMP图形编辑器程序:
# apt-get install gimp

FreeBSD提供二个有趣的技术用于软件的安装:

一个软件包是一个独立的压缩文件,里面包括预编译的二进制程序、文档、配置文件,并且提供程序pkg_add,pkg_delete,pkg_info等用于包管理。可以通过pkg_add自动下载和安装软件包:
# pkg_add -r gimp

Ports
在FreeBSD术语里面,一个port指的是一组被设计用于从源代码自动编译一个软件的文件集合。

2.5 Shell

Bash(Bourne-Again Shell)是大多数GNU/Linux发行版的默认shell。不过在缺省的FreeBSD安装中没有bash,不要担心,你可以通过下面的指令安装:
# pkg_add -r bash
GNU/Linux发行版选择bash shell作为默认。和经典的UNIX系统一样, FreeBSD使用csh作为默认。
当然,如果你喜欢tcsh,csh,你都可以安装上。选择shell是一个个人的爱好,和每个人的使用经验有关。

三、安装
正如之前所说的一样,Linux和FreeBSD能为安装在很多不同的平台上,还可以把这二个系统安装到相同的机器上。下面我们首先介绍安装的步骤,接下来介绍如何安装Linux和FreeBSD在相同的机器上。
3.1 安装GNU/Linux
由于发行版的差异,安装的过程稍微有些差异,但是过程是类似的:
    * 选择安装介质,例如DVD, CD,网络。
    * 获得安装机器的完整信息。
    * 开始安装.
    * 选择语言、国家、键盘。
    * 分区,选择文件系统。
    * 自动安装基础软件。
    * 配置硬件设备,安装第三方软件。

3.2 安装FreeBSD

FreeBSD提供了一个叫sysinstall的工具,提供类似向导的安装过程。
当启动你的计算以后,sysinstall启动,这次FreeBSD开始安装。下面的安装的一些界面:


FreeBSD安装的主要步骤如下:
    * 分配磁盘空间和安装启动管理器。
    * 选择你要安装的软件、文档、图形系统。
    * 选择安装介质,可以是CD/DVD, FTP, HTTP 或者 NFS.
    * 确认安装
    * 安装好之后,配置网卡、服务, FTP服务器, 时区等。

3.3 在同一台机器上安装GNU/Linux和FreeBSD
GNU/Linux和FreeBSD可以在同一台机器上共存,用户可以在启动过程中选择需要启动的系统。安装的过程中,需要考虑以下几个问题:
* 启动管理器: 你必须选择其中的一个系统启动。
* 硬盘空间: GNU/Linux和FreeBSD使用不同的文件系统类型,以不同的方式组织硬件驱动。
Linux使用hd称呼IDE硬盘,FreeBSD使用s称呼slice(这是硬盘一个部分),所以硬盘的组织方式是不同的。在Linux中,hda1表示第一个IDE硬盘;而在FreeBSD中,一个slice被分成几个部分:第一块IDE硬盘是ad0,ad0sla表示第一块IDE硬盘的第一个slice的分区a。
安装的第一步,选择其中的一个先安装,例如,选择GNU/Linux。当进行到分区这一步时,你至少应该创建二个主分区,一个是GNU/Linux主分区,一个是FreeBSD主分区。
一个简单的分区情况可以是这样:
* 一个主分区用于boot;
* 一个主分区用于根文件系统;
* 一个主分区用于swap;
* 一个主分区用于FreeBSD;
当GNU/Linux已经安装完成,接下来就可以在空闲主分区安装FreeBSD。在空闲分区中,你需要创建一个slice,这个slice被分为4个分区:
* 分区a作为根文件系统.
* 分区b作为swap.
* 分区e作为/var文件系统.
* 分区f作为/usr文件系统.
(注:如果需要共享swap分区,可以查看Linux+FreeBSD miniHOWTO.)
为了启动操作系统,启动管理器是必须的。在安装GNU/Linux的时候,我们可以选择GRUB或Lilo作为启动管理器。下面是grub启动管理器配置文件/boot/grub/menu.lst的例子:
default    0
timeout    5

title       Debian GNU/Linux
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro
initrd      /boot/initrd.img-2.6.8-2-386
savedefault
boot

title    FreeBSD
root     (hd0,2,a)
kernel   /boot/loader


KDE运行在Debian GNU/Linux

KDE运行在FreeBSD上

四、总结
无论选择FreeBSD还是GNU/Linux都很不错,选择哪一个依赖于很多因素。FreeBSD通常作为web服务器,Yahoo!就使用FreeBSD运行互联网门户。在桌面上,GNU/Linux表现更优秀,当然作为web服务器也没有问题。FreeBSD和Linux:自由软件社区给予操作系统世界的杰作。

FreeBSD vs Linux, 我想最终的胜利者是社区。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
仲照勇

回复 仲照勇  2009年06月23日 星期二 20:14

分析的不错!

0条回复

哗啦哗啦

回复 哗啦哗啦  2009年06月20日 星期六 21:46

顶!

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号