/tmp
/usr
/home,其中/var和/tem分区是数据变化频繁的,前者有许多系统日志,还有一些版本的LINUX把WEB目录放在了这里这些都要注意,后者对一些大站来说有大量的临时文件和碎片,一些大型站点和多硬盘服务器给这二位配上单独的硬盘也是可以的,/home目录更不必说,现在大部分的发行版本都要求这个尽可能的大,/usr的目录下安装了大部分的软件,所以要考虑软件安装的大小进行分区。以下只是一个建议。
/
2G
LINUX的服务器,尽量不要安装桌面环境,会影响运行速率的。
/boot
(200MB)
swap
一般是内存的2倍
/tmp
(20G)
/var
(200G)
如果WEB目录在这儿的,可以考虑再增大。
/usr
(20G)
建议不要把所有软件都安装到/usr目录中,因为这是系统的专用分区,太多的小文件,会把服务器的速度拖慢,可以自己再建一个/opt分区,应用程序自己编译安装到这儿。如果软件不多,直接安装在这儿也是可以的,大小自己考虑。
/home
(剩下的所有空间)几年以前,Linux环境下可以选择的可以免费邮件服务器软件只有Sendmail,但是由于Sendmail的缺陷,一些开发者先后开发了若干种其他的邮件服务器软件。当前,运行在Linux环境下免费的邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer等等。本文希望通过对几种影响相对来说比较大的主流Linux环境下的MTA的特点进行阐述,并对其优缺点一一分析比较,使用户在选择Linux环境下的免费MTA时有一个选择的依据。
Postfix
Postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件工程的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择。Postfix力图做到快速、易于管理、提供尽可能的安全性 ,同时尽量做到和sendmail邮件服务器保持兼容性以满足用户的使用习惯。起初,Postfix是以VMailer这个名字发布的,后来由于商标上的原因改名为Postfix。
主要设计目标
Postfix工程的目标是实现一个邮件服务器,提供给用户除sendmail以外的选择。其设计目标包括:
性能。 Postfix要比同类的服务器产品速度快三倍以上,一个安装Postfix的台式机一天可以收发百万封信件。Postfix设计中采用了web服务器的的设计技巧以减少进程创建开销,并且采用了其他的一些文件访问优化技术以提高效率,但同时保证了软件的可靠性。
兼容性。Postfix设计时考虑了保持Sendmail的兼容性问题,以使移植变的更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及 ~/forward等文件。然而Postfix为保证管理的简单性,所以没有支持配置文件sendmailcf。
安全和健壮性。Postfix设计上实现了程序在过量负载情况下仍然保证程序的可靠性。当出现本地文件系统没有可用空间或没有可用内存的情况时,Postfix就会自动放弃,而不是重试使情况变的更糟。
灵活性。Postfix结构上由十多个小的子模块组成,每个子模块完成特定的任务,如通过SMTP协议接收一个消息,发送一个消息,本地传递一个消息,重写一个地址等等。当出现特定的需求时,可以用新版本的模块来替代老的模块,而不需要更新整个程序。而且它也很容易实现关闭某个功能。
安全性。Postfix使用多层防护措施防范攻击者来保护本地系统,几乎每一个Postfix守护进程都能运行在固定低权限的chroot之下,在网络和安全敏感的本地投递程序之间没有直接的路径—一个攻击者必须首先突破若干个其他的程序,才有可能访问本地系统。Postfix甚至不绝对信任自己的队列文件或IPC消息中的内容以防止被欺骗。Postfix在输出⑺驼咛峁┑南�⒅�盎崾紫裙�讼�ⅰ6�襊ostfix程序没有set-uid。
Postfix的一些特点
支持多传输域:sendmai支持在Internet, DECnet, X400及UUCP之间转发消息。 Postfix则灵活的设计为无须虚拟域(vistual domai)或别名来实现这种转发。但是在早期的发布里仅仅支持STMP和有限度地支持UUCP,但对于我国用户来说,多传输域的支持没有什么意义。
虚拟域:在大多数通用情况下,增加对一个虚拟域的支持仅仅需要改变一个Postfix查找信息表。其他的邮件服务器则通常需要多个级别的别名或重定向来获得这样的效果。
UCE控制(UCE,unsolicited commercial email): Postfix能限制哪个主机允许通过自身转发邮件,并且支持限定什么邮件允许接进。Postfix实现通常的控制功能:黑名单列表、RBL查找、HELO/发送者DNS核实。基于内容过滤当前没有实现。
表查看: Postfix没有实现地址重写语言,而是使用了一种扩展的表查看来实现地址重写功能。表可以是本地 dbm或 db文件等格式。
Postfix体系结构及与Sendmail的比较
Postfix是基于半驻留,互 *** 作的进程的体系结构,每个进程完成特定的任务,没有任何特定的进程衍生关系(父子关系)。而且,独立的进程来完成不同的功能相对于“单块”程序具有更好的隔离性。此外,这种实现方式具有这样的优点:每个服务如地址重写等都能被任何一个Postfix部件所使用,无须进程创建等开销,而仅仅需要重写一个地址,当然并不是只有postfix采用这种方式。
Postfix是按照这种方式实现的:一个驻留主服务器根据命令运行Postfix守护进程,守护进程完成发送或接收网络邮件消息,在本地递交邮件等等功能。守护进程的数目由配置参数来决定的,并且根据配置决定守护进程运行的次数(re-used times),当空闲时 间到达配置参数指定的限度时,自动消亡。这种方法明显地降低了进程创建开销,但是单个进程之间仍然保持了良好的隔离性。
Postfix的设计目标就是成为Sendmail的替代者。由于这个原因,Postfix系统的很多部分,如本地投递程序等,可以很容易地通过编辑修改类似inetd的配置文件来替代。
Postfix的核心是由十多个半驻留程序实现的。为了保证机密性的原因,这些Postfix进程之间通过Unix的socket或受保护的目录之下的FIFO进行通信。即使使用这种方法来保证机密性,Postfix进程并不盲目信任其通过这种方式接收到的数据。
Postfix进程之间传递的数据量是有限制的。在很多情况下,Postfix进程之间交换的数据信息只有队列文件名和接收者列表,或某些状态信息。一旦一个邮件消息被保存进入文件,其将在其中保存到被一个邮件投递程序读出。
Postfix采用一些通常的措施来避免丢失信息:在收到确认以前通过调用flush和fsync()保存所有的数据到磁盘中。检查所有的系统调用的返回结果来避免错误状况。
大多数构建邮件服务器者都会选择sendmail,公平的来讲sendmail是一个不错的MTA(Mail Transfer Agent),最初开发时Eric Allman的设计考虑主要放在了邮件传递的成功性。不幸的是,Sendmai开发时没有太多的考虑Internet环境下可能遇到的安全性问题。Sendmail在大多数系统上只能以根用户身份运行,这就意味着任何漏洞都可能导致非常严重的后果,除了这些问题之外,在高负载的情况Sendmail运行情况不是很好。
安全
Postfix则并一定要以root的身份运行,而只需要一个主(master)程序以root身份运行,其生成进程来处理接入、发出及本地邮件投递工作。通过使用一系列模块部件,每个任务由一个单独的程序来运行(这样使审计变的容易一些)。例如发出邮件被卸载到一个队列目录,在这里“pcikup”程序取到该邮件然后将邮件传递给“cleanup”程序,其再将邮件传递给“trivial-rewrite”,其负责处理邮件头,最后若邮件目的是别的系统则将邮件传递给“smtp”程序。而且相对于Sendmail来说Postfix也更容易设置chroot‘ed环境。只要简单地通过编辑mastercf(一般位于/etc/postfix内)文件即可实现,并且Postfix将运行chroot‘ed,以限定在其定义的队列目录之下(通常位于/var/spool/postfix),同样可以在mastercf中对Postfix的单一模块设置进程限制。用户可以限制Postfix以哪个用户的身份运行,一般来说是以“postfix”用户(概念上该用户和Apache的nobody类似)运行,该用户可以访问特定的队列目录。Postfix其他的主要优点是起配置文件的清晰易懂性。
与Sendmail的比较 如sendmail之类的邮件系统是按照一个单块的结构设计实现的,该“单块”程序实现所有的功能。当然这种结构有利于在系统的不同部分之间共享数据。但是这种结构容易出现一些致命的错误。而如qmail的邮件系统上使用一种分层次的结构,按照固定得顺序运行不同功能的子模块进程,执行完毕之后就将其释放。这种方法有良好的“绝缘”性,但是增加了进程创建开销和进程间通信开销。但是通过合理的规划子模块进程的运行顺序可以将开销保持在可以接受的范围内。
使用其他的MTA替代Sendmail是一件非常麻烦的事情,用户往往又要花大量的时 间去熟悉新的MTA的配置和使用。而使用Postfix,你可以利用很多以有的配置文件。如(access, aliases, virtusertable等等),只需要简单的在mastercf中定义一下即可。此外,Postfix在行为上也很象Sendmail,用户可以使用sendmail命令来启动Postfix。
当然,使用一个软件来替代另外一个软件需要解决特定的问题。部分原因是因为Postfix的安全特性,在配置Postfix时可能会遇到一些问题。最典型的问题是向root用户发送邮件。Postfix一般不提高自身的权限(向root用户发送邮件所必须的)来投递邮件。用户需要在别名文件中为root定义别名,如:root: someuser。这同样会对若干个邮件列表模块发生影响,特别是SmartList。一般来说实现邮件列表最好使用Majordomo,它易于配置。
Sendmail一个很突出的问题就是可扩展性和性能问题。例如用户若希望每天重新启动Sendmail来实现自动更新配置文件(如为虚拟主机重定向邮件)就会出现问题。Sendmail生成新的进程来处理发送和接收邮件,这些进程会一直存在直到传输结束,之后Sendmail才能退出,这样你的脚本程序将不能正确的重起Sendmail。而对于Postfix,用户则只需要发出命令postfix reload即可,Postfix将会重新加载其配置文件。
另外,对于有数以万计的用户的邮件服务器来说,使用文件来存储如匹配用户发出邮件地址(例如bob发出的信的发信人修改为sales@exampleorg)。对于大量用户来讲,该文件就会变的很巨大,从而影响系统的运行效率。而Postfix则可以和一个数据库后台集成起来(当前只支持MySQL)来存放其配置信息,数据库方式要比文件方式在可扩展性方面强大很多。
遵从IBM的开放源代码版权许可证,用户可以自由地分发该软件,进行二次开发。其唯一的限制就是必须将对Postfix做的修改返回给IBM公司。因为IBM资助了Wietse的开发。
与Qmail的比较
Qmail的缺点就是配置方式和Sendmail不一致,不容易维护。而且Qmail的版权许可证含义非常模糊,甚至没有和软件一起发布。应用作者的话:若你希望分发自己修改版本的Qmail,你必须得到我的许可。
Qmail qmail是有Dan Bernstein开发的可以自由下载的MTA,其第一个beta版本0707发布于1996年1月24日,1997年2月发布了10版,当前版本是103。
Qmail的特点
安全性 为了验证Qmail的安全性,Qmail的支持者甚至出资$1000悬赏寻找Qmail的安全漏洞,一年以后,该奖金没有被领取,而被捐献给自由软件基金会。目前,Qmail的作者也出资$500来寻求Qmail的安全漏洞。
速度mail在一个中等规模的系统可以投递大约百万封邮件,甚至在一台486一天上能处理超过10万封邮件,起支持并行投递。Qmail支持邮件的并行投递,同时可以投递大约20封邮件。目前邮件投递的瓶颈在于SMTP协议,通过STMP向另外一台互联网主机投递一封电子邮件大约需要花费10多秒钟。Qmail的作者提出了QMTP(Quick Mail Transfer Protocol)来加速邮件的投递,并且在Qmail中得到支持。Qmail的设计目标是在一台16M的机器上最终达到每天可以投递大约百万级数目的邮件。
可靠性:为了保证可靠性,Qmail只有在邮件被正确地写入到磁盘才返回处理成功的结果,这样即使在磁盘写入中发生系统崩溃或断电等情况,也可以保证邮件不被丢失,而是重新投递。
特别简单的虚拟域管理,甚至有一个第三方开发的称为vpopmail的add-on来支持虚拟POP域。使用这个软件包,POP3用户不需要具有系统的正式帐户。
使用ezmlm支持用户自控制的邮件列表功能。
邮件用户和系统帐户隔离,为用户提供邮件帐户不需要为其设置系统帐户,从而增加了安全性。
Sendmail vs Qmail
首先:sendmail是发展历史悠久的MTA,当前的版本是8102。当然,Sendmail在可移植性、稳定性及确保没有bug方面有一定的保证。但是Internet上有很多帖子都是关于如果攻击Sendmail,这对于管理员来说是一个噩梦。Sendmail在发展过程中产生了一批经验丰富的Sendmail管理员,并且Sendmail有大量完整的文档资料,除了Sendmail的宝典:O‘Reilly‘s sendmail book written by Bryan Costales with Eric Allman以外,网络上有大量的tutorial、FAQ和其他的资源。这些大量的文档对于很好的利用Sendmail的各种特色功能是非常重要的。但是Sendmai当前来说是一个成熟的MTA。
当然,Sendmail具有一些缺点,其特色功能过多而导致配置文件的复杂性。当然,通过使用m4宏使配置文件的生成变的容易很多。但是,要掌握所有的配置选项是一个很不容易的事情。Sendmail在过去的版本中出现过很多安全漏洞,所以使管理员不得不赶快升级版本。而且Sendmail的流行性也使其成为攻击的目标,这有好处也有坏处:这意味着安全漏洞可以很快地被发现,但是同样使Sendmail更加稳定和安全。另外一个问题是Sendmail一般缺省配置都是具有最小的安全特性,从而使Sendmail往往容易被攻击。如果使用Sendmail,应该确保明白每个打开的选项的含义和影响。一旦你理解了Sendmail的工作原理,就Sendmail的安装和维护就变的非常容易了。通过Sendmail的配置文件,用户实现完成一切可以想象得到的需求。
Qmail是一个选择,其在设计实现中特别考虑了安全问题。如果你需要一个快速的解决方案如,一个安全的邮件网关,则Qmail是一个很好的选择。Qmail和Sendmail的配置文件完全不同。而对于Qmail,其有自己的配置文件,配置目录中包含了5-30个不同的文件,各个文件实现对不同部分的配置(如虚拟域或虚拟主机等)。这些配置说明都在man中有很好的文档,但是Qmail的代码结构不是很好。
Qmail要比Sendmail小很多,其缺乏一些现今邮件服务器所具有的特色功能。如不象Sendmail,qmail不对邮件信封的发送者的域名进行验证,以确保域名的正确性。自身不提供对RBL的支持,而需要add-on来实现。,而Sendmail支持RBL。同样Qmail不能拒绝接收目的接收人不存在信件,而是先将邮件接收下来,然后返回查无此用户的的邮件。Qmail最大的问题就出在发送邮件给多个接收者的处理上。若发送一个很大的邮件给同一个域中的多个用户,Sendmail将只向目的邮件服务器发送一个邮件拷贝。而Qmail将并行地连接多次,每次都发送一个拷贝给一个用户。若用户日常要发送大邮件给多个用户,使用Qmail将浪费很多带宽。可以这么认为:Sendmail优化节省带宽资源,Qmail优化节省时 间。若用户系统有很好的带宽,Qmail将具有更好的性能,而如果用户系统的带宽资源有限,并且要发送很多邮件列表信息,则Sendmail效率更高一些。Qmail不支持forward(forward在很多情况下对用户很有用处);不使用/var/spool/mail,而是将邮件存放在用户home目录。下面是一些使用Qmail不容易完成的工作,要使用Qmail完成这些工作,可能需要用户自己动手实现或者使用第三方提供的不够可靠的模块。
Qmail的源代码相对于Sendmail来说要更加容易理解,这对于希望深入到内部了解MTA机制的人员来说是一个优点。Qmail在安全性方面也要稳定一些。Qmail有很好的技术支持,但是没有象Sendmail那样被广泛地应用和大量的管理员用户群。Qmail的安装不象Sendmail那样自动化,需要手工步骤。而且Qmail的文档不如Sendmail那样完整和丰富。
Qmail的add-ons比Sendmail要少一些。一般来说对于经验稍微少一些的管理员,选择Qmail相对要好一些。Qmail要简单一些,而且其特色功能能满足一般用户的需求。Sendmail类似于office套件,80%的功能往往都不被使用。这就使Qmail在一些场合可能被更受欢迎一些,其具有一些Sendmail所没有的更流行和实用的特色功能,如mail具有内置的pop3支持。Qmail同样支持如主机或用户的伪装、虚拟域等等。Qmail的简单性也使配置相对容易一些。
Qmail被认为相对于Sendmail更加安全和高效,运行Qmail的一台pentium机器一天可以处理大约200,0000条消息。
Qmail相对于其他的MTA要简单很多,主要体现在1)其他的MTA的邮件转发、邮件别名和邮件列表都是采用相互独立的机制,而qmail采用一种简单的转发(forwarding)机制来允许用户处理自己的邮件列表(2)其他的MTA都提供快速而不安全的方式及慢的队列方式的邮件投递机制;而qmail发送是由新邮件的出现而触发的,所以其投递只有一种模式:快速的队列方式(3)其他的MTA实际上包括一个特定版本的inetd来监控MTA的平均负载,而qmail设计了内部机制来限制系统负载,所以qmail-smtpd能安全地从系统的inet来运行
sendmail有很多的商业支持,而且由于大量的用户群,在互联网上有大量的潜在技术支持。而Qmail只有很有限的技术支持。有家公司inter7com提供对Qmail的支持,该公司同样提供了免费的add-ons,包括一个基于web的管理工具-QmailAdmin及一个通过vpopmail的对虚拟域的支持,甚至具有一个基于web的客户借接口—SqWebMail。
Qmail还具有一些其他的缺憾。如它不是完全遵从标准,它不支持DSN,作者认为DSN是一个即将消亡的技术,而Qmail的VERP可以完成同样的工作,而又不象DSN依赖于其他主机的支持。Qmail另外一个问题是其不遵从支持7bit系统标准,而每次都发送8bit。若邮件接收一方不能处理这种情况,就会出现邮件乱码的情况。
从安全性来讲,Sendmail要比Qmail差一些,Sendmail在发展中出现过很多很著名的安全漏洞;而Qmail相对要短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代码注释要少一些。Qmail的一个很好的特色是其支持一种可选的基于目录的邮件存储格式,而不是使用一个很大的文件来存储用户所有的邮件。若用户的邮件服务器进行很多的POP3服务,则这种邮件存储格式可以提高效率。但是遗憾的是Pine自身并不支持这种存储格式,如果需要可以使用一些补丁来达到这个目的。
Qmail的优点是:每个用户都可以创建邮件列表而无须具有根用户的权限,如用户foo可以创建名为foo-slashdot, foo-linux,foo-chickens 的邮件列表,为了提供更好的功能,有一个叫ezmlm(EZ Mailing List Maker)的工具可以支持自动注册和注销、索引等Majordomo所具有的各种功能,但是都是CLI驱动的,只需要编辑很少的文件。Qmail非常适合在小型系统下工作,一般只支持较少的用户或用来管理邮件列表。Qmail速度快并且简单mail是当你希望安全切容易配置的最佳的选择;Qmail可以在2个小时内搞定配置,而Sendmail可能在两天内都搞不定。
rocketmail internic 等都使用qmail来构建
ZMailer
ZMailer是一个高性能、多进程的Unix系统邮件程序。 [ aka MTA per X400 parlance ],其可以从下面的服务器ftp://ftpfunetfi/pub/unix/mail/zmailer/ 自由下载。其也是按照单块模式设计的。如Hotmail等邮件系统就是用Zmailer构建的。
Exim Exim是由Cambridge 大学开发的遵从GPL的MTA,其风格上类似与Smail 3,但是比Smail 3更加完善。当前最新版本是315。其主站点为>
Linux服务器优势1:良好的稳定性
Linux内核的源代码是以标准规范的32位(在64位CPU上是64位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux的稳定,才使得一些安装Linux的主机像Unix机一样常年不关而不曾宕机。
Linux服务器优势2:丰富的软件支持
与其他的 *** 作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的 *** 作平台,在Linux的软件包中,包含了多种程序语言与开发工具,如g、、C、Tcl/Tk、Perl、Fortran77等。
Linux服务器优势3:可靠的安全性
Linux系统是一个具有先天病毒免疫能力的 *** 作系统,很少受到病毒攻击。
对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。
Linux服务器优势4:完善的网络功能
Linux内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP等。近年来,越来越多的企业看到了Linux的这些强大的功能,利用Linux担任全方位的网络服务器。
Linux服务器优势5:多用户多任务
和Unix系统一样,Linux系统是一个真正的多用户多任务的 *** 作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。
Linux服务器优势6:跨平台的硬件支持
由于Linux的内核大部分是用C语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。如需详细了解Linux请看《Linux就该这么学》。
什么是 Linux ?什么是 *** 作系统?要了解 Linux 之前,就不能不知道什么是 *** 作系统 ( Operation System, OS ),所以,首先我们来简单的说一说什么是 *** 作系统吧!先来想一想,当我们使用计算机时,屏幕上面显示的咚咚是由哪里来的?嗯!是由显示卡与屏幕显像的;那么你现在可以藉由网络看到这篇文章,则是藉由 Internet 、网络卡、网络线以及所有相关的电子器材与网络器材所完成的一项任务!如果你要看 VCD 呢?那么就需要光驱、光盘、声卡的发声等等的支持。这么说来的话,所以在『工作』的东西都是『硬件』的工作呀!对了!就是这些计算机硬件在工作的。那么硬件怎么工作呢?那就是藉由『 *** 作系统』来达成的啰!这个 *** 作系统就是在沟通你这个使用者跟硬件之间的讯息传递啦!也就是说,没有 *** 作系统,那么你的计算机硬件就只是一堆废铁,什么工作都不能做的!
那么 *** 作系统里面含有什么东西呢?简单的来说, *** 作系统主要分为两个东西,一个是『核心』、一个是『一堆核心提供的工具』我们以使用者常使用的 Windows 计算机来做一个简单的说明好了。大家应该都使用过 Windows 计算机里面的档案总管吧?那么当你开启档案总管的时候,他是否会显示你硬盘当中的资料?这个显示硬盘里面的资料,就是『核心』帮你做的,但是,你要核心去显示硬盘哪一个目录下的资料,则是由『档案总管』这个『工具』帮你达成的!这样可以理解吗?再来,如果您曾经使用过 Windows 2000 或 Windows XP 的话,那就更好了!你就应该听过有所谓的『FAT32 与 NTFS 档案格式』吧?在 Windows 98 这个早期的 Windows 版本中,他并无法读取或者是找到 Windows XP 的 NTFS 档案格式的硬盘,为什么呢?因为他的『核心』本来就不认识 NTFS 啊!所以,即使你有档案总管,但是由于核心根本不认识 NTFS ,所以,档案总管也是没有能力帮你达到你想要做的事情!这样应该就更清楚了吧?没错!你的整个硬件是由核心来管理的,而如果核心不认识你的硬件,那么你将无法使用该硬设备,例如上面提到的 NTFS 档案格式的硬盘!核心就是『 Kernel 』,他是一个 *** 作系统的最底层的东西,由他来掌管整个硬件资源的工作状态,而 Linux 有 Linux 自己的核心, Windows 也有他自己的核心。所以说,当有新的硬件加入到你的系统中的时候,那么若你的『 Kernel 』并没有支持他的时候,呵呵,这个新的硬件就肯定无法工作的,因为控制他的 Kernel 并不认识他呀!这样了解了吗?!先有个概略性的了解,后面我们提到『核心编译』的时候会在更详细的谈到他!
一般来说,Kernel 管理的事项有:
System call interface :一些服务与 kernel 沟通之后,将硬件的资源进一步的利用;
Process control :系统过程控制中心,所以核心编的越小越好;
Memory management :控制整个系统的内存管理;
File system management :档案系统的管理,例如 I/O 等等的工作啦!还有不同档案格式的支持啦等等,如果你的核心不认识某个档案系统,那么您将无法使用该档案格式的档案啰!例如上面提到的 Windows 98 不认识 NTFS 档案格式的硬盘;
Device drivers :就如同上面提到的,硬件的管理是 Kernel 的主要工作之一,当然啰,装置的驱动程序就是核心需要做的事情啦!好在目前都有所谓的『可加载模块』功能,可以将驱动程序编辑成模块,就不需要重新的编译核心啦!这个也会在后续的核心编译当中提到的!
所以啦!所有硬件的资源都是他来管理的!至于我们要达成一些工作时,除了藉由核心本身提供的功能 ( 例如上面提到的档案总管 ) 之外,还可以藉由其它的应用软件来达成喔!举个例子来说,你要看 VCD 影片是吧!那么除了 Windows 提供的媒体播放程序之外,你也可以自行安装 VCD 播放程序来播放 VCD 啰!这个播放程序就是应用软件啰,而这个应用软件可以帮你去控制核心来工作 ( 就是放映影片啰 ) ,因此,我们可以这样说,核心是控制整个硬件支持的咚咚,也是一个 *** 作系统的最底层,然而要让整个 *** 作系统更完备的话,那还需要含有相当丰富的核心提供的工具,以及核心相关的应用软件来支持!
OK!提到这里那么您知道 Linux 是什么了吗?呵呵!对啦!其实 Linux 就是一个 *** 作系统,这个 *** 作系统里头含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一个完整的 *** 作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外,由于这个优良的架构可以在目前的个人计算机 ( X86 系统 ) 上面跑,所以很多的软件开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软件啦!虽然 Linux 仅是其核心与核心提供的工具,不过,由于核心、核心工具与这些软件开发者提供的软件的整合,使得 Linux 成为一个更完整的、功能强大的 *** 作系统啰!我们可以将 Linux 的系统与使用者的相关性看成底下的图标:
图一、使用者、使用者接口与核心工具、核心、与硬件之相关性
约略了解 Linux 是何物之后,接下来,我们要谈一谈,『为什么说 Linux 是很稳定的 *** 作系统呢?他是如何来的?』
从 Unix 到 Linux 这一段历史
为什么大家常常会说, Linux 是很稳定的一套 *** 作系统呢?这是因为, Linux 他有个老前辈,那就是 Unix 家族啰!有这个前辈的提携,让 Linux 这个小老弟很快的就成为一套稳定而优良的 *** 作系统啦!所以,底下我们来谈一谈 Unix 到 Linux 的这一段历史吧!
早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ), 就有一个相当稳定而成熟的 *** 作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,并且丢到网络上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel ) 相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!嗯!等鸟哥慢慢的唬xx喔不!听我慢慢的道来!
一个没有完成的梦想: Bell, MIT 与 GE 的『 Multics 』系统
早期的计算机并不像现在的个人计算机一般,他可不是一般人碰的到的玩意儿,除非是军事或者是高科技用途才有可能接触到这类的 Computer !而如前面所言,有计算机硬件还需要 *** 作系统的配合才能够发挥计算机的效能,不过,在那个年代,由于计算机算是『奢侈品』,喔~应该说是『贵重物品』,所以,可能一间学校就只有一部大型主机当然,那个年代所谓的大型主机仍然无法提供适度的运算能力的。不过,既然只有一部大型主机,然而有许许多多的教师、学生要想要来使用,怎么办呢?为了解决这个问题,在 1960 年代初期,麻省理工学院 ( MIT ) 发展了所谓的『兼容分时系统 ( Compatible Time-Sharing System, CTSS )』,就字面上的意义来看,他主要让大型主机可以提供多个终端机联机进入主机使用主机的资源, ( 附带一提,当时的终端机 ( Terminal ) 本身并没有软件或者可供使用的资源,这些终端机要能使用,一定必需要联机登入主机之后,才能够使用主机的资源来工作!) 当时可以让约 30 位使用者联机使用主机。而为了让这个分时系统更加的强大,所以,在 1965 年前后由贝尔研究室 ( Bell )、 麻省理工学院 ( MIT ) 及奇异电器公司 ( GE ) 开始来共同开发一个名为 Multics 的大型计画,目标是想让大型主机可以联机 300 位以上的使用者。不过,在奋斗了四年之后,该计画仍然宣告不治喔!是失败啦!(注: Multics 有复杂、多数的意思。)
一个小型档案系统的产生:1969 年 Ken Thompson 的小型 file server system
在复杂的 Multics 系统的计画失败后,贝尔研究室当然就退出该计画。就在这个计画解散之后,曾经参与 Muitics 的贝尔研究室的成员 Ken Thompson 由于自己工作上的需求,需要一套档案存取的小型 *** 作系统,便在 1969 年的时候以 DEC 公司 ( Digital Equipment Corporation ) 的计算机 PDP-7 为硬件基准,设计了一个适合自己工作环境的小型档案系统,其中也含有他自行开发的一些小工具。那个系统就是最早期的 Unix 的源头!当初 Ken 设计这个档案系统时,主要是为了自己的存取方便所设计的简单 OS ,因此将原有的 Multics 系统大幅度的简化,不过,在当时还并没有 Unix 这个名词的出现!
Unix 的正式诞生:1973 年 Ritchie 等人以 C 语言写出第一个正式 Unix 核心
由于 Thompson 写的那个 *** 作系统实在太好用了,所以在 Bell 研究室内部广为流传,并且数度经过改版。到了 1973 年, Bell 研究室的 Dennis Ritchie 等人为了让这个系统的执行效能更佳化,所以使用编译效能更好的 C 语言将原有的 1969 年的那个系统之核心大幅度的改写过,并且确定该 *** 作系统名称为 Unix,呵呵!那就是最早的 Unix *** 作系统啰!不过,由于这个 *** 作系统是由这一群工程师所开发完成的,而且使用者也大多是这方面的工程师,因此造成了后来 Unix 系统接口较难被一般使用者接受的情况 @_@ (注: 相对于 Multics ,Unix 具有单一的意思!)
重要的 Unix 分支: 1977 年 BSD 的诞生
在 Unix 早期的发展中,有一件相当重要的事情,那就是 BSD 的诞生!由于 C 语言是一种高级语言,他可以被应用在不同的硬件架构上面,而 Unix 本身就是 C 语言写成的!在 Unix 发表之后, 柏克莱大学 ( Berkeley ) 的教授对于这个 *** 作系统相当的有兴趣,在经过取得 Unix 的原始码,并且几经修改之后,终于在 1977 年发表了第一代的 Berkeley Software Distribution ( BSD ) 。这个 BSD 是 Unix 的一个分支,他的发展对于 Unix 有相当大的影响,例如后来的 Sun 公司就是使用 BSD 发展的核心进行自己商业的 Unix 版本的发展的!
百家齐鸣的 Unix 版本:
由于 C 语言是一个相当高阶的程序语言,他与硬件没有很直接的相关性,例如你的 Windows 也可以执行 C 程序语言!而由于 Unix 是由 C 语言写成的,因此,也就是说,你只要经过稍微的原始码修改程序,就可以在不同的硬件架构上面执行这个 *** 作系统!后来,由于 Unix 的方便性,因此很多的商业公司及学术机构就加入这个 *** 作系统的研发啰。不过,也由于 Unix 的便利性与改写容易,因此就造成了很多的不同版本的 Unix 啰,例如 ATT 的 System V 、 加州大学的 BSD 版、 IBM 的 AIX 等等。
由于『 *** 作系统的核心 ( Kernel ) 必须要跟硬件配合,以提供及控制硬件的资源进行良好的工作!』,而在早期每一家生产计算机硬件的公司还没有所谓的『协议』的概念,所以每一个计算机公司出产的硬件自然就不相同啰!因此他们必须要为自己的计算机硬件开发合适的 Unix 系统,所以,他们自行开发的 Unix 当然只能配合本身的硬件配备啰!例如在学术机构相当有名的 Sun 、 Cray 与 HP 就是这一种情况,他们开发出来的 Unix 并没有办法在其它的硬件架构下工作的! ( 我们都称呼这种系统与配备为『超级计算机』 ) !由于没有厂商针对个人计算机设计 Unix 系统,因此,在早期并没有支持个人计算机的 Unix *** 作系统的出现 ( 当然,这是由于早期的个人计算机并没有现在这样风行就是了! ) ,每一家公司自己出的 Unix 虽然在架构上面大同小异,但是却真的仅能支持自身的硬件,所以啰,早先的 Unix 只能与服务器 ( Server ) 或者是大型工作站 ( Workstation ) 划上等号!
此外,由于版本太多了,而大家都是同样来自于 Unix 这个老祖宗,当然也都称自己是 Unix ,好了,如此一来,许多商业公司自然就会有类似的软件发表,喝!那么自然就有些许的商业纠纷啰!真是伤脑筋~
1984 年的 GNU 与 Free Software Foundation:
Unix 在商业上面的问题让许多对于 Unix 喜好者感到相当的忧心,其中一个就是有名的 Richard M Stallman 先生。他认为, Unix 是一个相当好的 *** 作系统,在这个系统上面,如果大家能够将自己所学的贡献出来,那么这个系统将会更加的优异!Stallman 先生认为最大的快乐就是让自己发展的良好的软件让大家来使用了!而且,由于每个人的工作环境 ( 指软硬件平台 ) 可能都不太相同,所以,他也强调应该要有 Open Source 的概念,让大家都能够分享这一份的心得!他认为,有了 Open Source 之后,你的程序将有很多的人可以帮忙检验,将使得 Unix 社群更佳的茁壮。为了自己的理想, Stallman 在 1984 年实际创立了 GNU 与 自由软件基金会 ( Free Software Foundation, FSF ),并创作了许多『自由软件』供大众来使用,此外,对于其作品以自由 ( free ) 的 GNU General Public License ( GPL ) 的授权模式提供大众使用。这个 FSF 的核心观念是『版权制度是促进社会进步的手段,版权本身不是自然权力。』对于 FSF 有兴趣或者对于 GNU 想要更深入的了解时,请参考朝阳大学的洪朝贵教授的网站,里面有更为深入的解说!而且,Stallman 的 GNU General Public License 一直强调 Free 这个字眼!他是这样说的:『"Free software" is a matter of liberty, not price To understand the concept, you should thik of "free speech", not "free beer" "Free software" refers to the users freedom to run, copy, distribute, study, change, and improve the software』大意是说,自由软件并不是指『免费』的,而是指具有『自由度, freedom』的软件,什么是自由度呢?也就是你在取得这个软件之后,可以进行修改、进一步发表与复制在不同的计算机平台上面。这无疑是个好消息!因为如此一来,你所拿到的软件可能原先只能在 Unix 上面跑,但是经过原始码的修改之后,你将可以拿他在 Linux 或者是 Windows 上面来跑!Stallman 先生更直接对自由度下了这样的说明:
你可以根据任何你想要的提议 ( purpose ) 来跑这个 Free 的程序;
你可以在理解了这支 Free 的程序的运作之后,将他修改成你所想要的样式与功能;
你可以将你自己修改过的 Free 的程序再次的发表,以帮助你的朋友们;
你可以将这支 Free 的程序进行改良,并将改良过的程序公开发表,以造福社群!
简单的来说, GPL 授权具有几个特点:
任何软件挂上 GPL 授权之后,即为自由的软件,任何人均可取得,同时,亦可取得其原始码 ( Source Code );
取得 GPL 授权之软件后,任何人均可进行修改原始码,以符合自己的喜好;
除此之外,经过修改的 Source Code 应回报给网络社会,提供大家来参考!
但请特别留意,并非挂上 GPL 之后的软件就不可贩卖,这个是不同的两回事呦!举个例子来说,在 Red Hat 的官方网站上面提供 Red Hat 释出的 Linux 安装光盘提供大众下载,但是 Red Hat 本身依然有在卖 Linux 的套件,而且还卖的『很不便宜!』为何可以如此呢?呵呵!因为 Red Hat 他们卖的资料当中,含有相当大量经过整了的文件资料,这些资料虽然在网络上面可以下载,然而花了这么多的时间来整理这些资料,当然应该要给予相当程度的报酬啰!您说是吧!所以,请留意喔!并非 GPL 不可用来营利!
这个 GNU 对于后来的 Linux 有相当深远的影响,由于 Stallman 先生发展了 GNU 这个计画中,主力在推出各种方便而优异的工具软件,例如广为大家所知的 Emacs 文书编辑器、GCC, BASH然而没有作业平台怎么使用这些软件呢?然而,由于他倡导的自由软件,让后来的心血能很快的接触原始码来发展软件,这就是后来的 Linux 的故事这是后来的故事,等一下来说~
1988 年的图形接口 X-Free86 project:
有鉴于图形使用者接口 ( Graphical User Interface, GUI ) 的需求日益加重,在 1984 年由 MIT 与其它协力厂商首次发表了 X Window System ,并且更在 1988 年成立了非营利性质的 XFree86 这个组织。所谓的 XFree86 其实是 X window system 与 Free 及 x86 系统架构的整合名称呢!而这个 XFree86 的 GUI 接口更在 Linux 的核心 10 版于 1994 年释出时,整合于 Linux *** 作系统当中!
1991 年 芬兰大学生 Linus Torvalds 的一则简讯:
在后来的几年内,由于计算机硬件工业的强力运作,以 intel 主导的 x86 系统架构的个人计算机大行其道,所以个人计算机算是相当流行的一个机器了!但在此时,人们使用的大多还是旧旧而且需要吃很多系统资源的 DOS 系列或其它的 *** 作系统。 此时,有个芬兰的郝尔辛基大学 (Helsinki )Linus Torvalds 学生做了件不寻常的事情! Linus 手边有个 Minix 系统 ( 这也是 Unix 的分支 ) ,他对这个 *** 作系统相当的有兴趣!此外,由于当时他正好买了一部 386 的计算机,所以他就想说,咦!这个 Unix 这么棒!这么稳定,那我可不可以将他移植到个人计算机 ( X86 架构 ) 来使用呢?!好在由于 Stallman 提倡的 Open Source 风气,他得以接触到一些 source code ,而就经由这样的一个想法,呵呵!他就很有心的读取 Unix 的核心,并且去除较为繁复的核心程序,将他改写成可以适用于一般个人计算机的 x86 系统上面,到了 1991 年,他终于将 002 版的 hobby 放到网络上面供大家下载,并且由于 hobby 受到大家的肯定,相当多的朋友一起投入这个工作中!终于到了 1994 年将第一个完整的核心 Version 10 释出!并且造成目前的大流行由于 Linux kernel 的发展是由『虚拟团队』所达成的,大家都是透过网络取得 Linux 的核心原始码,经由自己精心改造后再回传给 Linux 社群,进而一步一步的发展完成完整的 Linux 系统,至于 Torvalds 先生是这个集团中的发起者。由于这个群策群力的缘故, Torvalds 先生将 Linux 定为同样造福大家的 GNU 授权模式!
企鹅的来源:
1994年发表 Linux 正式核心 10 的时候,大家要 Linus Torvalds 想一只吉祥物,怪怪的 Torvalds 突然想到小时候去动物园被一只企鹅追着满地打滚~还被咬了一口!既然想不到其它的吉祥物了,干脆就以这支企鹅来当吉祥物算了!所以,呵呵!目前我们常常看到这一只企鹅就是这么来的咯!
--------------------------------------------------------------------------------
什么是 distribution
好了,经由上面的说明,我们知道 Linux 是个『 *** 作系统』,而且他是 GNU 的授权模式,并且有个老大哥是 Unix 。不过,毕竟由 Torvalds 先生负责维护的 Linux 提供的仅是『核心』与『核心工具』的集合,对于需要更完整功能的 *** 作系统来说,毕竟还不够完备,例如如果你要桌面程序,还得要加入 X-Window 系统对吧!?如果你要架设 : >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)