Linux初识[通俗易懂]

Linux发展史简介Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生LinusTorvalds和后来陆续加入的众多爱好者共同开发

大家好,又见面了,我是你们的朋友全栈君。

Linux发展史

简介

Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。

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

Linux存在着许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如:手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

有了简单的了解之后我们再一起来认识一下Linux之父吧

Linux之父

  • 林纳斯·托瓦兹(Linus Torvalds)

这里写图片描述

相关介绍:

Linus Torvalds被称作Linux之父,著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。他利用个人时间及器材创造出了这套当今全球最流行的操作系统内核之一,现受聘于开放源
代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。 Linux是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。1991年,当时还是芬兰大学生的Linus Torvalds萌发了开发一个自由的Unix操作系统的想法,当年,Linux就诞生了,为了
不让这个羽毛未丰的操作系统矢折,Linus Torvalds将自已的作品Linux通过Internet发布。从此一大批知名的、不知名的电脑黑客、编程人员加入到开发过程中来,一场声势浩大的运动应运而生
,Linux逐渐成长起来。 Linux一开始是要求所有的源码必须公开,并且任何人均不得从Linux交易中获利。然而这种纯粹的自由软件的理想对于Linux的普及和发展是不利的,于是Linux开始转向GPL,成为GNU阵营中的主
要一员。 Linux凭借优秀的设计、不凡的性能,加上IBM、Intel、CA、CORE、Oracle等国际知名企业的大力支持,市场份额逐步扩大,逐渐成为主流操作系统之一。

知道了Linux之父之后,我们来认识一下Liux吧,看看它长什么样子啊

Linux标志

Linux的标志(吉祥物)则是一只名为Tux的企鹅。

这里写图片描述

企鹅的来源

1994年发表Linux正式核心1.0的时候,大家要Linus Torvalds想一只吉祥物,他想起曾经在澳大利亚的一个动物园里被企鹅咬过,干脆就以企鹅来当吉祥物了!

更容易接受的说法是:企鹅代表南极,而南极又是全世界共有个一块陆地,不属于任何国家。也就是说Linux不属于任何商业公司,是全人类每个人都可以分享的一项技术成果。

Linux发展史

* 1969年以前:一个没有完成的梦想:Bell,MIT与GE的‘Multics’系统

        早期的电脑并不像现在的个人电脑一样普遍,他可不是一般人碰的起的呢~ 除非是军事或者是高科技用途,或者是学术单位的学术研究,否则真的很难接触到。 非但如此,早期的电脑架构还很难使用,除了运算速度并不快之外,操作介面也很困扰的! 因为那个时候的输入设备只有读卡机、输出设备只有印表机, 使用者也无法与作业系统互动(批次型作业系统)。

        在那个时候,写程式是件很可怜的事情,因为程式设计者,必须要将程式相关的资讯在读卡纸上面打洞, 然后再将读卡纸插入读卡机来将资讯读入主机中运算。光是这样就很麻烦了,如果程式有个小地方写错, 哈哈!光是重新打卡就很惨,加上主机少,使用者众多,光是等待,就耗去很多的时间了!

        在那之后,由于硬体与作业系统的改良,使得后来可以使用键盘来进行资讯的输入。 不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?大家还是得要等待啊! 好在1960年代初期麻省理工学院(MIT)发展了所谓的: ‘相容分时系统(Compatible Time-Sharing System, CTSS)’, 它可以让大型主机透过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。 架构有点像这样:

Linux初识[通俗易懂]

        Tips:这个相容分时系统可以说是近代作业系统的始祖呢!他可以让多个使用者在某一段时间内分别使用CPU的资源, 感觉上你会觉得大家是同时使用该主机的资源!事实上,是CPU在每个使用者的工作之间进行切换, 在当时,这可是个划时代的技术喔!

        如此一来,无论主机在哪里,只要在终端机前面进行输入输出的作业,就可利用主机提供的功能了。 不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软体安装的能力。 而且,比较先进的主机大概也只能提供30个不到的终端机而已。

        为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE)共同发起了Multics的计画, Multics计画的目的是想要让大型主机可以达成提供300个以上的终端机连线使用的目标。 不过,到了1969年前后,计画进度落后,资金也短缺,所以该计画虽然继续在研究,但贝尔还是退出了该计画的研究工作。 (注:Multics有复杂、多数的意思存在。)

        Tips:最终Multics还是有成功的发展出他们的系统,完整的历史说明可以参考: http://www.multicians.org/网站内容。 Multics计画虽然后来没有受到很大的重视,但是他培养出来的人才是相当优秀的! ^_^ 

* 1969年:Ken Thompson的小型file server system

        在认为Multics计划不可能成功之后,贝尔研究室就退出该计画。不过,原本参与Multics计画的人员中,已经从该计画当中获得一些点子, Ken Thompson 就是其中一位!

        Thompson因为自己的需要,希望开发一个小小的作业系统以提供自己的需求。 在开发时,有一部DEC(Digital Equipment Corporation)公司推出的PDP-7刚好没人使用, 于是他就准备针对这部主机进行作业系统核心程式的撰写。本来Thompson应该是没时间的(有家有小孩的宿命?), 无巧不巧的是,在1969年八月份左右,刚好Thompson的妻儿去了美西探亲, 于是他有了额外的一个月的时间好好的待在家将一些构想实现出来!

        经过四个星期的奋斗,他终于以组合语言(Assembler)写出了一组核心程式,同时包括一些核心工具程式, 以及一个小小的档案系统。那个系统就是Unix的原型! 当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。(当时尚未有Unix的名称)。

        Thompson 的这个档案系统有两个重要的概念,分别是:

                * 所有的程式或系统装置都是档案
                * 不管建构编辑器还是附属档案,所写的程式只有一个目的,且要有效的完成目标。

        这些概念在后来对于Linux的发展有相当重要的影响喔!

        Tips:套一句常听到的广告词:‘科技始终来自于人性’,当初Thompson会写这套Unix核心程式,却是想要移植一套名为‘太空旅游’的游戏呢! ^_^。

* 1973年:Unix的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心

        由于Thompson写的那个作业系统实在太好用了,所以在贝尔实验室内部广为流传,并且数度经过改版。 但是因为Unics本来是以组合语言写成的,而如第零章计算机概论谈到的, 组合语言具有专一性,加上当时的机器都不太相同,所以每次要安装到不同的机器都得要重新编写组合语言,真不方便!

        后来Thompson与Ritchie合作想将Unics改以高阶程式语言来撰写。当时现成的高阶程式语言有B语言。 但是由B语言所编译出来的核心效能不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本!

        Tips:这群高级骇客实在很厉害!因为自己的需求来开发出这么多好用的工具! C程式语言开发成功后,甚至一直沿用至今呢!你说厉不厉害啊!这个故事也告诉我们,不要小看自己的潜能喔! 你想作的,但是现实生活中没有的,就动手自己搞一个来玩玩吧!

        由于贝尔实验室是隶属于美国电信大厂AT&T公司的, 只是AT&T当时忙于其他商业活动,对于Unix并不支持也不排斥。此外,Unix在这个时期的发展者都是贝尔实验室的工程师, 这些工程师对于程式当然相当有研究,所以,Unix在此时当然是不容易被一般人所接受的!

        需要特别强调的是,由于Unix是以较高阶的C语言写的,相对于组合语言需要与硬体有密切的配合, 高阶的C语言与硬体的相关性就没有这么大了!所以,这个改变也使得Unix很容易被移植到不同的机器上面喔!

* 1977年:重要的Unix分支:BSD的诞生

        虽然贝尔属于AT&T,但是AT&T此时对于Unix是采取较开放的态度,此外,Unix是以高阶的C语言写成的, 理论上是具有可移植性的!亦即只要取得Unix的原始码,并且针对大型主机的特性加以修订原有的原始码(Source Code), 就可能将Unix移植到另一部不同的主机上头了。所以在1973年以后,Unix便得以与学术界合作开发! 最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。

        柏克莱大学的Bill Joy在取得了Unix的核心原始码后,著手修改成适合自己机器的版本, 并且同时增加了很多工具软体与编译程式,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是Unix很重要的一个分支,Bill Joy也是Unix业者‘Sun(升阳)’这家公司的创办者! Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。 (后来可以安装在x86硬体架构上面FreeBSD即是BSD改版而来!)

* 1979年:一个措手不及的版权宣告!

        由于Unix的高度可移植性与强大的效能,加上当时并没有版权的纠纷, 所以让很多商业公司开始了Unix作业系统的发展,例如AT&T自家的System V、IBM的AIX以及HP与DEC等公司, 都有推出自家的主机搭配自己的Unix作业系统。

        但是,如同我们前面提到的,作业系统的核心(Kernel)必须要跟硬体配合, 以提供及控制硬体的资源进行良好的工作!而在早期每一家生产电脑硬体的公司还没有所谓的‘协定’的概念, 所以每一个电脑公司出产的硬体自然就不相同啰!因此他们必须要为自己的电脑硬体开发合适的Unix系统。 例如在学术机构相当有名的Sun、Cray与HP就是这一种情况。 他们开发出来的Unix作业系统以及内含的相关软体并没有办法在其他的硬体架构下工作的! 另外,由于没有厂商针对个人电脑设计Unix系统,因此,在早期并没有支援个人电脑的Unix作业系统的出现。

        Tips:如同相容分时系统的功能一般,Unix强调的是多人多工的环境! 但早期的286个人电脑架构下的CPU是没有能力达到多工的作业,因此,并没有人对移植Unix到x86的电脑上有兴趣。

        每一家公司自己出的Unix虽然在架构上面大同小异,但是却真的仅能支援自身的硬体, 所以啰,早先的Unix只能与伺服器(Server)或者是大型工作站(Workstation)划上等号!

        但是这个高度开放的Unix系统在1979年有了重大的转折~因为AT&T由于商业的考量, 以及在当时现实环境下的思考,于是将想Unix的版权收回去。因此,AT&T在1979年发行的第七版Unix中,特别提到了 ‘不可对学生提供原始码’的严格限制! 同时,也造成Unix业界之间的紧张气氛,并且也引爆了很多的商业纠纷~。

        Tips:AT&T这一版开发出来的Unix被称为System V,目前被称为纯种的Unix指的就是System V以及BSD这两套啰! 

* 1984年之一:x86架构的Minix诞生

        关于1979年的版权声明中,影响最大的当然就是学校教Unix核心原始码相关学问的教授了! 想一想,如果没有核心原始码,那么如何教导学生认识Unix呢?这问题对于Andrew Tanenbaum(谭宁邦)教授来说,实在是很伤脑筋的!不过,学校的课程还是得继续啊!那怎么办?

        既然1979年的Unix第七版可以在Intel的x86架构上面进行移植, 那么是否意味著可以将Unix改写并移植到x86上面了呢?在这个想法上, 谭宁邦教授于是乎自己动手写了Minix这个Unix Like的核心程式! 在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心原始码! 并且强调他的Minix必须能够与Unix相容才行!谭宁邦在1984年开始撰写核心程式, 到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻群组(BBS及News)相结合~。

        Tips:之所以称为Minix的原因,是因为他是个Mini的Unix系统啰!^_^。

        这个Minix版本比较有趣的地方是,他并不是完全免费的,无法在网路上提供下载! 必须要透过磁片/磁带购买才行!虽然真的很便宜~不过,毕竟因为没有在网路上流传, 所以Minix的传递速度并没有很快速!此外,购买时,随磁片还会附上Minix的原始码! 这意味著使用者可以学习Minix的核心程式设计概念喔! (这个特色对于Linux的启始开发阶段,可是有很大的关系喔!)

        此外,Minux作业系统的开发者仅有谭宁邦教授,因为学者很忙啊!加上谭宁邦始终认为Minix主要用在教育用途上面, 所以对于Minix是点到为止!没错,Minix是很受欢迎,不过,使用者的要求/需求的声音可能就比较没有办法上升到比较高的地方了! 这样说,你明白吧?^_^。

* 1984年之二:GNU计画与FSF基金会的成立

        Richard Mathew Stallman(史托曼)在1984年发起的GNU计画,对于现今的自由软体风潮, 真有不可磨灭的地位!目前我们所使用得很多自由软体,几乎均直接或间接助益于GNU这个计画呢! 那么史托曼是何许人也?为何他会发起这个GNU计画呢?

        * 一个分享的环境:

        Richard Mathew Stallman(生于1953年, 网路上自称的ID为RMS)从小就很聪明!他在1971年的时候,进入骇客圈中相当出名的人工智慧实验室(AI Lab.), 这个时候的骇客专指电脑功力很强的人,而非破坏电脑的怪客(cracker)喔!

        当时的骇客圈对于软体的著眼点几乎都是在‘分享’,所以并没有专利方面的困扰! 这个特色对于史托曼的影响很大!不过,后来由于管理阶层的问题,导致实验室的优秀骇客离开该实验室, 并且进入其他商业公司继续发展优秀的软体。但史托曼并不服输,仍然持续在原来的实验室开发新的程式与软体。 后来,他发现到,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力!

        * 使用Unix开发阶段:

        1983年以后,因为实验室硬体的更换,使得史托曼无法继续以原有的硬体与作业系统继续自由程式的撰写~ 而且他进一步发现到,过去他所使用的Lisp作业系统,是麻省理工学院的专利软体, 是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了Lisp这个系统。 后来,他接触到Unix这个系统,并且发现,Unix在理论与实际上,都可以在不同的机器间进行移植。 于是他开始转而使用Unix系统。

        因为Lisp与Unix是不同的系统,所以,他原本已经撰写完毕的软体是无法在Unix上面运行的!为此, 他就开始将软体移植到Unix上面。并且,为了让软体可以在不同的平台上运作, 因此,史托曼将他发展的软体均撰写成可以移植的型态!也就是他都会将程式的原始码公布出来!

        * GNU计画的推展:

        1984年,史托曼开始GNU计画, 这个计画的目的是想要:建立一个自由的开放的Unix作业系统(Free Unix)。 但是建立一个作业系统谈何容易啊!而且在当时的GNU是仅有自己一个人单打独斗的史托曼~ 这实在太麻烦,但又不能不做这个计画,于是史托曼反其道而行~‘既然作业系统太复杂, 我就先写可以在Unix上面运行的小程式,这总可以了吧?呵呵!’在这个想法上, 史托曼便开始了程式的写作。在写作期间,为了不让自己吃上官司,他绝对不看专利软体的原始码! 为了这个计画,他开始使用原本Unix上面跑的软体, 并自行撰写功能与Unix原有专利软体相仿的软体。

        但不论是什么软体,都得要进行编译成为二进位档案(binary file)后才能够执行, 因此他便开始撰写C语言的编译器,那就是现在相当有名的GNU C Compiler(gcc)! 这个点相当的重要!这是因为C语言编译器版本众多,但都是专利软体, 如果他写的C编译器够棒,效能够佳,那么将会大大的让GNU计画出现在众人眼前!

        Tips:电脑仅认识0/1的资料,但是人类不认识啊!人类对于纯文字的资料(就是所谓的ASCII档案格式)比较有感觉。 但是偏偏电脑又不认识ASCII格式的文字,很头痛,不是吗? 后来就有所谓的‘编译器’来辅助我们。

        我们一般使用文字编辑器以ASCII纯文字格式来撰写程式, 再透过所谓的‘编译器(compiler)’将刚刚完成的文字档案‘编译’成为电脑认识的二进位制(binary file)的档案, 以让电脑认识且可以执行的程式啊!

        但开始时并不顺利,为此,他先转而将Emacs编辑器写成可以在Unix上面跑的软体,并公开公布原始码。 Emacs是一种程式编辑器,他可以在使用者撰写程式的过程中就进行程式语法的检验,此一功能可以减少程式设计师除错的时间! 因为Emacs太优秀了,因此,很多人便直接向他购买。

        此时网际网路尚未流行,所以,史托曼便藉著Emacs以磁带(tape)出售,赚了一点钱 ,进而开始全力撰写其他软体。并且成立自由软体基金会(FSF, Free Software Foundation),请更多工程师与志工撰写软体。终于还是完成了GCC,这比Emacs还更有帮助! 此外,了更他还撰写多可以被呼叫的C函式库(GNU C library),以及可以被使用来操作作业系统的基本介面BASH shell! 这些都在1990年左右完成了!

        Tips:如果纯粹使用文字编辑器来编辑程式的话,那么程式语法如果写错时, 只能利用编译时发生的错误讯息来修订了,这样实在很没有效率。 Emacs则是一个很棒的编辑器!注意!是编辑(editor)而非编译(compiler)! 他可以很快的立刻显示出你写入的语法可能有错误的地方,这对于程式设计师来说, 实在是一个好到不能再好的工具了!所以才会这么的受到欢迎啊! 

* GNU的通用公共许可证:

        到了1985年,为了避免GNU所开发的自由软体被其他人所利用而成为专利软体, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft(相对于专利软体的copyright!)。有GNU所开发的几个重要软体,如:

        * Emacs

        * GNU C (GCC)

        * GNU C Library (glibc)

        * Bash shell

        造成后来很多的软体开发者可以藉由这些基础的工具来进行程式开发! 进一步壮大了自由软体团体!这是很重要的!不过,对于GNU的最初构想 ‘建立一个自由的Unix作业系统’来说,有这些优秀的程式是仍无法满足, 因为,当下并没有‘自由的Unix核心’存在…所以这些软体仍只能在那些有专利的 Unix平台上工作~~一直到Linux的出现…更多的FSF开发的软体可以参考如下网页:

         https://www.fsf.org/resources

GNU计划

        软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛大学的比尔·盖茨和Richard M.Stallman。前者宣布了Copyright(版权)时代的到来,并构建了微软帝国的辉煌;后者于1984年创立自由软件体系GNU,拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),今天Linux的成功就得益于GPL协议。

        所有GPL协议下的自由软件都遵循着Richard M. Stallman的”Copyleft”(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。

        GNU计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU系统(GNU 是”GNU’s Not Unix”的递归缩写,它的发音为”guh-NEW”)。

        各种使用Linux作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作”Linux”,但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。

        到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。

GNU与Linux

GNU计划又被称为革弩计划,linux正是搭上了GNU计划这个顺风车才会畅通无阻的发展壮大。GNU计划Richard Stallman在1983年9月27日公开发起的,他的目标是打造一个完全自由的操作系
统,每个人都可以查看、修改和传播软件的源代码。GNU计划致力于开源软件的开发和推广,推崇合作互助的团队精神,但是为了防止开源软件被商业机构利用,GNU发布了GNU通用公共许可证(
GNU General Public License,GPL),同时还衍生出了Copyleft 著佐权,即允许使用者自由使用、散布、修改之外,要将修改后的软件一同要的方式开源散布出去,以推动自由软件的发
展。随着发展越来越多的自由软件被开发出来,linux发布后的第二年,由Linus和其他程序员共同努力下使得GNU软件能够运行在linux上,至此一个完整的操作系统才诞生了。

* 1988年:图形介面XFree86计画

        有鉴于图形使用者介面(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT与其他协力厂商首次发表了X Window System ,并且更在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是 X Window System + Free + x86的整合名称呢! 而这个XFree86的GUI介面更在Linux的核心1.0版于1994年释出时,整合于Linux作业系统当中!

        Tips:为什么称图形使用者介面为X呢?因为由英文单字来看,Window的W 接的就是X啦!意指Window的下一版就是了! 需注意的是,X Window并不是X Windows喔!

* 1991年:芬兰大学生Linus Torvalds的一则简讯

        到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程式,这个核心程式可以在Intel的386机器上面运作, 让很多人很感兴趣!从此开始了Linux不平凡的路程!

 操作系统介绍

内核负责控制硬件资源分配,而如果只有内核,则只能让计算机硬件运行,而不能有任何功能,因此需要系统调用提供给开发者使用,从而开发应用程序;内核能够控制硬件,比如:让CPU可以运算、让硬盘可以读写数据等;只有内核的话,只能让计算机运行,但是我们不能控制计算机;而系统调用是操作系统提供给开发者的调用接口;任何硬件都不会默认就被操作系统控制,而需要开发商根据操作系统提供的接口开发驱动程序,只有安装了驱动程序才能够控制硬件设备。

Linux初识[通俗易懂]

Unix

Unix操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年
在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一Unix规范的Unix系统才能使用Unix这个名称,否则只能称为类Unix(Unix-like)。

GNU

GNU是自由软件之父Richard Stallman在1984年组织开发的一个完全基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License,简称GPL)。Linux以及与他
有关的大量软件是在GPL的推动下开发和发布的。 自由软件之父
- Richard Stallman 像一个神态庄严的传教士一样喋喋不休地到处传播自由软件的福音,阐述他创立GNU的梦想:“自由的思想,而不是免费的午餐”。这位自由软件的“顶级神甫”
为自己的梦想付出了大半生的努力,他不但自己创作了许多自由软件,如:GCC、和GDB,在他的倡导下,目前人们熟悉的一些软件如BIND、Perl、Apache、TCP/IP等都成了自由软件的经典之作。 如果说Richard Stallman创立并推动了自由软件的发展,那么,Linus Torvalds毫不犹豫奉献给GNU的Linux,则把自由软件的发展带入到一个全新的境界。

BSD

386BSD因为法律问题直到1992年还不能发布,NetBSD和FreeBSD是386BSD的后裔,比Linux早。Linus Torvalds说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造
Linux。尽管无法预料这给以后的软件业究竟造成了什么样的影响(如果没有这个法律纠纷,很有可能没有今天的革命性的Linux),但有一点可以肯定,Linux更加丰富了这块土壤。

Minix

Minix是一种基于微内核架构的类Unix计算机操作系统,由Andrew S. Tanenbaum发明。Minix最初发布于1987年,开放全部源代码给大学教学和研究工作。2000年重新改为BSD授权,成为自
由和开放源码软件。 因为AT
&T的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将Unix源代码私有化,在大学中不再能使用Unix源代码。教授为了能在课堂上教授学生操作系统运作的实务细节,决定
在不使用任何AT&T的源代码前提下,自行开发与Unix兼容的操作系统,以避免版权上的争议。他以小型Unix(mini-Unix)之意,将它称为Minix。 Minix没有任何代码抄袭Unix,所以它们之间并没有任何继承关系,Minix作为当时有史以来的第一个开源的操作系统放到网上以后,短期之内得到了飞速发展,大量的人进行下载学习。 由于Minix是教授一人所写,所以存在一些漏洞。这时候有使用者发现漏洞存在,想着去下载一些补丁或者自己写一些补丁来修补这些漏洞,修补之后发现效果不错,然后就建议教授利用这些补丁完
善下Minix,结果呢,教授比较固执,意思是说:为了维持Minix的纯洁性,不需要任何外来代码。也就是说,根本不打算做商业发行,所以Minux保持了其最原始的风范。

Linux

在后来的几年内,由于计算机硬件工业的强力运作,以Intel主导的x86系统架构的个人计算机大行其道,所以个人计算机算是相当流行的一个机器了。但在此时,人们使用的大多还是DOS操作系统。
此时,芬兰赫尔辛基大学有个叫Linus Torvalds的学生做了件不寻常的事情。当时他正好有一台386的计算机,由于并不喜欢自己电脑上的DOS系统,所以就想:既然Minix这么棒、这么稳定,那
我何不将它移植到个人计算机 (好在由于Stallman提倡的Open Source理念,他得以接触到一些Source Code,而经由这样的一个想法,O(∩_∩)O~他就很有心的读取了Unix核心,并且去除较
为繁复的核心程序,将它改写成可以适用于一般个人计算机的x86系统上面)。 到了1991年,他终于将0.02版的原始码hobby放到网络上面供大家下载,由于hobby受到大家的肯定,相当多的朋友一起投入这个工作中。终于在1994年,将第一个完整的核心Version
1.0释出,
并且造成目前的大流行。。。由于Linux kernel的发展是由虚拟团队所达成的,大家都是透过网络取得Linux的核心原始码,经由自己精心改造后再回传给Linux社群,进而一步一步的发展完成完
整的Linux系统,至于Linus Torvalds是这个集团中的发起者。由于这个群策群力的缘故,Linus Torvalds将Linux定为同样造福大家的GNU授权模式! Linux是Linus Torvalds受到Minix的影响而作成的。但在设计哲学上,Linux则和Minix大相迳庭。Minix在内核设计上采用微内核的原则,但Linux则和原始的Unix相同都采用宏内核的概念
。在Linux发展之初,双方还于1992年在新闻组上有过一场精彩的理念争论。Minix的作者和支持者认为Linux的单内核构造是“向七十年代的大倒退”,而Linux的支持者认为Minix本身没有实用
性。

Linux主要特性

  • 基本思想

Linux的基本思想有两点:

1.一切都是文件。
2.每个软件都有确定的用途。

其中第一条详细来讲就是系统中的所有都归结为一个文件,包括:命令、硬件和软件设备、操作系统、进程等等,对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说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版内核已经能够完全支持Intel 64位芯片架构,同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

Linux版本和虚拟化介绍

Linux内核版本

Linux内核使用三种不同的版本编号方式。

  1. 用于1.0版本之前(包括1.0)。第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。

  2. 用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0、1996年的2.0),A才变化。可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。

    以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。

  3. 从2004年2.6.0版本开始,使用一种“time-based”的方式。3.0版本之前,是一种“A.B.C.D”的格式。这些年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复、安全更新、添加新特性和驱动的次数。3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复、安全更新、新特性和驱动的次数。

    第三种方式中不再使用偶数代表稳定版,奇数代表开发版这样的命名方式。举个例子:3.7.0代表的不是开发版,而是稳定版!

Linux发行版

Linux主要作为Linux发行版(通常被称为”distro”)的一部分而使用。这些发行版由个人、松散组织的团队、以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。 一个典型的Linux发行版包括:Linux内核、一些GNU程序库和工具、命令行shell、图形界面的X Window系统和相应的桌面环境,如:KDE或GNOME,并包含数千种从办公套件、编译器、文本编辑器到科学工具的应用软件。

由于发展的Linux公司实在太多了,例如著名的Red Hat、OpenLinux、Mandrake 、Debian、SuSE等。所以很多人都很担心,如此一来每个 distribution(安装套件)是否都不相同呢?这就不需要担心了,由于各个distribution都是架构在Linux Kernel下来发展属于自己公司风格的distribution,因此大家都遵守Linux Standard Base ( LSB 的规范,也就是说,各个distribution其实都差不多,用到的都是Linux Kernel,只是各个distribution里面所使用的各套件可能并不完全相同而已)。

Linux内核官网: https://www.kernel.org/

虚拟化

1、何为虚拟化技术? 是一种资源管理技术,广义上是指计算机原件在虚拟的环境运行,泛指资源的抽象化。简单讲就是讲一台设备抽象成多台设备 991现象, 90%的服务器 90%的时间,cpu占用率不足10% 之前单个节点运行着唯一的操作系统实例,通过在这个系统上加装虚拟化平台,可以将系统划分为多个 独立隔离的容器,每个容器是一个虚拟的操作系统 2、虚拟化分类 桌面虚拟化、网络虚拟化、服务器虚拟化、应用虚拟化、硬件辅助虚拟化 我们主要是通过虚拟化软件虚拟计算机,通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。

3、为什么用虚拟化软件? 演示环境 测试软件 节约资源 资源隔离 快照、备份、恢复

4、虚拟化软件选择: vmware workstation、virtual box、xen、kvm、hyper-v等等 建议使用vmware软件,主攻虚拟化领域10多年,市场占有率高,功能强大,与企业级vsphere相通,通用性强。 vmware主要产品 vmware esx vmware server vmware vsphere vmware workstaion 个人使用 Virutal box: 免费、开源的虚拟化软件,本身小巧精悍。原来属于sun公司,现在属于oracle xen、kvm在linux系统的虚拟化技术,kvm与linux内核集成,而xen必须要显示的修改操作系统 Hyper-v 是微软的虚拟化产品

VMWARE安装及分区

Linux安装

Linux初体验

 

SSH

securecrt和基础命令

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124451.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 第二篇 FastAI数据准备「建议收藏」

    第二篇 FastAI数据准备「建议收藏」一、FastAI代码组织结构(文档链接)FastAI库主要涉及神经网络在如下四个领域的应用:collab(协同滤波问题)、tabular(结构化数据或者说表格数据处理)、text(自然语言处理)、vision(机器视觉)。对每一领域(除了collab),其下又会按照如下结构组织代码:(1)data:定义了模型所需的数据集类。(2)transform:数据预处理(如对图像数据的图像…

  • java中经常使用的日期格式化(全)「建议收藏」

    java中经常使用的日期格式化(全)

  • PHP feof() 函数

    PHP feof() 函数

    2021年11月10日
  • PXE+Kickstart 高效批量网络装机

    PXE+Kickstart 高效批量网络装机文章目录1.PXE概述1.1PXE定义1.2PXE批量部署的优点1.3PXE搭建的前提条件1.4PXE架构示意图2.搭建PXE远程安装服务器2.1安装并启用TFTP服务2.2安装并启用DHCP服务2.3准备Linux内核、初始化镜像文件2.4准备PXE引导程序1.PXE概述1.1PXE定义  PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远

  • mysql fsync_用一分钟了解: fsync这个系统调用!

    mysql fsync_用一分钟了解: fsync这个系统调用!1前言不要诧异在MySQL专题中突然插入fsync系统调用,因为马上就要和大家分享MySQL的undolog、redolog、binlog了,在分享这些文章的时候会经常说fsync这个名词,所以提前来看下。2缓冲传统的UNIX实现的内核中都设置有缓冲区或者页面高速缓存,大多数磁盘IO都是通过缓冲写的。当你想将数据write进文件时,内核通常会将该数据复制到其中一个缓冲区中,如果该缓冲没被写满…

  • strstr(str1,str2)函数使用时注意事项

    strstr(str1,str2)函数使用时注意事项可能有的人还没听过strstr函数,个人认为这个一个很实用的函数,strstr(str1,str2)函数是字符串处理函数之一,位于头文件“string.h”中。对于处理字符串的一些问题有很大的帮助。定义:strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。定义说的有点羞涩难懂。举个例子就…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号