Linux学习-01-Linux介绍

1 Linux简介

1.1 操作系统介绍

  • 操作系统(Operating System,OS):也是软件的一种,是硬件基础上的第一层软件,位于硬件和应用程序之间的底层的软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等),除了能为应用程序提供支持,还会监控管理的应用程序,具有双面性。。

  • 计算机是一台设备,按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成:

    • 硬件是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板等;
    • 软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、Android 等操作系统,以及浏览器等应用程序。
  • 操作系统控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:

    • 文件系统:提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
    • 设备驱动程序:提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。
    • 用户接口:操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;
    • 系统服务程序:当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。操作系统在给其他软件提供支持的同时也管控着软件的运行。
      Linux学习-01-Linux介绍_第1张图片
  • 当前主流服务器和 PC 端操作系统有 Linux、Windows、UNIX 等,手机操作系统有 Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。

1.2 Linux介绍

  • Linux( Linux is not Unix):是一款自由和开放源码的类 UNIX 操作系统。Linux与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件,Unix 系统是 Linux 系统的前身,具备很多优秀特性。Linux内核最初是由芬兰人林纳斯.托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。在设计之初,就是基于 Intel x86 系列 CPU 架构计算机的,它是一个基于POSIX(可移植操作系统接口)和UNIX的多用户(root…)、多任务、支持多线程和多CPU的操作系统,它是由世界各地成千上万的程序员设计和开发实现的,当初开发 Linux 系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类 Unix 操作系统兼容产品。

  • Linux 初衷是要替代 UNIX,Linux 系统主要被应用于服务器端、嵌入式开发和 PC 桌面 3 大领域,其中服务器端领域是重中之重。例如,我们熟知的大型开源项目,大型、超大型互联网企业(百度、腾讯、Sina、阿里等)都在使用 Linux 系统作为其服务器端的程序运行平台,全球及国内排名前 1000 的 90% 以上的网站使用的主流系统都是 Linux 系统。

  • Linux能运行主要的UNlX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unⅸ以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

  • Linux 特点:

    • Linux 不仅是免费的,更是开源的,任何人都可以获得其代码并根据自己的需求进行修改。事实上,这已经孵化出专属 Linux 各发行版的巨大生态系统,我们将在"Linux发行版本"一节中展开探讨。
    • Linux 与 Unix 系统兼容,该系统的构建采用了一些与 UNIX 操作系统相同的技术,具备 Unix 几乎所有的优秀特性(系统的稳定性和安全性尤为突出)。
    • 和其他操作系统相比,Linux 更容易安装,且不会收到任何商业化版本的制约。
    • Linux 让开展各种实际有用且具有创造性的事情成为可能。例如,我们可以在一个U盘上装载 Linux 的自生系统引导映像(live boot image),启动一台硬盘已经崩溃的计算机,之后查找并解决该问题。或者,因为 Linux 是一个真正的多用户操作系统,它具有非常好的私密性和稳定性,整个团队可以同时从本地或远程登录进行工作。
    • Linux 提供了复杂的软件包管理系统,可以放心地安装和维护每一个在线资源库中的软件应用。
  • Linux系统的优点:

  • 相比 Windows 系统,Linux 系统有更好的稳定性,macos基于linux

  • 拥有大量的可用软件及免费软件,如LA/NMP、Samba,构建成本低廉,性能出色。但是在娱乐方面是差强人意的

  • 良好的可移植性及灵活性:几乎支持所有的 CPU 平台,这使得它便于裁剪和定制。我们可以把 Linux 放在 U 盘、光盘等存储介质中,也可以在嵌入式领域广泛应用。可以不安装就使用Linux 系统,则可以在网上下载 Linux 镜像,刻成光盘放入光驱或者用虚拟机软件直接载入镜像文件,设置 CMOS/BIOS 为光盘启动,系统就会自动载入光盘文件,启动进入 Linux 系统

  • 优良的稳定性和安全性

  • 支持几乎所有的网络协议及开发语言

1.3 Linux和UNIX 区别

  • UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,后来的 Windows 和 Linux 都参考了 UNIX。

  • UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明,源于 Multics 工程计划(一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统)

说明:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。

  • 肯•汤普森和丹尼斯•里奇发明了传说中的C语言,是一种适合编写系统软件的高级语言(可移植性),它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰

  • UNIX 系统版本,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等

  • 虽然Linux 源于UNIX有很多的共通之处,但二者也有两个大的区别:

    1. UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
    2. UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。
  • UNIX/Linux系统结构:UNIX/Linux 系统可以抽象为 3 个层次。底层是 UNIX/Linux 操作系统,即系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层。
    Linux学习-01-Linux介绍_第2张图片

  • 内核层:是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

  • Shell层:是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

  • 应用层:提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。

  • 现在大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)的用户界面;而在 Linux 上广泛应用的有 Gnome、KDE 等。

  • X Window 与微软的 Windows 图形环境有很大的区别:

    • UNIX/Linux 系统与 X Window 没有必然捆绑的关系,也就是说,UNIX/Linux 可以安装 X Window,也可以不安装;而微软的 Windows 图形环境与内核捆绑密切。
    • UNIX/Linux 系统不依赖图形环境,依然可以通过命令行完成 100% 的功能,而且因为不使用图形环境还会节省大量的系统资源。
  • 作为服务器部署,绝大多数 Linux 并不安装或并不启用图形环境

1.4 Linux发行版本类型

  • jvm对于不同的操作系统内核时交互式不同的。
  • Linux发行版:将Linux内核与应用软件做一个打包,以Linux为核心的操作系统软件包。从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将 Linux 内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
  • Linux 的各个发行版本使用的是同一个 Linux 内核,在内核层不存在什么兼容性问题,每个版本的不同在于在发行版本的最外层(由发行商整合开发的应用)才有所体现。
  • Linux 的发行版本可以大体分为两类:
    • 商业公司维护的发行版本,以著名的 Red Hat 为代表;
    • 社区组织维护的发行版本,以 Debian 为代表。
      Linux学习-01-Linux介绍_第3张图片
  • 目前市面上较知名的发行版有:Ubuntu、RedHat(红帽认证工程师)、CentOS、Debian、Fedora、.SuSE、OpenSUSE、Arch Linux、SolusoS等。

Ubuntu 基于知名的 Debian Linux 发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的 Linux 发行版本,而且 Ubuntu 的所有发行版本都免费提供。

Red Hat 公司的产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)、Fedora Core(由 Red Hat 桌面版发展而来,免费版本)。

CentOS 基于 Red Hat Enterprise Linux 源代码重新编译、去除 Red Hat 商标的产物,各种操作使用和付费版本没有区别,且完全免费。缺点是不向用户提供技术支持,也不负任何商业责任。有实力的公司可以选择付费版本

SuSE Linux 以 Slackware Linux 为基础,吸取了 Red Hat Linux 的很多特质,可以非常方便地实现与 Windows 的交互,硬件检测非常优秀,拥有界面友好的安装过程、图形管理工具,对于终端用户和管理员来说使用非常方便。

Gentoo:采用源码包编译安装操作系统,安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。快速、设计干净而有弹性,高度的自定制性(基于源代码的发行版)。尽管安装时可以选择预先编译好的软件包,但是大部分使用 Gentoo 的用户都选择自己手动编译。这也是为什么 Gentoo 适合比较有 Linux 使用经验的老手使用。但是编译软件需要消耗大量的时间

  • Kali linux:安全渗透测试使用hack,红帽,漏洞相应平台。补天平台
  • Linux 发行版及特点
版本名称 网 址 特 点 软件包管理器
Debian Linux www.debian.org 开放的开发模式,且易于进行软件包升级 apt
Fedora Core www.redhat.com 拥有数量庞人的用户,优秀的社区技术支持. 并且有许多创新 up2date(rpm),yum (rpm)
CentOS www.centos.org CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞 rpm
SUSE Linux www.suse.com 专业的操作系统,易用的 YaST 软件包管理系统 YaST(rpm),第三方 apt (rpm)软件库(repository)
Mandriva www.mandriva.com 操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持 NTFS 分区的大小变更 rpm
KNOPPIX www.knoppix.com 可以直接在 CD 上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用 apt
Gentoo Linux www.gentoo.org 高度的可定制性,使用手册完整 portage
Ubuntu www.ubuntu.com 优秀已用的桌面环境,基于 Debian 构建 apt
  • Linux应用领域:今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux+Apache+MySQL+PHP)或(LNMP Linux+Nginx+MySQL+PHP)
  • 发行版使用特点:
  1. 如果你需要的是一个服务器系统,而且已经厌烦了各种 Linux 的配置,只是想要一个比较稳定的服务器系统,那么建议你选择 CentOS 或 RHEL。
  2. 如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大价钱购买商业软件,不想自己定制,也不想在系统上浪费太多时间,则可以选择 Ubuntu。
  3. 如果你想深入摸索一下 Linux 各个方面的知识,而且还想非常灵活地定制自己的 Linux 系统,那就选择 Gentoo 吧,尽情享受 Gentoo 带来的自由快感。
  4. 如果你对系统稳定性要求很高,则可以考虑 FreeBSD。
  5. 如果你需要使用数据库高级服务和电子邮件网络应用,则可以选择 SuSE。
  • 目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎。
  • 巴西联邦政府由于支持Linux而世界闻名。

  • 有新闻报道俄罗斯军队自己制造的Linux发布版的,做为G.H.ost项目已经取得成果。

  • 印度的Kerala联邦计划在向全联邦的高中推广使用Linux。

  • 中国为取得技术独立,在龙芯处理器中排他性地使用Linux。

  • 在西班牙的一些地区开发了自己的Linux发布版,并且在政府与教育领域广泛使用,如Extremadura地区的gnuLinEx和Andalusia地区的Guadalinex。

  • 葡萄牙同样使用自己的Linux发布版Caixa Magica,用于Magalh?es笔记本电脑和e-escola政府软件。

  • 法国和德国同样开始逐步采用LiuX。

  • Linux vs Windows
比较 Windows Linux
界面 界面统一,外壳程序固定所有Windows程序菜单几乎一致,快捷键也几乎相同 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux的终端机是从UNIX传承下来,基本命令和操作方法也几乎一致。服务器都是使用命令行的,我们也是基命令行来学习的
驱动程序 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的windows下的驱动,也会比较头痛。微软做兼容好 由志愿者开发,由Linu核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在windows下很难支持的也容易找到驱动。HP、Intel、AMD等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
系统构造 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件 每一种特定功能可能都需要商业软件的支持需要购买相应的授权。 大部分软件都可以自由获取,同样功能的软件选择较少。
  • 国内大多数企业使用的都是 RHEL 或者 CentOS 作为服务器操作系统,RHEL 和 CentOS 都是 Red Hat 公司的产物,其中 CentOS 还可以认为是 RHEL 的克隆版本

  • RHEL VS CentOS

  • RHEL 可以免费下载使用,但是要想获得官方授权,就必须购买授权协议(也就是所谓的服务),而且这个服务费并不便宜;
  • CentOS 是使用免费的 RHEL 的源代码重新编译而成的,免费提供给大家,而且其本质上和 RHEL 没什么区别。在未购买服务的 RHEL 上,yum 是不能使用的;而在 CentOS 上,有免费的 yum 工具可以使用。

1.5 Linux 中的桌面环境

  • Linux 中的桌面环境也是一个程序,它和内核不是绑定的,两者的开发也不是同步的;给不带界面的 Linux 系统安装上一个桌面环境,你就能看到各种漂亮的窗口,并能用鼠标点击它们了。

  • 个人电脑一般都会安装上桌面环境,这样操作更加便捷;Linux 服务器为了节省资源,一般都不会安装桌面环境。

  • KDE 桌面系统(K Desktop Environment):基于Qt,KDE 和 Windows 比较类似,许多流行的 Linux 发行版都提供了 KDE 桌面环境。KDE 允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux 系统就会运行该应用程序。单击文件图标,KDE 桌面就会确定使用哪种应用程序来处理该文件。KDE 是所有桌面环境中最容易定制的。在其他桌面环境中,你需要几个插件、窗口组件和调整工具才可以定制环境,KDE 将所有工具和窗口组件都塞入到系统设置中。借助先进的设置管理器,可以控制一切,不需要任何第三方工具,就可以根据用户的喜好和要求来美化及调整桌面。KDE 项目组还还发了大量的可运行在 KDE 环境中的应用程序

  • 优点:KDE 几乎是最先进最强大的桌面环境,它外观优美、高度可定制、兼容比较旧的硬件设备
  • 缺点:Kmail 等一些组件的配置对新手来说过于复杂。
  • GNOMEGNU网络对象模型环境(the GNU Network Object Model Environment):Fedora 中的默认桌面环境,特点是简洁、运行速度快,但是没有太多的定制选项,用户需要安装第三方工具来实现.不包括一些简单的调整选项,比如更改主题、更改字体等,就这两种基本的调整而言,用户都需要安装第三方工具。所以,GONME 适合那些不需要高度定制界面的用户
  • 优点:简单易用,可通过插件来扩展功能。
  • 缺点:对插件的管理能力比较差,也缺少其它桌面环境拥有的许多功能。
  • Unity 是由 Ubuntu 的母公司 Canonical 开发的一款外壳. Unity 运行在 GNOME 桌面环境之上,使用了所有 GNOME 的核心应用程序。Unity 在左边有一个启动器,位于启动器顶部的是搜索图标,又叫“Dash”。在 Dash 上搜索文件时,不仅会给出来自硬盘的搜索结果,还会给出来自在线来源的搜索结果,比如 Google Drive、Facebook、Picasa、Flick 及其他。Unity 还提供了隐藏启动器、触摸侧边栏就显示的选项,用户还可以调高/调低显示启动器菜单的灵敏度。Unity 很简单、运行速度快,但 Unity 在系统设置下却没有定制桌面的太多选项,要想安装主题或者定制另外不同的选项,比如系统菜单是否应该总是可见,或者“从启动器图标一次点击最小化”,用户需要安装第三方工具。CCSM 和 Unity Tweak Tool 是面向 Unity 桌面环境的非常流行的定制工具。
  • 优点:界面简洁直观,可以通过第三方工具来深度定制,而且使用了平视显示器(HUD)等新技术。
  • 缺点:默认的定制功能比较差劲,通知机制一般。
  • MATE:是一种从现在无人维护的 GNOME 2 代码库派生出来的桌面环境。MATE 桌面环境比较旧,适用于低配计算机,所以如果你有一台旧的或速度较慢的计算机,可以使用 MATE。许多流行的 Linux 发行版随带的

轻量级的桌面环境,能够兼容教旧的硬件设备。

  • Cinnamon:但 Cinnamon 与 MATE来源类似, 不同之处在于Cinnamon 建立在 Gnome 3 的基础上。Cinnamon 拥有 GNOME 和 Unity 等其它桌面环境所没有的种种功能。Cinnamon 是高度可定制的桌面环境,不需要任何外部插件、窗口组件和调整工具来定制桌面。Cinnamon 甚至可以通过设置管理器本身来下载并安装主题,甚至不需要打开互联网浏览器。Cinnamon 对任何刚接触 Linux 的新用户来说都非常方便,成熟完美,高度可性质。

  • 图形化桌面环境的弊端在于它们要占用相当一部分的系统资源来保证正常运行。而运行 KDE 或 GNOME 桌面要占用的内存资源和较新的 Windows 桌面环境旗鼓相当

  • 老旧 PC 可以运行一些低内存开销的图形化桌面应用,能运行许多基本的图形化程序,支持如文字处理、电子表格、数据库、绘图以及多媒体等功能。

桌面环境 说明
Fluxbox 一个没有面板的轻型桌面,仅有一个可用来启动程序的弹出式菜单。
Xfce 和 KDE 很像的一个桌面,但少了很多图像以适应低内存环境。
JWM Joe 的窗口管理器(Joe’s Window Manager),非常适用于低内存低硬盘空间环境的超轻型桌面。
Fvwm 支持如虚拟桌面和面板等高级桌面功能,但能够在低内存环境中运行。
fvwm95 从 fvwm 衍生而来,但看起来更像是 Windows 95 桌面。
  • 查看桌面环境:通过环境变量 DESKTOP_SESSION 来查看当前 Linux 发行版使用了哪种桌面环境,例如:$ echo $DESKTOP_SESSION
  • 也可以查看/etc下有没有对应的目录,例如 gnome 目录或者 kde 目录,如果有的话,就说明已经安装了。

1.6 开源软件

  • 开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制地使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至编制成衍生产品再次发布出去。

  • Linux 是一款开源软件,我们可以随意浏览和修改它的源代码。用户具有使用自由、修改自由、重新发布自由和创建衍生品自由。

  • 开源软件的优点:

    优点 说明
    低风险 使用闭源软件无疑是把命运交给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。
    高品质 相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。
    低成本 开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。
    更透明 没人会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。
  • 开源软件

软件 说明
Linux Linux 是一款开源的操作系统,它的内核由多名极客共同维护。Linux 是开源软件的经典之作、代表之作、巅峰之作。
Apache 世界使用排名第一的 Web 服务器软件。
MySQL 世界上最流行的关系型数据库,适合中小型网站。
Firefox 火狐浏览器。在 Chrome 推出之前,Firefox 几乎是最快速的浏览器,直到现在也是 Web 开发人员的调试利器。
OpenOffice 套跨平台的办公软件套件,类似 Microsoft Office。
PHP、Pyhon 开源的编程语言。
  • 国内外开源社区推荐:开源中国、ChinaUnix、GitHub、Apache、SourceForge、

1.7 开源协议

  • 开源软件不能牺牲程序员的利益,世界上现在有 60 多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。
  • 开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么,开源协议虽然不一定具备法律效力,但是当涉及软件版权纠纷时,开源协议也是非常重要的证据之一。
  • GNU GPL(GNU General Public License,GNU通用公共许可证):软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件。

Linux 遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。由于 Linux 是自由软件,任何人都可以创建一个符合自己需求的 Linux 发行版。

特点 说明
复制自由 允许把软件复制到任何人的电脑中,并且不限制复制的数量。
传播自由 允许软件以各种形式进行传播。
收费传播 允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
修改自由 允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
  • BSD(Berkeley Software Distribution,伯克利软件发布版)协议:BSD 协议允许用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面三个条件:

    • 如果再发布的软件中包含源代码,则源代码必须继续遵循 BSD 许可协议。
    • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了 BSD 协议。
    • 不允许用原始软件的名字、作者名字或机构名称进行市场推广。
  • BSD 对商业比较友好,很多公司在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,甚至在必要的时候可以修改或者二次开发。

  • Apache 许可证版本(Apache License Version)协议:Apache 和 BSD 类似,都适用于商业软件。Apache 协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。

  • 现在热门的 Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的四个条件:

    • 该软件及其衍生品必须继续使用 Apache 许可协议。
    • 如果修改了程序源代码,需要在文档中进行声明。
    • 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
    • 如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议。
  • MIT(Massachusetts Institute of Technology)协议:限制最少的开源许可协议之一(比 BSD 和 Apache 的限制都少),只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。使用 MIT 协议的软件有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。

  • GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证):LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议。

  • LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

  • 最流行的六种开源协议——GPL、BSD、MIT、Mozilla、Apache 和 LGPL,如何选择
    Linux学习-01-Linux介绍_第4张图片

1.8 如何学习

  • 学习是对事物的认识一般都是由浅入深、由表及里的过程,循序才能渐进
  • 建议做好读书笔记,边看边记,边练习边思考。比勤奋更重要的是思考的能力,不要傻学、死学。养成看书的好习惯,学习类的图书如果没能看成自己知识的积累,就是白读。一本书,可能看一遍是不够的,多次阅读,反复实践,才能印象深刻。
  • 方法有了,贵在坚持。制定好自己的学习目标,设定奖惩,确定详细的时间进度表,开始行动!
  • 学习和使用 Linux 或多或少会遇到问题,先尝试自己解决问题,在寻找答案的过程中,虽然会花费很多时间,也可能会遇到挫折,但久而久之你会发现,也许为了找一个问题的解答,你了解了 Linux 很多相关的知识,经验也越来越丰富。记住,你不可能永远有人问,也不可能永远有人愿意回答你。Linux 系统的一个非常大的好处是,当命令执行错误或系统设置错误时,通常会清楚地显示错误信息,告诉你哪里出错了,只要认真观察报错信息,大概就知道问题出现在哪里,应该如何解决了。有的操作步骤复杂,出现状况时,回头检査一下,是不是前面步骤的命令敲错或配置文件改错。
  • Linux 的帮助文档是很好的工具,命令的选项、配置文件的设置都可以从这里找到答案;我们在提问前,一定要先在网络上寻找答案。在求助他人时,说明要做什么、做了什么,列出完整的操作步骤、错误信息或错误截图,描述清晰,让别人能看懂你的问题,否则笔者就算变成超人也帮不了你。
  • 能看懂 Linux 的英文提示及英文文档非常重要。其实计算机英语很简单,只要熟记了计算机专业英语单词。建议是每天背 30 个在电脑上看到的不认识的单词,看到单词知道意思即可,一般 3~5 个月,常见的计算机英语都能看厪。
  • 思想的转变比暂时性的技术提高更重要,因为它能帮助你加快学习速度。很多人使用 Linux 时骨子里却还是 Windows 的思想,Windows 是一个优秀的系统,它的易用性非常好,不过也正是因为易用性好,使用者往往不了解自己所做操作的原理。
  • 大多数初学者习惯了使用 Windows 的图形界面来完戚喿作,在学习和日后使用 Linux 时基本上在命令行模式下,会很困惑。这里的问题是"如何有效利用系统资源",X Window 本身相当消耗系统资源,这也就是在架设 Linux 服务器时不启动图形界面的原因。如果你想深入了解 Linux,就必须学习命令行操作。
  • 所以,我们在开始学习 Linux 之前,要不被 Windows 的思想所束缚。这其实是一个使用习惯的问题。学无止境,不仅是学到的知识,还有学习的意识和方法,最好是“让学习成为一种习惯。
    参考文献:
    Linux系统简介
    Linux 简介

下一篇:Linux学习-02-Linux的安装

你可能感兴趣的:(云,linux,linux,学习,windows)