1\. 初识 Linux ------------ **Linux**,全称 **GNU/Linux**,是一套免费使用和自由传播的类 **UNIX** 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年第一次释出,它主要受到 MINIX 和 UNIX 思想的启发,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的**操作系统**。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 UNIX 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 Debian、Arch Linux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。 2\. Linux 简介 ------------ Linux 操作系统性能稳定,并且是**开源的操作系统软件**。它的防火墙相关的组件保证了系统的安全,且**配置简单**、**性能高效**。Linux 在很多企业网络中,追求速度和安全,它不仅仅是被网络运维人员当作服务器使用,也可以作为网络防火墙。Linux 开放源码并且没有版权,技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得 Linux 成为开发路由交换设备的理想开发平台。 3\. Linux 发展史 ------------- * Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和 Internet 网络。 * 20 世纪 80 年代,计算机硬件的性能不断提高,PC 机的市场不断扩大,UNIX、DOS、MacOS。UNIX 操作系统价格昂贵且不能在一般的 PC 机上面运行,DOS 操作系统相对来说比较简陋,且源代码被软件厂商严格保密,MacOS 是一种专门用于苹果计算机的操作系统。 * 因此,计算机应用领域需要更加完善、强大、价格低廉和开源的操作系统。由于供教学使用的典型操作系统很少,当时荷兰一位美国人教授 AndrewS.Tanenbaum 编写了一个操作系统,名为 MINIX,为了向学生讲述操作系统内部工作原理。 * MINIX 虽然很好,但只是一个用于教学为目的的简单操作系统,它最大的好处就是公开了源代码。全球计算机领域的学生都可以通过钻研 MINIX 源代码来了解和学习 MINIX 操作系统,其中芬兰赫尔辛基大学的学生 Linus Torvalds 就是其中一个,他在吸收了 MINIX 精华的基础上,在 1991 年写出了属于自己的操作系统 Linux,并且版本为 Linux0.01,是 Linux 时代开始的标志。他利用 UNIX 的核心,去掉了那些复杂难处理的核心程序,把它改写成适用于普通计算机的操作系统放在网络上免费供其他学习者下载。 * 1994 年推出完整的核心 Version1.0,至此,Linux 逐渐成为功能完善、稳定的操作系统,并被广泛使用。 4\. Linux 特性和优点 --------------- ### 4.1 Linux 特性 ##### 基本思想 Linux 的基本思想有两点:第一,**一切都是文件**;第二,**每个文件都有确定的用途**。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说 Linux 是基于 UNIX 的,很大程度上也是因为这两者的基本思想十分相近。 ##### 完全免费 Linux 是一款**免费的操作系统**,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了 Linux 的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让 Linux 吸收了无数程序员的精华,不断壮大。 ##### 完全兼容 POSIX1.0 标准 这使得可以在 Linux 下通过相应的模拟器运行常见的 DOS、Windows 操作系统中的软件程序。这为用户从 Windows 转到 Linux 奠定了基础。许多用户在考虑使用 Linux 时,就想到以前在 Windows 下常见的程序是否能正常运行,这一点就消除了他们的疑虑。 ##### 多用户、多任务 Linux 支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在计算机最主要的一个特点,Linux 可以使多个程序同时并独立地运行。 ##### 良好的界面 Linux 同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似于 Windows 图形界面的 X-Window 系统,用户可以使用鼠标对其进行操作。在 X-Window 环境中就和在 Windows 中相似,可以说是一个 Linux 版的 Windows 操作系统。 ##### 支持多种平台 Linux 可以运行在多种硬件平台上,如具有 x86、680x0、SPARC、Alpha 等处理器的平台。此外 Linux 还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001 年 1 月份发布的 Linux 2.4 版内核已经能够完全支持 Intel64 位芯片架构。同时 Linux 也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。 ### 4.2 Linux 优点 * Linux 由众多微内核组成,其源代码完全开源; * Linux 继承了 UNIX 的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括 TCP/IPv4、 TCP/IPv6 和链路层拓扑程序等,并且可以利用 UNIX 的网络特性开发出新的协议栈; * Linux 系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性; 5\. Linux 发行版本 -------------- 由于最初 Linux 操作系统开源免费,所有的学习者都可以将 Linux 操作系统优化和拓展,所以 Linux 操作系统发展迅猛,当前发行版非常多,这里简单介绍一下六种常见的 Linux 操作系统。 ### 5.1 Debian Debian 计划是一个致力于创建一个自由操作系统的合作组织。我们所创建的这个操作系统名为 Debian。操作系统是使计算机运行的基本程序和工具的集合,其中最主要的部分称为内核(kernel)。内核是计算机中最重要的程序,负责一切基本的调度工作,并让您运行其他程序。Debian 系统目前采用 Linux 内核或者 FreeBSD 内核。 然而,让 Debian 支持其他内核的工作也正在进行,最主要的就是 Hurd。Hurd 是一组在微内核(例如 Mach)上运行的、提供各种不同功能的守护进程。Hurd 是由 GNU 工程所设计的自由软件。官方所创建的这个操作系统中的大部分基本工具来自于 GNU 工程;因此我们把它们命名为 GNU/Linux、GNU/kFreeBSD 和 GNU/Hurd。 这些工具同样都是自由的,当然,人们真正需要的是应用软件,也就是帮助他们完成工作的程序:**从文档编辑,到电子商务,到游戏娱乐,到软件开发。Debian 带来了超过 51000 个软件包**(为了能在您的机器上轻松地安装,这些软件包都已经被编译包装为一种方便的格式),一个软件包管理器(APT),以及其他帮助您在上千台计算机上管理数千个软件包的工具,过程就如安装一个应用程序那么简单。而这些全都是自由软件。这有点像一个高塔:**在最底层的是内核,在内核上面的是所有的基本工具,然后是所有您在计算机上运行的软件**。 最后,在这个高塔顶端的就是 Debian 把每件事情谨慎地组织和配合在一起,使得它们能够在一起和谐地运作。 ### 5.2 RedHat **红帽在 2014 年 6 月发布了最新旗舰版企业操作系统,红帽企业 Linux 7**。基于红帽企业 Linux 7 操作系统,企业可整合裸机服务器、 虚拟机、基础设施即服务(IaaS)和平台即服务(PaaS),以构建一个强大稳健的数据中心环境,满足不断变化的业务需求。红帽卫星是一个综合性解决方案,它通过配置软件分发、补丁和配置管理,以及物理、虚拟和云环境的订阅管理为红帽系统提供完整的生命周期管理,为管理构建、部署、运行和淘汰系统所需的工具提供了单独的管理控制台和方法论。 ### 5.3 CentOs CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是 Linux 发行版之一,**它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成**。由于出自同样的源代码,因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同,**在于 CentOS 完全开源**。 ### 5.4 Slackware Slackware Linux 是由 Patrick Volkerding 开发的 GNU/Linux 发行版。**与很多其他的发行版不同**,**它坚持 KISS(Keep It Simple Stupid) 原则**。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。 Slackware 的很多特性体现出了 KISS 原则,最为有名的例子就是**不依赖图形界面的文本化系统配置,传统的服务管理方式和不解决依赖的包管理**。 ### 5.6 Ubuntu Ubuntu 是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的 “ubuntu” 一词,意思是 “人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观。**Ubuntu 基于 Debian 发行版和 Gnome 桌面环境,而从 11.04 版起,Ubuntu 发行版放弃了 Gnome 桌面环境,改为 Unity**。从前人们认为 **Linux 的难以安装、难以使用,在 Ubuntu 出现后这些都成为了历史**。**Ubuntu 也拥有庞大的社区力量,用户可以方便地从社区获得帮助**。 GNU 项目简介 ======== 1\. GNU 项目简介 ------------ GNU 项目计划最开始是在 1984 年由美国著名的黑客理查德・斯托曼(Richard Matthew Stallman)发起的,GNU 获得了自由软件基金会(FSF)的资金支持一直是 GNU 的主要资金来源,该项目主要是为了建立免费的开源的 UNIX 类系统,其基本原则是程序源代码开放和软件思想共享。 GNU/Linux 是一种常见的并且广泛用于商业环境的**免费开源操作系统**。由于 GNU 将要实现 UNIX 类各系统的接口标准,因此 **GNU 计划并不局限于 Linux 系统也可以开发其他不同的操作系统**。GNU 计划大量采用了当时已经可自由使用的软件,例如 OpenOffice 排版系统和 X-Window 图形界面系统等。**不过随着 GNU 计划的发展和壮大也开发了大批其他的自由软件**,这些软件中的经典也被移植到其他操作系统平台上,例如 NC 工具就被移植到 Microsoft Windows、BSD 家族、Solaris 及 MacOS。 为了确保 GNU 系列软件可以真正地自由地 “使用、复制、修改和发布”,**所有 GNU 软件都包含有一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议框架**,GNU 通用公共许可证协议(GNU General Public License,GPL)。这个就是被大家称为**公共版权**的含义。GNU 也针对不同场合,提供 **GNU 宽通用公共许可证**与 **GNU 自由文档许可证**这两种协议条款以便适用不同的使用场合。 2\. GNU 的特点 ----------- GNU/Linux 将可以兼容并能够执行 UNIX 标准的程序,但是不会和 UNIX 系统完全一模一样,最大的不同是 **GNU 计划拥有支持长文件名、版本号、一个健壮稳定文件系统**,在某些情况下还有自动文件名补全、与使用终端无关的显示支持、可能最后还要有一个基于 x-windows 的视窗系统,以使好几个系统程序和普通的 UNIX 应用程序能共享同一屏幕。 C 语言将成为系统的程序语言。并且会想办法支持 UUCP,MIT Chaosnet,及 Internet 的通讯交流协议。 **GNU 最初的目标是在有虚拟内存的 68000/16000 等系列机器上开发,因为这样的环境是最容易开发程序来实现 GNU 的运行**。剩下来让 GNU 能在其它较小的机器上运行的工作,将会留给那些希望能在这些机器上使用的人。 GNU 不是公共的,毫无约束的软件(public domain)。**GNU 计划允许每一个人修改及传播 GNU,但是绝不允许传播者对他传播的程序再加进其他的限制**。也就是说,不允许将修改后的程序据为己有。**GNU 计划希望能确保 GNU 所有的版本都能保持自由**,所以 GNU 的核心精神是自由与分享,这和真正的 Hacker 精神有异曲同工之妙,虽不能说 GNU 精神就是 Hacker 精神,不过很难把两者清楚的分开,**实际上很多 Hacker 都为 GNU 做出了巨大的贡献。对知识的渴求是支持他们探索的唯一动力**。当然这里的 Hacker 黑客不是那些破坏计算机系统牟取私利而臭名昭著的骇客。 3\. 发展历程 -------- * 1985 年,著名美国黑客理查德・斯托曼创立了 GNU 项目计划。 1985 年,同年查德・斯托曼创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及资金支持。尽管 GNU 计划大部分时候是由大家自愿无偿贡献的,但 FSF 还是会聘请程序员帮助编写。当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 红帽兼并的 Cygnus Solutions。 * 1990 年,成熟的 GNU 计划已经开发出的软件包括了一个功能强大的文字编辑器 Emacs、C 语言编译器 GCC 以及大部分 UNIX 系统的程序库和工具。唯一依然没有完成的重要组件,就是操作系统的内核。 * **1991 年**,**Linux 之父林纳斯・托瓦兹编写出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 条款下发布。Linux 之后在网上广泛流传,许多程序员参与了开发与修改**。 * **1992 年,林纳斯的 Linux 与其他 GNU 软件开始结合,完全自由的 Linux 操作系统正式诞生**。该操作系统往往被称为 “GNU/Linux” 或简称 Linux。许多 UNIX 系统上也安装了 GNU 软件,因为 GNU 软件的质量比之前 UNIX 的软件还要好。GNU 工具还被广泛地移植到 Windows 和苹果 Mac OS 上。 * 现在,GNU 项目计划十几年以来已经成为一个对软件开发主要的影响力量,创造了无数的重要的工具,例如:编译器,文本编辑器,甚至一个全功能的操作系统。这个工程是从 1984 年麻省理工学院的程序员理查德・斯托曼的想法得来的,他想要创建一个自由的和 UNIX 类似的操作环境。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件。 本课程的学习基础 ------------ * 对计算机网络有基本的认识。 * 会在指定的网址上下载软件包。