Linux发行版及哲学思想

Linux各发行版以及哲学思想

  1. 什么是Linux

  2. 为什么会有不同的Linux发行版

  3. 现有主流发行版,及其他们之间相互关系

  4. Linux所遵循的哲学思想

什么是Linux

Linux是一种自由和开放源代码的Unix-like操作系统,由当时就读于芬兰赫尔辛基大学的Linus Torvalds于1991年10月5日首次发布于互联网。Linux遵循第二版GNU通用公共许可证(GPL)。严格意义上Linux只表示操作系统内核本身,但通常用Linux Kernel来表达该意思。Linux则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。

最早商用大型机上主要采用批处理操作系统,随后创建了分时概念,即将大型机珍贵的时间资源适当分配到所有用户身上,用户有独占整部机器的感觉。1964年由贝尔实验室、麻省理工大学及美国通用电气公司共同参与研发了一套分时多任务操作系统——Multics。

由于MULTICS项目进展过于缓慢,1969年贝尔实验室退出该项目。随后贝尔实验室的Ken Thompson花费一个月时间研发了全新的操作系统UNICS具有多任务、多用户的特征,运行于由DEC公司生产的迷你小型机PDP-7,后改名为Unix。第一版的Unix基于在开发Multic时期Thompson创造的Bon语言,由于B语言在进行系统编程时不够强大,Thompson与Dennis Ritchie对其进行了改造,于1971年共同发明了著名的C语言。1973年Thompson和Ritchie用C语言重写了Unix,安装于PDP-11的机器之上。

贝尔实验室隶属美国AT&T公司,因此Unix版权归AT&T。根据AT&T于1958年与美国司法部签署的和解协议,AT&T同意不进入计算机业,同时也不销售任何与计算机有关的产品,以避免司法部起诉其违反《反垄断法》。但同时,任何机构要求得到Unix源代码,AT&T必须无偿提供。

加州大学伯克利分校的到Unix源代码后,将其安装在PDP-11机器上,用作扩展研究。期间,伯克利的研究生Bill Joy以及伯克利系统研究小组(BSRG)为Unix添加了许多功能。1977年,Bill Joy将程序整理都磁带上,作为firt Berkeley Software Distribution(1BSD)发行。

1982年AT&T再次进入计算机业,并于次年发布了自己的付费Unix操作系统System V,并且要求用户不得随意传播其代码。BSD虽然本身免费,但其中包含一部分AT&T代码。为了减少纠纷,伯克利只能将BSD提供给持有AT&T源码许可的公司,并且立即着手将AT&T专有代码逐渐除去。由于源码许可但是非常昂贵,几个其他组织对单独的网络代码感兴趣,完全独立于AT&T,这样就可不受许可证限制。因此,1989年6月Networking Release 1(Net/1)诞生,没有AT&T也能使用,可遵照BSD许可进行再发布。18个月后,所有AT&T的工具都被替换,只剩下留在内核的一些AT&T文件。残余文件被剔除后,1991年6月,Net/2一个全新的操作系统诞生,可以自由发布。

Net/2成为Intel 80386构架上两种移植的主要组成,包括由William Jolitz负责,自由的386BSD;以及专属的BSD/OS,由Berkeley Software Design(BSDi)负责。386BSD本身虽然短命,但在不久之后成为了NetBSD和FreeBSD原始代码的基础。

BSDi很快就与AT&T的UNIX Systems Laboratories(USL)附属公司产生了法律纠纷,后者将拥有System V版权,以及Unix商标。1992年,USL正式对BSDi提起诉讼,这导致Net/2发布被中止,直到其源码能够被鉴定为符合USL的版权。由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。

Linux跟386BSD的开发几乎同时起步,Linux内核最早是有芬兰黑客Linus Torvalds为尝试在自己的英特尔x86架构计算机上提供自由免费的Unix-like而开发的。该计划始于1911年,Linus Torvalds当时在Usenet新闻组comp.os.minix登载帖子,这份注明的帖子标识着Linux内核计划的正式开始。单独来看,从技术上说Linux只是一个内核,是一个提供硬件抽象层、磁盘及文件系统控制、多任务功能的系统软件。

为什么会有不同发行版的Linux

因为一个问题:先有蛋还是先有鸡? GNU组织对外发布的只是程序及Linux内核的源代码,而这些程序及Linux内核要运行在硬件上需要编译成二进制的机器语言。但编译器又需要运行在操作系统上。因此从源码编译并拼装一个具有主要功能的Linux操作系统需要的技术过于困难。 因为上述问题,有一些商业或者非商业组织或者公司,根据Linux内核源码和GNU组织对外发布的程序源码编译并拼装一套操作系统对外发售或置于互联网供使用者免费下载。由于不同组织对操作系统的理解或或者想要面对的受众不同,因此在拼装后所具备的特点也不一而同。这样就有了各式各样上百种Linux发行版。

现有主流发行版

现有比较主流的发行版分支有:Debian、Slackware、RedHat等。

  • Debian: Debian在发展过程中,各种功能的限制相对其他版本较小。但同时带来的操作使用难度也随之升高,需要使用者有较强的使用能力。基于Debian的二次发行版还有比较流行的Ubuntu,以及knopix

  • Slackware:该分支中的S.u.S.E比较著名,其面对企业级的发行版SLES在欧洲地区使用较多。

  • RedHat:RedHat在北美市场以及大陆较为流行,基于其的二次发行版有CentOS、Fedora Core,RHEL是发行的企业级发行版。值得注意的是CentOS,基本取用了RedHat的所有特点,只是修改了RedHat公司的商标等,又因为其免费的特点被一写具有独立维护能力的公司广泛使用。

其他的目前比较著名的还有Gentoo、ArchLinux、Kali等。Kali也是被认为超越《权利的游戏》的另一神剧的《黑客军团》中男主角使用的系统,其中包含了大量的渗透性测试工具。

Linux所遵循的哲学思想

  1. 一切皆文件,把几乎所有资源统统抽象为文件形式:包括硬件设备,甚至通信结构等。这样访问任何文件都可以用统一的访问接口来实现;

  2. 由众多功能单一的程序组成。系统中每一个程序通常只做一个一件事,并且做好。这样通过组合小程序就可以更加自由丰富地完成复杂任务,同时也有利于编程方式实现自动化任务。

  3. 尽量避免与用户交互。这样也是为了易于以编程方式实现自动化任务。

  4. 使用文本文件保存配置信息。这样可以通过简单的文本文件的修改就可以实现软件的不同配置,更为简洁灵活。

原创文章,作者:N24_fynl,如若转载,请注明出处:http://www.178linux.com/55587

(0)
N24_fynlN24_fynl
上一篇 2016-10-29
下一篇 2016-10-29

相关推荐

  • 马哥教育网络班22期+第六周课程练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; ]# cp -v  /etc/rc.d/rc.sysinit /tmp/    `/etc/rc.d/rc.sysinit' -> `/tmp/rc.sysinit&…

    Linux干货 2016-10-17
  • 编译内核——制作最适合自己系统的内核

    编译内核: ·程序包的编译安装:         ./configure ,make ,make install ·前提:开发环境(开发工具、开发库),头文件:/usr/include ·开源:源代码–>可执行格式    &nbsp…

    Linux干货 2016-09-11
  • 马哥教育网络班22期第一周课程练习

    1.描述计算机的组成及其功能     计算机的组成部分分为硬件部分与软件部分         硬件部分: I/O设备 + 运算器 + 存储器 + 控制器       &n…

    Linux干货 2016-08-15
  • 常用磁盘阵列说明

    一.什么是磁盘阵列     磁盘阵列英文全名为RedundantArrays of Inexpensive Disks(RAID),即容错廉价磁盘阵列。     RAID可以将一些容量较小的磁盘通技术手段组成一个容量较大的磁盘设备,而且不只是容量上的提升,RAID还可以提供数据保…

    Linux干货 2015-04-02
  • Linux的任务计划

    Linux的任务计划         我们在使用系统的过程中,经常需要在以后的某个时间点执行一个任务,而我们又不在机器旁边的时候,比如在半夜时服务器访问的用户很少,宽带资源很充足的时候,要去镜像软件包、重启服务器(虽然Linux很稳定)等,或者需要服务器在每天的特定时间去备份数据…

    2017-03-19
  • class9 bash编程基础(一)

    一、编程基础 程序:指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序:提供了编程能力,解释执行 程序的执行方式 计算机:运行二进制指令; 编程语言: 低级:汇编 高级: 编译:高级语言–> 编译器–> 目标代码   &n…

    Linux干货 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 17:15

    总结的不错,希望能熟知Linux的哲学思想,加油!