摘要:主要从网上摘录了一下关于Linux的历史、对Linux的来源有个大概的了解、这样对以后的学习会有些许的帮助、也能扩展一下自己的知识面。
简单的来说,操作系统主要分为两个东西,一个是内核、一个是一堆核心提供的工具、这一堆工具组成的就是所谓的操作系统。
内核负责控制硬件资源分配,而如果只有内核,则只能让计算机硬件运行,而不能有任何功能,因此需要系统调用提供给开发者使用,从而开发应用程序;内核能够控制硬件,比如:让CPU可以运算、让硬盘可以读写数据等;只有内核的话,只能让计算机运行,但是我们不能控制计算机。
而系统调用是操作系统提供给开发者的调用接口。任何硬件都不会默认就被操作系统控制,而需要开发商根据操作系统提供的接口开发驱动程序,只有安装了驱动程序才能够控制硬件设备。
Unix操作系统在20世纪60年代构思完成并实现,并在1970年首次发布。它因容易获取与可移植性高而广泛被学术机构和工商企业采用、复制和修改。它的设计对其他系统的作者影响很大。
在1983年,RichardStallman创建了以创建一个自由软件,类Unix,与POSIX兼容的操作系统为目标的GNU计划。作为这个计划其中的一部分,他又写了GNU通用公共许可证(GPL)。20世纪90年代初,已经有足够的软件去创建一个完整的操作系统。但是,GNU的内核,GNU Hurd没能够充分吸引开发者;这导致了GNU的未能完成。
在20世纪80年代还有另外一个关于自由操作系统的项目,伯克利软件包。这是由UC Berkeley从AT&T的第六版Unix开发而来的。因为它包含了AT&T所拥有的的Unix代码,所以AT&T在20世纪90年代初对加利福尼亚大学提起了法律诉讼。这严重限制了BSD的发展与应用。
1987年安德鲁·斯图尔特·塔能鲍姆发布一个用于教学的类Unix系统。虽然系统的源代码容易得到,但是对源代码的修改与再发布却受到了限制。另外,MINIX的16位的设计与当时日渐便宜及受欢迎的、个人电脑的Intel 80386架构兼容得不好。
这些因素使得Torvalds开始了他的项目。他曾说过,如果那时候有可用的GNU或者386BSD内核的话,他很可能就不会去写他自己的内核了。
1991年,在赫尔辛基,LinusTorvalds开始那个后面成为了Linux内核的项目。最初它只一个Torvalds用来访问大学里的大型的Unix服务器的虚拟终端。他专门写了一个用于他当时正在用的硬件的,与操作系统无关的程序,因为他要用他那用80386处理器的新PC机的功能。开发是在Minix上,用至今仍为首先的编译器——GCC——来完成的。
Torvalds在他的书只为欢乐 中说过,他最后才意识到自己写了一个操作系统内核。1991年8月25日,他在发布到新闻组“comp.os.minix.”的Usenet上发布了这个系统:
“ 使用minix操作系统的各位,大家好!
我正在为386(486)AT clones写一个(自由的)操作系统(只是爱好而已,不会和GNU一样成为广泛且专业的操作系统)。这个计划从4月份开始酝酿,现在已做好准备。我希望得到人们关于minix优缺点的任何反馈意见,因为我的操作系统和它有类似的方面(因为可行性方面的原因,两者的文件系统物理布局相同)。我刚刚把bash(1.08)和gcc(1.40)移植到了系统上,而且看来运行得很好。这意味着我可以在几个月内我就可以把它变得有实用性了。我想知道大家想要些什么特色。欢迎提任何的建议,但是我不保证我会实现你的建议:-)
Linus ([email protected])
另:是的,它没有包含任何minix的代码;它的文件系统还是一个多线程的。它没有可移植性(它利用了386的任务调度算法等),而且它很可能永远只会支持AT的硬盘(我只有这种硬盘:-( )
”
——Linus Torvalds
Linus Torvalds本要把他的发时叫做Freax——“fread”,“free”和“x”(暗指Unix)的合成词。在开发系统的前半年里,他把文件以文件名“Freax”存储。Torvalds考虑过Linux这个名字,但是因为觉得它过于自我本位而放弃了使用它。
为便于开发,在1991年9月,他把那些文件上传到了赫尔辛基工业大学(HUT)的FTP服务器(ftp.funet.fi)。Torvalds在HUT负责管理那个服务器的同事Ari Lemmke,觉得“Freax”这个名字不是很好,就在不咨询Torvalds的情况下,把项目的名字改成了“Linux”。但是之后,Torvalds也同意“Linux”这个名字了:“经过多次讨论,他承认Linux这个名字更好。在0.01版本Linux的源代码的makefile里仍然使用‘Freax'这个名字,在之后‘Linux'这个名字才被使用。所以,Linux这个名字并不是预先想好的,只是它被广泛接受了而已”。
Linux的吉祥物是企鹅(英文名:Tux),因为Torvalds在小时候被企鹅咬过,因此印象非常深刻;
a)稳定的系统:Linux 本来就是建立在 Unix 上面发展出来的操作系统,因此,Linux 具有与 Unix 系统相似的的程序接口跟操作方式,当然也继承了 Unix 稳定并且有效率的特点。常听到安装 Linux 的主机连续运做一年以上而不曾当机、不必关机是稀松平常的事;
b) 免费或少许费用:由于 Linux 是基于 GPL 的基础下的产物,因此任何人皆可以自由取得 Linux ,至于一些『安装套件』的发行者,他们发行的安装光盘也仅需要些许费用即可获得!不同于 Unix 需要负担庞大的版权费用,当然也不同于微软需要一而再、再而三的更新你的系统,并且缴纳大量费用!
c) 安全性、漏洞的修补:如果你常玩网络的话,那么你最常听到的应该是『没有绝对安全的主机』!没错!不过 Linux 由于支持者日众,有相当多的热心团体、个人参与其中的开发,因此可以随时获得最新的安全信息,并给予随时的更新,亦即是具有相对的较安全!
d)多任务、多使用者:与Windows 系统不同的, Linux 主机上可以同时允许多人上线来工作,并且资源的分配较为公平,比起 Windows 的单人假多任务系统要稳定的多!这个多人多任务可是 Unix-Like 上面相当好的一个功能,怎么说呢?你可以在一部 Linux 主机上面规划出不同等级的使用者,而且每个使用者登入系统时的工作环境都可以不相同,此外,还可以允许不同的使用者在同一个时间登入主机,以同时使用主机的资源。
e) 使用者与群组的规划:在 Linux 的机器中,档案的属性可以分为『可读、可写、可执行』等参数来定义一个档案的适用性,此外,这些属性还可以分为三个种类,分别是『档案拥有者、档案所属群组、其它非拥有者与群组者』。这对于项目计划或者其它计划开发者具有相当良好的系统保密性。
f)相对比较不耗资源的系统
a)有些专业软件没有Linux版本;
b)图形接口作的还不够好
20世纪60年代,MIT开发分时操作系统(CompatibleTIme-Sharing System),支持30台终端访问主机;
~主机负责运算,而终端负责输入输出;
1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了;
~刚开始并没有鼠标、键盘,输入设备只有卡片机,因此如果要测试某个程序,则需要将读卡纸插入卡片机,如果有错误,还需要重新来过;
~Multics:MultiplexedInformation and Computing Service
1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
~因为汇编语言对于硬件的依赖性,因此只能针对特定硬件;
~只是为了移植一款“太空旅游”的游戏;
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
~将B语言改成C语言,由此产生了C语言之父;
~90%的代码是C语言写的,10%的代码用汇编写的,因此移植时只要修改那10%的代码即可;
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(BerkeleySoftware Distribution)
~ Bill Joy是Sun公司的创始人;
1979年,Unix发布System V,用于个人计算机;
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学;
1984年,Stallman开始GNU(GNU's NotUnix)项目,创办FSF(Free Software Foundation)基金会;
~ 产品:GCC、Emacs、Bash Shell、GLIBC;
~ 倡导“自由软件”;
~ GNU的软件缺乏一个开放的平台运行,只能在Unix上运行;
~ 自由软件指用户可以对软件做任何修改,甚至再发行,但是始终要挂着GPL的版权;
~ 自由软件是可以卖的,但是不能只卖软件,而是卖服务、手册等;
1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明;
1988年,MIT为了开发GUI,成立了XFree86的组织;
1991年,芬兰赫尔辛基大学的研究生LinusTorvalds基于gcc、bash开发了针对386机器的Lniux内核;
1994年,Torvalds发布Linux-v1.0;
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅;
Linux的内核版本分为稳定版本和开发版本;
此版本如果是偶数,则为稳定版本,如果是奇数,则为开发版本,内核开发人员使用;
释放版本为对次版本的改动,即加入一些功能;
修改版本为编译的次数,每次加一;
a) Linux Distribution
Linux Distribution:Kernel+Softwares+Tools组成的可安装的系统;Ubuntu、Fedora、SUSE、Redhat都是LinuxDistribution;
Linux Distribution按照安装软件的方式分为:RPM包和dpkg安装;
Linux Distribution按照发布版分为:团队版(适用于个人计算机)和商业版(适用于服务器);
b) Unix Like
很像Unix的操作系统;
c) 授权模式
Open Source:开放源代码;
Close Source:没有源代码;
Freeware:免费但不开源;
Shareware:一开始免费试用,经过一段时间后收费;
d) POSIX规范
POSIX是对应用程序和系统调用之间的接口的规范;
e) SELinux
SecurityEnhanced Linux:美国国家安全局开发,控制Linux的系统文件的访问权限;
f) KDump功能
当内核出现错误时,会将当时内存的消息写入文件中,以便内核开发者查看;