(一)Linux是什么与如何学习 – 1.1 Linux是什么

1.1 Linux是什么

Linux就是一组软件,问题是这个软件是操作系统还是应用程序? 且Linux可以在哪些种类的计算机硬件上面运行?而Linux源自哪里?为什么 Linux 还不用钱?

1.1.1 Linux是什么?操作系统/应用程序?

(一)Linux是什么与如何学习 - 1.1  Linux是什么

计算机主机是由一堆硬件所组成的,为了有效率的控制这些硬件资源,于是乎就有操作系统的产生了。 操作系统除了有效率的控制这些硬件资源的分配,并提供计算机运行所需要的功能(如网络功能)之外,为了要提供程序设计师更容易开发软件的环境,所以操作系统也会提供一整组系统调用接口来给软件设计师开发用!

Linux就是一套操作系统!

Linux是Open Source的操作系统,所以他的程序码可以被修改成适合在各种机器上面运行的, 也就是说,Linux具有“可移植性”

Linux提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 这个架构是沿袭Unix良好的传统来的,所以相当的稳定而功能强劲!此外, 由于这个优良的架构可以在目前的个人计算机(x86系统)上面跑, 所以许多的软件开发者渐渐的将他们的工作心血移转到这个架构上面。

1.1.2 Linux之前,Unix的历史

  • 1969年以前:一个伟大的梦想–Bell,MIT与GE的“Multics”系统

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

(一)Linux是什么与如何学习 - 1.1  Linux是什么

在1960年代初期麻省理工学院(MIT)发展了所谓的: “相容分时系统(Compatible Time-Sharing System, CTSS)”, 它可以让大型主机通过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。

相容分时系统可以说是近代操作系统的始祖呢!他可以让多个使用者在某一段时间内分别使用CPU的资源, 感觉上你会觉得大家是同时使用该主机的资源!
为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 或称为通用电器)共同发起了Multics的计划, Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机连线使用的目标。

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

原本参与Multics计划的人员中,已经从该计划当中获得一些点子, Ken Thompson 就是其中一位!

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

这个文件系统有两个重大的概念:

  1. 所有的程序或系统设备都是文件
  2. 不管建构编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标

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

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

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

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

  • 1977年:重大的Unix分支–BSD的诞生

然贝尔属于AT&T,但是AT&T此时对于Unix是采取较开放的态度,此外,Unix是以高阶的C语言写成的, 理论上是具有可移植性的!
1973年后来,Unix便得以与学术界合作开发! 最重大的接触就是与加州柏克莱(Berkeley)大学的合作。

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

  • 1979年:重大的 System V 架构与版权宣告

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

1979 年时,AT&T推出 System V 第七版 Unix 后,这个情况就有点改善了。 这一版最重大的特色是可以支持x86架构的个人计算机系统,也就是说 System V 可以在个人计算机上面安装与运行了。

由于AT&T由于商业的思考,以及在当时现实环境下的思考,于是想将Unix的版权收回去。因此, AT&T在1979年发行的第七版Unix中,特别提到了 “不可对学生提供源代码”的严格限制! 同时,也造成Unix业界之间的紧张气氛,并且也引爆了许多的商业纠纷~

  • 1984年之一:x86架构的Minix操作系统开始撰写并于两年后诞生

关于1979年的版权声明中,影响最大的当然就是学校教Unix核心源代码相关学问的教授了!想一想,如果没有核心源代码,那么如何教导学生认识Unix呢?

谭宁邦教授于是乎自己动手写了Minix这个UnixLike的核心程序! 在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心源代码!并且强调他的Minix必须能够与Unix相容才行!

  • 1984年之二:GNU计划与FSF基金会的成立

Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,对于现今的自由软件风潮,真有不可磨灭的地位!目前我们所使用的许多自由软件或开源软件,几乎均直接或间接受益于GNU这个计划呢!

不论是什么软件,都得要进行编译成为二进制文件(binary program)后才能够执行,如果能够写出一个不错的编译器,那不就是大家都需要的软件了吗? 因此他便开始撰写C语言的编译器,那就是目前相当有名的GNU C Compiler(gcc)

有GNU所开发的几个重大软件: Emacs / GNU C (GCC)/ GNU C Library (glibc) / Bash shell。

GNU 自己开发的核心称为 hurd, 是一个架构相当先进的核心。不过由于开发者在开发的过程中对于系统的要求太过于严谨,因此推出的时程一再延后,所以才有后来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操作系统当中!

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

了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等 GNU 的工具写了一个小小的核心程序,该核心程序单纯是个玩具,不像 GNU 那么专业。 不过该核心程序可以在Intel的386机器上面运行就是了。这让许多人很感兴趣!从此开始了Linux不平凡的路程!

1.1.3 关于GNU计划、自由软件与开放源代码

GNU计划对于整个自由软件与开放源代码软件来说是占有超级重大的角色!

  • 自由软件的活动

1984年创立GNU计划与FSF基金会的Stallman先生认为,写程序最大的快乐就是让自己发展的良好的软件让大家来使用了! 另外,如果使用方撰写程序的能力比自己强,那么当对方修改完自己的程序并且回传修改后的程序码给自己,那自己的程序撰写功力无形中就更往上爬了! 这就是最早之前 AI 实验室的骇客风格!

此外,史托曼同时认为,如果你将你程序的Source code分享出来时,若该程序是很优秀的,那么将会有许多人使用, 而每个人对于该程序都可以查阅source code,无形之中,就会有一票人帮你除错! 你的这支程序将会越来越壮大!越来越优秀!

  • 自由软件的版权GNU GPL

为了避免自己的开发出来的Open source自由软件被拿去做成专利软件, 于是Stallman同时将GNU与FSF发展出来的软件,都挂上GPL的版权宣告~ 这个FSF的核心观念是“版权制度是促进社会进步的手段, 版权本身不是自然权力。

  • 自由(Free)的真谛

Stallman对GPL一直是强调Free的,这个Free的意思是这样的:
“Free software” is a matter of liberty, not price. To understand the concept, you should think
of “free speech”, not “free beer”. “Free software” refers to the users’ freedom to run, copy,
distribute, study, change, and improve the software
大意是说,Free Software(自由软件)是一种自由的权力,并非是“价格”! 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力, 但是,这并不代表你可以到处喝“免费的啤酒!(free beer)”,也就是说, 自由软件的重点并不是指“免费”的,而是指具有“自由度, freedom”的软件, 史托曼进一步说明了自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件

自由软件特点:
取得软件与源代码:你可以根据自己的需求来执行这个自由软件;
复制:你可以自由的复制该软件;
修改:你可以将取得的源代码进行程序修改工作,使之适合你的工作;
再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
回馈:你应该将你修改过的程序码回馈于社群!

GPL 对于自由软件的作者优点
软件安全性较佳;
软件执行性能较佳;
软件除错时间较短;
贡献的源代码永远都存在。

开源软件应符合:

  1. 公布源代码且用户具有修改权:用户可以任意的修改与编译程序码,这点与自由软件差异不大;
  2. 任意的再散佈:该程序码全部或部份可以被贩售,且程序码可成为其他软件的元件之一,作者不该宣称具3. 有拥有权或收取其他额外费用。
  3. 必须允许修改或衍生的作品,且可让再发布的软件使用类似的授权来发表即可。
  4. 用户可使用与原本软件不同的名称或编号来散布。
  5. 不可限制某些个人或团体的使用权。
  6. 不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等
  7. 不可限制在某些产品当中,亦即程序码可以应用于多种不同产品中。
  8. 不可具有排他条款,例如不可限制本程序码不能用于教育类的研究中,诸如此类。
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容