1. 什么是Linux

    如果以前从没有接触过linux, 你可能会对为什么会存在这么多不同的linux发行版有些困惑. 在看linux软件包时, 你肯定听过发行版, LiveCD和GNU之类的等等术语, 也肯定摸不着头脑. 第一次接触linux,想理解会有些困难.  我们就先了解下linux系统内部结构的一些信息.

    首先, linux可划分为以下四部分:

    1. linux内核;

    2. GNU工具组件;

    3. 图形化桌面环境;

    4. 应用软件;


    在linux系统里, 这四部分中的每一个部分都扮演着一个特别的角色. 如果将他们分开来, 每一部分都没太大的作用.  说明了各部分是互相协作构成整个linux系统的.

   

    下面将介绍这四部分, 然后了解他们是如何一起协作构成一个完整的linux系统的.


    1. linux内核

    内核: linux系统的核心就是内核. 内核控制着计算机系统上的所有硬件和软件: 必要时分配硬件, 有需要时执行软件.

    说到内核, 肯定听说过 Linus Torvalds.那时候Linus 上大学, 大学期间开发了第一版linux内核. 起初他只是希望Linux成为Unix操作系统的一份副本, 因为当时Unix操作系统在很多大学都很流行.

    当Linus完成开发后, 他将linux内核发布到了互联网社区并征求改进意见. 这个简单的动作引发了计算机操作系统领域内的一场革命. 很快, Linus就收到了来自世界各地的学生和专业程序员的各种建议.

    如果linux内核允许任何人修改内核程序代码, 那么随之而来的将是完全的混乱. 简单起见, Linus担当起了所有改进建议的把关者. 能否将建议代码放进内核完全取决于Linus的决定. 时至今日, 这种概念依然在linux内核代码开发过程中继续使用, 所不同的是, 现在是由一组开发人员来做这件事, 而不再是Linus一个人.

    内核基本负责以下四项主要功能:

  • 系统内存管理

  • 软件程序管理

  • 硬件设备管理

  • 文件系统管理


    2. GNU工具链

    除了由内核来控制硬件设备外, 操作系统还需要工具链来执行一些标准功能, 比如控制文件和程序. 当Linus创建Linux系统内核时, 是没有系统工具链运行其上的. 然而他很幸运, 就在他开发linux内核的同时, 有一组人正在互联网上共同努力, 模仿Unix操作系统开发一系列标准的计算机系统工具.

    GNU组织(GNU代表GNU's Not Unix) 开发了一套完整的Unix工具链, 但没有可以运行它们的内核系统. 这些工具链是在开源软件(Open Source Software, OSS)的软件开发理念下开发的.

    开源软件理念允许程序员开发软件并将其免费发布. 任何人都可以使用, 修改该软件, 或将该软件集成进自己的系统, 而无需支付任何授权费用. 将Linus的linux内核和GNU操作系统工具链整合起来, 就可以创造一个完整的, 功能丰富的免费操作系统.

    尽管通常我们将Linux内核和GNU工具链的结合体称为Linux, 你也会在互联网上看到一些Linux纯粹主义者将其称为GNU/Linux系统来表彰GNU组织为此所作的贡献.

    

    1) 核心GNU工具链

    GNU项目一开始主要是为Unix系统管理员设计的, 用以提供一个类Unix环境. 这个目标导致这个项目移植了很多Unix系统通用的命令行工具. 为Linux系统提供的一组核心工具被称为coreutils(core utils)软件包

    GNU coreutils软件包由3部分构成:

  • 用以处理文件的工具

  • 用以操作文本的工具

  • 用以管理进程的工具

    这三组主要工具中的每一组都包含一些对Linux系统管理员和程序员至关重要的工具.

    

    2)  shell

    GNU/Linux  shell是个交互式工具. 它为用户提供了启动程序, 管理文件系统上的文件以及管理运行在Linux系统上的进程的途径. shell的核心是命令行提示符. 命令行提示符是shell的交互部分. 它允许你输入文本命令, 之后将解释命令并在内核中执行.

    shell包含了一组内置命令, 你可以用这些命令来完成一写操作, 例如复制文件, 移动文件,重命名文件以及显示和终止系统上正运行的程序. shell也允许你在命令行提示符中输入程序的名称, 它会将程序的名称传递给内核以启动它.

    你也可以将shell命令放入文件中作为程序执行. 这些文件被称作shell脚本. 你在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行. 这为创建那种需要把几个命令放在一起来工作的工具提供了便利.

    在LInux系统上, 通常有好几种Linux shell可用. 不同的shell有不同的特性, 有些更利于创建脚本, 有些更利于管理进程. 所有LInux发行版默认的shell基本上都是bash shell. bash shell作为标准Unix shell – Bourne shell (沿用创建者的名称)的替代, 由GNU项目开发的. bashshell的名称就是针对这个Bourne shell的文字游戏, 称为Bourne again shell.

    除了bash shell外, 其他几种Linux中常见的不同shell:

    ash        运行在内存受限环境中简单的, 轻量级shell, 但于bash shell完全兼容

    korn      与Bourne shell兼容的编程shell, 但支持一些高级的编程特性, 比如关联数组和浮点运算

    tcsh       将C语言中的一些元素引入到shell脚本中的shell

    zsh        将bash, tcsh和korn的特性引入, 同时提供高级编程特性, 共享历史文件和主题化提示符的高级shell   


    大多数Linux发行版包含多个shell, 虽然它们通常会采用其中一个作为默认shell. 如果你的Linux发行版包含多个shell, 尽情尝试不同shell, 看看哪个能满足你的需要.


3. 图形化桌面环境 – Linux桌面环境

    在Linux的早期(20世纪90年代早期), 系统上可用的仅是一个简单的与Linux操作系统交互的文本界面(类似msdos). 这个文本界面允许系统管理员运行程序, 控制程序的执行以及在系统中移动文件.

    随着Microsoft Windows的普及, 电脑用户期望的就不仅仅是对着老式的文本界面工作了. 这点推动了OSS社区的更多开发活动, Linux图形化桌面环境出现了.

    Linux一直都以可用多种方式来完成工作而声名在外. 在图形化桌面上更是如此. Linux有各种图形化桌面可供选择.

    1)    X windows系统

    有两项基本组件能决定你的视频环境: 显卡和显示器. 要在电脑上显示绚丽的画面, Linux软件就得知道如何来连接它们. X windows软件是图形显示的核心元素.

    X windows 软件是直接和pc上的显卡以及显示器一起工作的底层软件. 它控制着Linux程序如何在电脑上显示出绚丽的窗口和画面.


    核心的X windows软件可以产生图形化显示环境, 但仅此而已. 虽然对于运行独立应用这已经足够, 但是日常pc使用中却并不是那么有用. 它没有桌面环境共用户操作文件或开启程序. 为此, 你需要一个在 X windows系统软件之上的桌面环境

    2) KDE 桌面

    KDE(K Desktop Environment, K桌面环境) 最初于1996年作为开源项目发布. 它会生成一个类似于Microsoft Windows的图形化桌面环境. 如果你是Windows用户, KDE集成了所有你熟悉的功能.

    3) GNOME桌面

    GNOME(The GNU Network Object Model Environment, GNU网络对象模型环境)是另一个流行的Linux桌面环境. GNOME于1999年首次发布, 现已成为许多Linux发行版(Red Hat Linux)默认桌面环境.

    4)其它桌面…..


Linux发行版

    
   
 到此为止, 你已经了解了构成完整Linux系统所需要的4个关键部件, 你可能在考虑要怎样才能把他们放在一起构建一个Linux系统. 幸运的是, 已经有人为你做好了这些了.

    我们将完整的Linux系统包称为发行版. 有各种不同的Linux发行版来满足可能存在的各种运算需求. 大多数发行版是为某个特定用户群定制的, 比如商业用户, 多媒体爱好者, 软件开发人员或者普通家庭用户. 每个定制的发行版都支持特定功能所需的各种软件包, 比如为多媒体爱好者准备的音频和视频编辑软件, 为软件开发人员准备的编译器和集成开发环境.

    不同的Linux发行版通常归类为三种:

  • 完整的核心Linux发行版

  • 专业发行版

  • LiveCD测试发行版

   

   1. 核心linux发行版

    核心linux发行版含有内核, 一个或多个图形化桌面环境以及预编译号的几乎所有能见到的Linux应用. 它提供了一站式完整Linux安装.

    2. 专业发行版

    Linux发行版的一个子群开始出现了. 它们通常基于某个主流发行版, 但仅包含主流发行版中一小部分用于某种特定用途的程序. 除了提供专业软件外(比如仅为商业用户提供的办公应用). 专业发行版还尝试通过自动检测和自动配置来帮助新手安装Linux. 这让安装Linux变得更容易.

    3.Linux LiveCD

    Linux世界中一个相对比较新的现象是可引导启动的LInux CD发行版的出现. 它允许不安装Linux就可以看看Linux系统的什么样.


总结:  Linux= 内核+GNU/Linux shell+软件+图形(可选)

           shell是很重要


以上是个人学习中比较容易理解的Linux定义

        

    

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

(0)
vt.leevt.lee
上一篇 2016-10-26
下一篇 2016-10-26

相关推荐

  • 2016/08/11:初涉shell脚本编程

    感悟 :    经过对文本处理工具grep,sed等内容的,以及vim文本编辑器的学习,马不停蹄的又进行了对shell脚本的学习。对shell脚本的认识是可以保存在本地,用的时候只要执行相关脚本,简短的命令就可以完成操作,可以用来应对日常重复性工作,有效提高系统管理员的效率,避免在重复性工作上花费不必要的时间。 *************…

    Linux干货 2016-08-16
  • linux内核及centos系统启动流程

    Linux组成 Linux: kernel+rootfs(根文件系统) kernel功能: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc  库:函数集合, function, 调用接口(头文件负责描述)      过程调用:proce…

    Linux干货 2016-09-10
  • linux基础入门之二

    linux基础入门之二 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.cp文件复制: 常用选项: -i:交互式复制,即覆盖之前提醒用户确认; -f:强制覆盖目标文件; -r, -R:递归复制目录; -d:复制符号链接文件本身,而非其指向的源文件; -a:-dR –…

    Linux干货 2016-09-26
  • 马哥教育网络班22期第一周课程练习2-未闻花名

    语法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 参数: -f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p…

    Linux干货 2016-08-15
  • locate,find文件查找

    locate | find *** locate 路径中包含字符串 即匹配;      -n#     指定显示结果前几个      -b      只匹配路径名中的基名      &nbs…

    Linux干货 2016-08-15
  • 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0、虚拟化、云计算、大数据、微架构、DevOps再到今天的容器Docker与Mesos。 Docker的出现方便了应用的测试、部署、与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行。Docker的轻量级、快…

    Linux干货 2016-07-10

评论列表(1条)

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

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