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 21:34
下一篇 2016-10-26 21:42

相关推荐

  • 初学Linux之shell脚本编程

    shell程序的特点;shell脚本的结构和格式要求;变量;算术运算和逻辑运算;条件测试;防止扩展和shell登录的相关配置文件

    2018-01-01
  • shell编程及rpm包

    1. shell编程    case 实现条件判断, 无论是case后面还是值后面都是没有任何标点符号的。    case支持通配符, 如果想要表示其他的话, 可以使用*放到最后。 用*表示其他。   2. 用tar打包的文件或则目录,这些文件或则目录的的ACL(访问控制列表)权限会丢失。…

    Linux干货 2016-08-18
  • N26第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。        who -i或-u 显示闲置时间, 若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串   &n…

    Linux干货 2017-01-16
  • 测试so接口函数的脚本 [python]

    下面是一个测试solib库中调用函数的测试脚本,但该脚本还存在这一些问题,我目前无法理解和解决; 问题: 1.我定义了logging采用日志滚动的方式,写日志,并且每个日志的大小是20M,但测试结果发现日志连1M都没到就开始轮转了,并且在轮转过程中,还出现logging写日志,却发现,日志轮转了,结果竟然报了,轮转日志不存在。 Traceback (most…

    Linux干货 2016-01-05
  • 文本处理工具Sed及VIM的使用

    1.文本处理工具Sed   Stream Editor 行编辑器                            图1-1 sed帮助手册  用法:      se…

    Linux干货 2016-08-10
  • 基于ansible role实现LAMP平台批量部署

    前言 作为运维人员,当面对几十台或上百台服务器需要修改某个参数或部署某个平台,你将从何入手呢?ansible的出现很好的解决了这一困扰,ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。本文带来的是基于Ansible Role…

    Linux干货 2015-06-11

评论列表(1条)

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

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