Linux介绍

Linux简介


Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的X Window之类的程序。除了一部分专家之外,大多数人都是直接使用Linux发行版,而不是自己选择每一样组件或自行设置。 
严格来讲,术语Linux只表示操作系统内核本身,但通常采用Linux内核来表达该意思。Linux则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将该组合系统命名为GNU/Linux,但Linux不属于GNU计划,这个名称并没有得到社区的一致认同。 
Linux最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统。目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux可以运行在服务器和其他大型平台之上,如大型主机和超级计算机。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,包括最快的前10名超级电脑运行的都是基于Linux内核的操作系统。Linux也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上。 
通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器、LibreOffice办公软件、GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个匹配自己需求的Linux发行版。

目录

  • 命名争论

  •  历史 
        UNIX 
        GNU 
        BSD 
        MINIX 
        MINIX与Linux 
        Linux 
        发展现状 

  • 系统架构 

  • Linux发行版 
        组成 
        流行的版本

  •  评价 
        正面 
        负面

命名争论


“GNU/Linux”是GNU计划的支持者与开发者,特别是其创立者理查德·斯托曼对于以Linux内核为内核并包含了GNU操作系统软件包的操作系统的称呼。由于此类操作系统使用了众多GNU程序,其中包括Bash(Shell程序)、库、编译器(Compiler)等等的许多其他程序。理查德·斯托曼认为应该将该操作系统称为“GNU/Linux”比较恰当。 
一个 CD-ROM 的提供商发现在他们的“Linux 发行版”中,GNU 软件所占最大的比重,大约占全部源代码的28%,且还包括一些关键的部件,如果没有这些部件,系统就无法工作。而Linux 本身占大约3%。正因为如此,GNU计划的开创者理查德·马修·斯托曼推荐将Linux操作系统称为GNU/Linux或GNU+Linux。但多数人仍然习惯性地使用“Linux”。 
Linux社区中的一些成员,如埃里克·雷蒙、林纳斯·托瓦兹等人,偏好Linux的名称,认为Linux朗朗上口,短而好记,拒绝使用“GNU/Linux”作为操作系统名称。并且Linux并不属于GNU计划的一部分,斯托曼直到1990年代中期Linux开始流行后才要求更名。 
有部分Linux发行版,如Debian,采用了“GNU/Linux”的称呼。但大多数商业Linux发行版依然将操作系统称为Linux。而有些人则认为“操作系统”一词指的只是系统的内核(Kernel),其他程序都只能算是应用软件,因而,该操作系统应叫Linux,但Linux系统包是在Linux内核的基础上加入各种GNU软件包集合而成的。 
在这两个主要名称之外,也有其他名称的提议。1992年,Yggdrasil Linux主张命名为Linux/GNU/X,因为除了GNU计划软件之外,很多Linux还采用了X视窗系统。

历史


UNIX 
UNIX操作系统(英语:UNIX),是美国AT&T公司贝尔实验室于1969年完成的操作系统。最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie),道格拉斯·麦克罗伊(Douglas McIlroy),和乔伊·欧桑纳于1969年在AT&T贝尔实验室开发。于1971年首次发布,最初是完全用汇编语言编写,这在当时是一种普遍的做法。后来,在1973年用一个重要的开拓性的方法,Unix被丹尼斯·里奇用编程语言C(内核和I/O例外)重新编写。高级语言编写的操作系统具有更佳的兼容性,能更容易地移植到不同的计算机平台。

GNU

Richard_Matthew_Stallman_cropped.jpeg

理查德·马修·斯托曼(Richard M. Stallman),GNU计划的创立者。

1983年,理查德·马修·斯托曼创立GNU计划。这个计划有一个目标,是为了发展一个完全自由的类Unix操作系统。自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并且在1989年撰写GPL。1990年代早期,GNU开始大量的产生或收集各种系统所必备的组件,像是——库、编译器、调试工具、文本编辑器、网页服务器,以及一个Unix的用户界面(Unix shell)——但是像一些底层环境,如硬件驱动、守护进程运行内核(kernel)仍然不完整和陷于停顿,GNU计划中是在马赫微核(Mach microkernel)的架构之上开发系统内核,也就是所谓的GNU Hurd,但是这个基于Mach的设计异常复杂,发展进度则相对缓慢。林纳斯·托瓦兹曾说过如果GNU内核在1991年时可以用,他不会自己去写一个。

BSD 
386BSD因为法律问题直到1992年还没有发布,NetBSD和FreeBSD是386BSD的后裔,早于Linux。林纳斯·托瓦兹曾说,当时如果有可用的386BSD,他就可能不会编写Linux。

MINIX 
MINIX是一个轻量小型并采用微内核(Micro-Kernel)架构的类Unix操作系统,是安德鲁·斯图尔特·塔能鲍姆为在计算机科学用作教学而设计的。

MINIX与Linux 
1991年,林纳斯·托瓦兹在赫尔辛基大学上学时,对操作系统很好奇。他对MINIX只允许在教育上使用很不满(在当时MINIX不允许被用作任何商业使用),于是他便开始写他自己的操作系统,这就是后来的Linux内核。

Linux 
在1991年,林纳斯·托瓦兹开始在MINIX上开发Linux内核,为MINIX写的软件也可以在Linux内核上使用。后来使用GNU软件代替MINIX的软件,因为使用从GNU系统来的源代码可以自由使用,这对Linux的发展是有益。使用GNU GPL协议的源代码可以被其他项目所使用,只要这些项目使用同样的协议发布。为了让Linux可以在商业上使用,林纳斯·托瓦兹决定更改他原来的协议(这个协议会限制商业使用),以GNU GPL协议来代替。之后许多开发者致力融合GNU元素到Linux中,做出一个有完整功能的、自由的操作系统。 
Linux的第一个版本在1991年9月被大学FTP server管理员Ari Lemmke发布在Internet上,最初Torvalds称这个内核的名称为”Freax”,意思是自由(”free”)和奇异(”freak”)的结合字,并且附上”X”这个常用的字母,以配合所谓的类Unix的系统。但是FTP服务器管理员嫌原来的命名“Freax”的名称不好听,把内核的称呼改成“Linux”,当时仅有10000行程序码,仍必须运行于Minix操作系统之上,并且必须使用硬盘开机;随后在10月份第二个版本(0.02版)发布,同时这位芬兰赫尔辛基的大学生在comp.os.minix上发布一则消息 
Hello everybody out there using minix- I’m doing a (free) operation system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. 
1994年3月,Linux1.0版正式发布,Marc Ewing成立Red Hat软件公司,成为最著名的Linux经销商之一。

Unix_timeline.en.svg.png

Unix & Linux历史源流

早期Linux的开机管理程序(boot loader)使用LILO(Linux Loader),早期的LILO存在着一些难以容忍的缺陷,例如无法识别1024柱面以后的硬盘空间,后来的GRUB(GRand Unified Bootloader)克服这些缺点,具有‘动态搜索内核文件’的功能,可以让用户在开机的时候,自行编辑开机设置系统文件,通过ext2或ext3文件系统中加载Linux Kernel(GRUB通过不同的文件系统驱动可以识别几乎所有Linux支持的文件系统,因此可以使用很多文件系统来格式化内核文件所在的扇区,并不局限于ext文件系统)。 
Linux的标志和吉祥物是一只名字叫做Tux的企鹅,标志的由来是因为Linus在澳洲时曾被一只动物园里的企鹅咬了一口,便选择企鹅作为Linux的标志。更容易被接受的说法是:企鹅代表南极,而南极又是全世界所共有的一块陆地。这也就代表Linux是所有人的Linux。

发展现状 
今天由Linus Torvalds带领下,众多开发共同参与开发和维护Linux内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持Linux内核的GNU组件。一些个人和企业开发的第三方的非GNU组件也提供对Linux内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。Linux社区或企业都推出一些重要的Linux发行版,包括Linux内核、GNU组件、非GNU组件,以及其他形式的的软件包管理系统软件。


系统架构


基于Linux的系统是一个模块化的类Unix操作系统。Linux操作系统的大部分设计思想来源于20世纪70年代到80年代的Unix操作系统所创建的基本设计思想。Linux系统使用宏内核,由Linux内核负责处理进程控制、网络,以及外围设备和文件系统的访问。在系统运行的时候,设备驱动程序要么与内核直接集成,要么以加载模块形式添加。 
Linux具有设备独立性,它内核具有高度适应能力,从而给系统提供了更高级的功能。GNU用户界面组件是大多数Linux操作系统的重要组成部分,提供常用的C函数库,shell,还有许多常见的Unix实用工具,可以完成许多基本的操作系统任务。大多数Linux系统使用的图形用户界面创建在X窗口系统之上,由X窗口(XWindows)系统通过软件工具及架构协议来创建操作系统所用的图形用户界面。 
已安装Linux操作系统包含的一些组件: 

  •         启动程序——例如GRUB或LILO。该程序在计算机开机启动的时候运行,并将Linux内核加载到内存中。

  •         init程序。init是由Linux内核创建的第一个进程,称为根进程,所有的系统进程都是它的子进程,即所有的进程都是通过init启动。init启动的进程如系统服务和登录提示(图形或终端模式的选择)。 

  •           软件库包含代码,可以通过运行的进程。在Linux系统上使用ELF格式来执行文件,负责管理库使用的动态链接器是“ld-linux.so”。Linux系统上最常用的软件库是GNU C库。

  •          用户界面程序,如命令行shell或窗口环境。


Linux发行版


Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。有些发行版考虑到容量大小而没有预装 X Window,而使用更加轻量级的软件,如:busybox, uclibc 或 dietlibc。现在有超过300个Linux发行版(Linux发行版列表)。大部分都正处于活跃的开发中,不断地改进。 
由于大多数软件包是自由软件和开源软件,所以Linux发行版的形式多种多样——从功能齐全的桌面系统以及服务器系统到小型系统 (通常在嵌入式设备,或者启动软盘)。除了一些定制软件 (如安装和配置工具),发行版通常只是将特定的应用软件安装在一堆函数库和内核上,以满足特定用户的需求。 
这些发行版可以分为商业发行版,比如Fedora(Red Hat)、openSUSE(Novell)、Ubuntu(Canonical公司)和Mandriva Linux;和社区发行版,它们由自由软件社区提供支持,如Debian和Gentoo;也有发行版既不是商业发行版也不是社区发行版,其中最有名的是Slackware。

组成 
一个典型的Linux桌面发行版包括一个Linux 内核,来自GNU的工具和库,和附加的软件、文档,还有一个窗口系统,窗口管理器,和一个桌面环境。大部分包括的软件是自由软件/开源软件,它们同时以二进制可执行文件和源代码形式发布,只要用户愿意,还允许修改和重新编译源代码。还有一些可能是专有软件而不提供源代码。 
许多发行版像其他现代操作系统一样提供了一个安装系统定制的发行版像Gentoo Linux, T2 和 Linux From Scratch 提供所有软件的源代码以及最基本的内核、编译器、定制工具、安装工具等的可执行文件。安装程序针对用户不同的CPU编译成不同的文件。

流行的发行版


评价

正面 

  • 开放源代码的Linux可以让知识延续下去,新兴的软件公司可以从开放源代码上快速、低价的创建专业能力,丰富市场的竞争,防止独霸软件巨兽的存在。

  • 个人使用很少有版权问题,绝大多数都是免费使用,几乎无所谓盗版问题。

  • 新的Linux发行版大多数软件都有服务器的服务,只要点击就可以自动下载、安装经过认证的软件,不需要到市面购买、安装。

  • Linux学习的投资有效时间较长。旧版软件、系统都还是存在,有源代码可以派生、分支,维护周期普遍比Windows长很多。就算被放弃,还是可以凭借源代码派生。新的软件更新发展多样化,容易养成用户习惯掌握原理,而不是养成操作习惯。

  • 强大的Shell脚本支持,容易组合出匹配需求的环境或创造自动程序。

  • 默认安全设置相对于目前主流的Windows操作系统安全很多。Windows操作系统为了非专业用户降低了默认安全性的设置,导致系统容易受到木马、病毒的侵害。盗版的Windows更糟糕,可能随盗版操作系统捆绑木马恶意程序,部分默认超级用户(Administrator)登录、关闭安全更新等问题导致安全性更差。

负面

  • BSD的开发人员曾经批评过Linux内核开发人员过于重视新功能的添加而不是踏踏实实的把代码写好、整理好。

  • Solaris系统管理员则认为SMFZFSDTrace等Solaris特有工具使得Solaris比Linux更加优秀。

  • Minix爱好者认为微内核是将来技术发展的方向,Linux在技术上是落伍陈旧的。(参见塔能鲍姆-林纳斯辩论

  • 软硬件支持性较差。大部分的软、硬件厂商没有或者不会优先开发Linux平台的版本,或者Linux平台的版本功能较少,致使可用的应用程序、硬件周边支持性相较于WindowsMac平台差。

  • 相当多的发行版(超过200个以上),使程序开发者无法针对所有发行版做测试,使用Linux平台的应用软件安装在非主流发行版可能遭遇预料之外的问题或甚至于无法使用。

  • Linux系统及相关应用软件主要是由黑客程序员及其它Linux爱好者共同合作开发出来的,所以缺少了商业软件基于商业利益而调整操作界面使之更适合不同用户的行为。对Linux使用方式的不习惯,以及不同软件操作方式缺乏一致性使得用户产生Linux系统难以使用的感受。

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

(0)
上一篇 2016-10-28 22:15
下一篇 2016-10-28 23:49

相关推荐

  • 关于大型网站技术演进的思考(十)–网站静态化处理—动静整合方案(2)

    原文出处: 夏天的森林    上篇文章我简要的介绍了下网站静态化的演进过程,有朋友可能认为这些知识有点过于稀松平常了,而且网站静态化的技术基点也不是那么高深和难以理解,因此它和时下日新月异的web前端技术相比,就显得不伦不类了。其实当我打算写本系列的之前我个人觉得web前端有一个点是很多人都知道重要,但是有常常低估它作用的,那就…

    2015-03-11
  • 第三周-作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     ~]# who | cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。     ~]# who |  t…

    Linux干货 2016-12-14
  • Ansible Conditionals & Loops

     一、条件语句     条件判断语句,就是根据某些变量的值来控制Ansible的执行流程。控制某些主机执行某些操作与不执行某些操作。根据某些操作结果,判断是否执行其它操作等等。     Ansible的条件判断语句只有 when 语句,结合变量使用才能显示出它的价值。when的用…

    Linux干货 2015-11-21
  • 文本处理工具命令使用以及文件权限管理

    一 sort uniq wc cut tr 等文本处理工具的基本用法 1. 通过who命令查看当前登录了哪些用户,并通过uniq或sort -u命令将重复的行只显示一次 [root@Linuxprobe ~]# who | cut -d’ ‘ -f1 | sort -u 目前查看系统有两个用户登录 harrycai root [root@Linuxprobe…

    Linux干货 2017-08-13
  • linux 学习笔记

    第二周

    Linux干货 2018-03-16
  • Linux Services and Security–part2

    一、请描述一次完整的http请求处理过程 (1).建立或处理连接:接收请求或拒绝请求; (2).接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程; 接收请求的模型: 并发访问响应模型: 单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应; 多进程I/O结构:并行启动多个进程,每个进程响应一个请…

    Linux干货 2017-11-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 16:03

    加入了一些自己的理解,不错,希望可以将这段发展史熟知,加油,加油!