Linux 运维之路001

后续
Linxu运维之路–002

TOC](Linux学习笔记)
前言 唯有学习和健身是永不赔本的买卖。
我不知道这篇笔记要写多久,但还是尽我可能去做好它吧。
要么别开始,要么做到底。

Linux是什么

  • Linux是一套操作系统。Linux在一个计算机中扮演的角色是 核心和系统呼叫,早期的Linux是针对386开发的一套操作系统,并不含有其他的应用程序,因此很多工程师,是无法去运作这套系统的。
  • 由于不同的硬件他的功能函数并不相同,例如IBM的Power CPU与Intel的x86架构就是不一样呢,所以,同一套操作系统是无法再不同的硬件平台上面运行的,举例来说,如果你想要让x86上面跑的操作系统在Power CPU上也能够运行,我们需要将该操作系统进行修改才行。经过改版后的操作系统就能欧在另一个硬件平台上运作了,这个动作我们通常称为软件移植

讲点故事

Linux是在1991年被大神Linux Torvalds开发的,他的前身是Unix。

早期的计算机并不是非常常见的,那时候的输入设备只有卡片阅读机 输出设备只有打印机
用户无法与操作系统互动。

为了避免主机只有一台,造成多人等待的情况,MIT发展了CTSS系统 也就是兼容分时系统 可以实现多个终端联机接入主机,来利用主机的资源进行运算工作。

这个技术的原理,并不是同时使用该主机的资源,而是在一个使用者之间进行切换。

但是这个技术仍然垃圾的一比,因此为了改进这个技术,由贝尔实验室 MIT 与奇异公司共同发起了Multics计划,希望最终可以达成提供300个以上的终端机联机使用的目标,但是他们,嗯,失败了。

故事到这就完了吗,不,在这个计划中有一个大神Ken Thompson,因为自己的需求需要开发一套小小的操作系统,在开发时,一个偶然的机会,他遇到了DEC公司推出的PDP-7,于是他就针对这部主机进行了操作系统核心程序的撰写,最终他是用汇编语言在1969年独立完成了Unix系统的开发。

这个文件系统有两个重要的概念分别是:

  • 所有的程序或系统装置都是文件
  • 不管建构编辑器还是附属文件,所写的程序只有一个目的,其要有效的完成目标。

什么?为什么要整这个操作系统?其实这个大神只是想玩一个佳作太空旅游的程序

1973年 Unix正式诞生,Ritachie写出第一个正式的Unix核心。

诞生的过程也颇有意思,最开始unix使用汇编语言编写的,因为当时的硬件架构并不是很统一,所以对于他们来讲,操作系统的可移植性并不是太好,所以大神们又使用B语言更改了一遍,但是因为B语言在编译上没有C语言有优势,因此,最终Unix的核心是用C语言写的。至此,unix作为同时具有流畅的输入输出,与较好的可移植性的系统正式诞生。

Unix系统强调的是多人多任务的环境,所以 当时Unix系统主要用于服务器。后来因为版权纷争的问题,AT&T公司收回了Unix版权代码,为了继续教授学生Unix代码,神一般的教授Andrew Tanenbaum撰写了Minix操作系统,并且实现了与Unix系统的结合
请记住这一年 1984 在这一年 史托曼发起了GNU计划。

伟大的GNU计划

GNU 计划的全程佳作GNU’s Not Unix ,史托曼是一名早期的黑客,那个时候的黑客都秉承开源共同学习的精神,因此,对于很多黑客来说,Unix宣布版权的事情是他们不能够接受的,史托曼最开始使用的系统是Lisp系统,后来他接触到Unix系统,发现这个软件更加的灵活与可用,因此,他开始讲她在Lisp系统中做的软件逐步迁移到Unix系统上,并且同时她都会将程序的源代码公布出来。

在1984年,史托曼正式开始GNU计划,这个计划的目的就是建立一个自由的、开放的Unix操作系统,但是,建立一个操作系统是非常困难的,因此他需要首先去推广自己的软件,于是他开发了两样东西,一个叫做 Emacs ,这是一个程序编辑器,他可以让工程师在编写程序的过程中就检查出错误,另一个是GCC,对没错,GCC就是他开发的 。

GCC的全称叫做 GNU C Compiler 这个是C语言的编译程序,当时编译程序的版本非常多,但是史托曼大神开发的这个效率极高,后来他开发了C的函式库,以及可以被用来操作操作系统的基本接口Bash shell,这些都在1990年左右就完成了。

后来为了秉承开源精神,防止开源软件被必源,所以他和他的律师草拟了一份通用公公许可证(GPL),至此GNU计划算是完美成立。

Linux 的诞生

尽管GNU计划开展了很久了,但是由于缺少一个核心程序,因此LInux一直没有实际的落地,此时,芬兰大学生 Linux 在BBS上发了一则通告,宣布他使用了bash gcc等GNU中的工具开发了一个小小的核心程序,但是这个核心程序可以在Intel386上运作。

托瓦兹大神,很小的时候就因为家庭原因接触到了汇编语言,不过因为早期的计算机只有Input/outpu的功能,因此完全满足不了他的个人需求,上文的谭宁邦教授为了教育而撰写的Minix系统,帮了托瓦兹大忙,因为这个系统是赠送源码的,他因此学习到了很多核心程序设计的设计概念。

但是托瓦兹仍然对于个人计算机的CPU并不满意,因为理论上一个CPU之能在一个时间内进行一个程序 ,但是计算机的发展是迅速的,因此,具有多任务能力的CPU是可以在不同程序间进行切换的,早期的个人计算机主要采用intel386架构,但是那时的操作系统对这种架构病没有提供有力的支持,x86的CPU,在多任务处理这一块并不是很流畅。

与此同时GNU计划的诞生给托瓦兹提供了开发一套全新的操作系统的全部工具:

  • bash工作环境软件
  • gcc编译软件等等众多自由软件

于是他贴切386架构编写了一套核心代码也就是Linux的原型,是的,没有的东西我们可以去造。

人类,真的是没有极限的生物

就这样Linux正式诞生。


故事到这就结束了,后面还有好多的后话,不过就不一一列举了,像之后的POSIX规范啊,虚拟团队啊,如果有喜欢的同学欢迎大家读一读 ---- 鸟哥的Linux私房菜第一章。

Linux的核心版本

Linux核心都是使用GPL授权的,因此大家都能够进行核心程序代码的修改,这就让Linux的版本变化非常的多,比如说Ubuntu CentOs debain等等是Linux的发布商版本而不是Linux核心版本。现在的Linux的核心版本是5.0.1,按照Linux核心分为主线版本和长期维护版本

Linux distribution

为了让使用者能够接触到 Linux,于是很多的商业公司或非营利团体, 就将 Linux Kernel(含 tools)与 可运行的软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让用户以光盘/DVD 或 者透过网络直接安装/管理 Linux 系统。 这个 『Kernel + Softwares + Tools + 可完全安装程序』 的东西, 我们称之为 Linux distribution, 一般中文翻译成可完全安装套件,或者 Linux 发布商套件等。

而且各大 Linux开发商,都依据LSB标准,以及目录架构的FHS标准规范,不过,不同的distribution的开发的挂你工具,以及套件管理模式不同。

distribution主要分为两大类一种是使用RPM方式安装的系统,一种是使用dpkg方式安装的系统。

第一类的代表是(Red Hat / SuSE CentOS Fedora)

第二类的代表就是 Ubuntu Debian
Linux 运维之路001

其中RPM是是以一种数据库的方式来将你所需要的软件安装到Linux系统的管理机制。

PRM 原理:

他最大的特点就是将你要安装的软件先编译过, 并且打包成为 RPM 机制的包装文件,透过包装好的软件里头默认的数据库记录, 记录这个软件要安装的时候必须具备的相依属性软件,当安装在你的 Linux 主机时, RPM 会先依照软件里头的数据查询 Linux 主机的相依属性软件是否满足, 若满足则予以安装,若不满足则不予安装。

PRM 缺点:

但是这也造成些许的困扰。由於 RPM 文件是已经包装好的数据,也就是说, 里面的数据已经都『编译完成』了!所以,该软件文件几乎只能安装在原本默认的硬件与操作系统版本中。 也就是说,你的主机系统环境必须要与当初创建这个软件文件的主机环境相同才行! 举例来说,rp-pppoe 这个 ADSL 拨接软件,他必须要在 ppp 这个软件存在的环境下才能进行安装!如果你的主机并没有 ppp 这个软件,那么很抱歉,除非你先安装 ppp 否则 rp-pppoe 就是不让你安装的 (当然你可以强制安装,但是通常都会有点问题发生就是了!)。

dpkg原理

挖坑

distribution的选择

主要分为三大类
第一类是 用于企业环境 主要强调的是永续经营,因此这一类主要强调的是可以后期被其他工作人员管理,并且相关企业支持客户服务。 常用的有 RHEL SuSE

第二类 用于个人或者教学环境的服务器 ,这就需要有一个兼容性比较好的系统了,一般我们在服务器端都会使用CentOs进行管理 ,原因是改版比价下,适用于服务器环境

第三类 用于个人的桌面计算机 强调比较好的GUI设计 改版比较迅速,常用的有Ubuntu、Fedora

Linux的应用

主要用于
网络服务器
关键任务的应用
学术机构的高效能运算(Linux 具有非常强大的运算能力,并且Linux支持很多GCC编译软件)
个人环境的应用,现在的一些个人电脑啊,还有手机以及嵌入式系统这块啊,很多用的都是Linux系统。不过说起来现在常用的Android系统就是用的LInux的kernel版本,唉,Linux解万愁埃
嵌入式系统(嵌入式系统就是直接嵌入到硬件系统中,不会被改动的操作系统,一般包括,路由器,防火墙,手机,机器人控制芯片等等)、
云端运用 , 整合大量的服务器,统一管理,采用虚拟化的技术,来让个人使用ISP提供的虚拟化产品
端设备,运算资源都集中在云里面,那我需要连击刀云程序的设备可以越来越清凉,所以智能型手机也越来越热门。