一、描述计算机的组成及其功能。
(1)运算器或称算术逻辑单元(Arithmetical and Logical Unit) 运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。 (2)存储器(Memory unit) 存储器的主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。存储器是具有“记忆”功能的设备,它用具有两种稳定状态的物理器件来存储信息。这些器件也称为记忆元件。由于记忆元件只有两种稳定状态,因此在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。记忆元件的两种稳定状态分别表示为“0”和“1”。日常使用的十进制数必须转换成等值的二进制数才能存入存储器中。计算机中处理的各种字符,例如英文字母、运算符号等,也要转换成二进制代码才能存储和操作。 存储器是由成千上万个“存储单元”构成的,每个存储单元存放一定位数(微机上为8位)的二进制数,每个存储单元都有唯一的编号,称为存储单元的地址。“存储单元”是基本的存储单位,不同的存储单元是用不同的地址来区分的,就好像居民区的一条街道上的住户是用不同的门×××号码来区分一样。 计算机采用按地址访问的方式到存储器中存数据和取数据,即在计算机程序中,每当需要访问数据时,要向存储器送去一个地址指出数据的位置,同时发出一个“存放”命令(伴以待存放的数据),或者发出一个“取出”命令。这种按地址存储方式的特点是,只要知道了数据的地址就能直接存取。但也有缺点,即一个数据往往要占用多个存储单元,必须连续存取有关的存储单元才是一个完整的数据。 计算机在计算之前,程序和数据通过输入设备送入存储器,计算机开始工作之后,存储器还要为其它部件提供信息,也要保存中间结果和最终结果。因此,存储器的存数和取数的速度是计算机系统的一个非常重要的性能指标。 (3)控制器(Control Unit) 控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。 控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操作。因此,计算机自动工作的过程,实际上是自动执行程序的过程,而程序中的每条指令都是由控制器来分析执行的,它是计算机实现“程序控制”的主要部件。 通常把控制器与运算器合称为中央处理器(Central Processing Unit-CPU)。工业生产中总是采用最先进的超大规模集成电路技术来制造中央处理器,即 CPU 芯片。它是计算机的核心部件。它的性能,主要是工作速度和计算精度,对机器的整体性能有全面的影响。 (4)输入设备(Input device) 用来向计算机输入各种原始数据和程序的设备叫输入设备。输入设备把各种形式的信息,如数字、文字、图像等转换为数字形式的“编码”,即计算机能够识别的用1和0表示的二进制代码(实际上是电信号),并把它们“输入”(INPUT)到计算机内存储起来。键盘是必备的输入设备、常用的输入设备还有鼠标器、图形输入板、视频摄像机等。 (5)输出设备(Output device) 从计算机输出各类数据的设备叫做输出设备。输出设备把计算机加工处理的结果(仍然是数字形式的编码)变换为人或其它设备所能接收和识别的信息形式如文字、数字、图形、声音、电压等。常用的输出设备有显示器、打印机、绘图仪等。
二、描述内核功能以及作用。
内核功能简介 内核,是基于硬件的第一层软件扩充,是操作系统的核心,提供操作系统最基础的功能,是操作系统的基础。它为众多应用软件提供计算机硬件的安全访问的一部分软件,这种访问资源是有限的,并且内核决定一个程序对某部分硬件资源分配和占用多久进行管理。直接对硬件操作是非常复杂的,所以内核通过提供硬件抽象的方法来完成操作,硬件的抽象隐藏了复杂性,对软件提供和硬件交互的一个简洁的接口,是程序设计更为简单。但严格的说内核并不是计算机系统的必要组成部分。它主要对系统进程管理、内存管理、设备管理、网络管理及文件系统管理。 内核的作用 (1)进程管理 内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象. (2)内存管理 计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能. (3)文件系统 Linux在很大程度上基于文件系统的概念; 几乎 Linux中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext4文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统. (4)设备管理 几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器。 (5)网络管理 网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现。
三、按系列罗列常见Linux的发行版,并描述不同发行版之间的联系与区别。
Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包。其中一个原因是,多样化的社区参与Fedora的建设;它不只是一家公司。在这个过程中,CentOS用于活动,演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。 SUSE, SUSE Linux Enterprise Server (SLES), 和openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, 和CentOS的关系。 Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。Debian是一个纯开源计划并着重在一个关键点上,稳定性。它同时也提供了最大的和完整的软件仓库给用户。 Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点: Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用, 但是Fedora Core的稳定性较差,最好只用于桌面应用。 Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去:) Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。 Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。 最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支: stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运 行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选 择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。 下面给为选择一个Linux发行版本建议: 如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你 不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的 区别仅仅是桌面程序的不一样。 如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧! 如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。 如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。 如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。 LINUX各种版本: 基于Debian List item 1,Adamantix:基于Debian,特别关注安全。 2,Amber Linux:基于Debian,针对拉脱维亚用户作了一些定制。 3,ASLinux Desktop:西班牙语,基于Debian与KDE,针对各种桌面用途,包括家用、办公、教育、游戏、科学、软件开发,最大的卖点在于其丰富的可用性。 4,B2D Linux:基于Debian,希望可以由“做中学”来产生一个小而美的中文Linux包的计划。 5,Debian GNU/Linux:由大批社区志愿者收集的包。Debian拥有庞大的软件包可供选择(25000个以上),支持大量的硬件平台(12个计算机系统结构)。以前该包因为安装困难受到责难,但最新的版本具备了简单易用的文本式安装环境。非自由软件不会包含在Debian的主要软件包中。 6,Guadalinex:由西班牙的安达卢西亚地×××府推动,基于Debian,针对西班牙语的家庭用户以及学校。 7,Knoppix:第一张Debian的自启动运行光盘。包含的软件非常多,启动时会自动进行硬件监测。从4.0起,用DVD作光盘。 以下基于Knoppix: Gnoppix:Knoppix的GNOME版,该包发行周期较长,未来会跟Ubuntu进行集成。 Kanotix:自启动运行光盘,基于Knoppix,也可以安装到硬盘上。有很好的硬件支持,桌面与笔记 本电脑的集成也很出色。 Kurumin:针对巴西用户的Knoppix。 8,LinEx:由西班牙的埃斯特雷马杜拉地×××府推动的包。 9,Loco Linux:基于Debian的阿根廷Linux。 10,MEPIS: 基于Debian的桌面和服务器。 11,Rays Linux(华镭):基于Debian,针对亚洲市场,由新华科技(南京)系统软件有限公司开发。 12,Skolelinux:在挪威发起,旨在打造适合于学校的轻便包。 13,Symphony OS:基于Debian,与众不同地采用Mezzo桌面。 14,Ubuntu:对初学者而言最易用的Linux包。由Canonical有限公司赞助,基于Debian,使用自己的软件包库,与Debian的有所不同,旨在开发出更加友好的桌面,已经取得了良好的声誉。 15,Wdlinux是基于CentOS精简的定制版本,是针对web服务器的应用而精简的.同时安装做了些自动化安装的处理,达到更易于安装和使用. 以下基于Ubuntu: Ubuntu Kylin:中国定制本地化的ubuntu发行版 LinuxMint:基于Ubuntu的发行版,人气很高,是目前排行榜上第三名的发行版。 Edubuntu:是Ubuntu的教育发行版。 Hiweed:基于Ubuntu,使用Xfce桌面环境的轻量级中文发行版。0.x版基于Debian(现已改名Deepin)。 Kubuntu:使用KDE桌面环境的Ubuntu包。 Lubuntu:使用LXDE桌面环境的Ubuntu包。 PUD GNU/Linux:基于Ubuntu的小型Linux,可安装于光盘或256 MB以上的USB 闪存盘。 Xubuntu:使用Xfce桌面环境的Ubuntu包。 基于RPM 1,aLinux:原名Peanut Linux,针对家庭用户。 2,ALT Linux:东欧版本。 3,Ark Linux:强调易学易用。 4,ASPLinux:提供俄语等东欧语言的支持。 5,Asianux Server:由中国红旗、日本Miracle、韩国Hannsoft三家联合开发,主要市场针对亚洲地区,对中,文、日文、韩文的支持比较好。 6,Blag Linux:体积小,但功能较多。 7,Caixa Mágica:葡萄牙语的Linux。 8,cAos Linux:由社区创建的包,功能通用、培植简单。 9,CentOS:由社区支持的包,旨在100%地与Red Hat Linux企业版兼容,但不包含Red Hat 的商业软件。 10,Cobind:桌面。 11,Conectiva:一个巴西包,曾经是United Linux的创建成员,现在该公司已经并入到Mandriva Linux。 12,EduLinux:用于教育的包。 13,Fedora:可用作工作站、桌面以及服务器,由红帽公司及其社区开发。 14,Linux Mobile System:基于Fedora Core的包,设计成从USB存储设备启动,比如U盘。 15,Linpus Linux:来自台湾厂商发行的Linux版本。是一套通过LSB 3.1认证、GB18030-2000编码检验测试及支持CNS11643中文标准交换码全字库的Linux桌面型系统。在中文支持能力上较为完善。 16,Magic Linux:一个易用的中文包。 17,Mandriva Linux:最初是红帽的一个变种,针对奔腾级CPU作了优化,后来在保持兼容性的同时,派生成为更友好的包。Mandriva中所有的软件仍然免费,还有活跃的社区支持,另外通过注册以及销售盒装产品,Mandriva还提供企业级的支持与服务,还有针对付费用户的俱乐部。 18,Novell Linux Desktop:由于Novell收购了SUSE,他们的Linux产品对原来的包有所继承。 19,PCLinuxOS:一个易用的自启动运行光盘,以良好的观感著称;硬盘安装也同样轻而易举。最初基于Mandrake 9.2,而后PCLinuxOS针对桌面用户,开始自己的开发道路。在保留基于RPM包的同时,PCLinuxOS别出心裁地使用自己的APT包管理工具(受Debian影响),但图形前端仍然用的是Synaptic。 20,PCQLinux2004:由印度的PCQuest杂志生产,基于Fedora Core。 21,PLD Linux:来自波兰的包,针对较高级别的用户,比Slackware、Gentoo更加易用。 22,QiLinux:意大利生产,包括桌面版、光盘自启动版,还有服务器版、高级服务器版。 23,红旗Linux:由北京中科红旗软件技术有限公司开发,主要针对中国市场。 24,Red Hat Enterprise Linux:红帽Linux家族中唯一的商业分支。 25,Scientific Linux:由红帽Linux企业版,将遵循GPL的软件重新编译而成。 26,SUSE/openSUSE:来自德国,是欧洲最流行的包之一。跟红帽一样,也包括大量的软件,需要7张以上的CD,现在则用双DVD。这个包有独特的配置工具YaST。也是United Linux的创立者之一,已经被Novell公司收购。openSUSE是一个新的版本,基于社区,完全开源。 27,Tinfoil Hat Linux:对安全格外关注的包。 28,Trustix:专注于安全与稳定性的包。 29,Turbo Linux:在亚洲较流行的一个包,基于Red Hat,是United Linux的成员。 30,Vine Linux:基于Red Hat的一个日本包。 31,White Box Enterprise Linux:意在兼容Red Hat企业版第三版。 32,Yellow Dog:基于Red Hat,针对PowerPC平台。 33,YOPER:"Your Operating System"(你的操作系统),来自新西兰的桌面包。Slackware 其它打包方式的包 1,ArchLinux:基于KISS原则,针对i686的CPU做了优化,以.tar.xz格式打包并由包管理器进行跟踪维护,特别适合动手能力强的linux用户。 2,Foresight Linux:采用Conary包管理系统,引入了GNOME中的许多最新技术,比如beagle、f-spot、howl以及最新的hal等,这个包在保持易用的同时,更注重革新。 3,Gentoo:这个包采用自己独特的Portage包管理系统,吸引了许多狂热爱好者以及专业人士,强调自己编译源码,而不是直接用二进制包,这样程序运行速度更快。 4,GoboLinux:构建了新的文件系统,比如GCC放在/Programs/GCC/这样的目录,为了让系统能找到这些文件,在/System/Links/Executables这样的目录下归组,这样就包含了/Programs目录下所有可执行文件的符号链接。 5,Heretix:以前叫做RubyX,包的管理,包括包管理,都是通过由Ruby写的脚本来完成,所有的包都安装在/pkg目录下。 6,ImpiLinux,来自南非的包,主要针对非洲用户。 7,Jedi GNU/Linux:使用force-get包管理器,允许源码、二进制软件包共存。 8,Linux From Scratch:这是一份文档,介绍如何自己动手,如何白手起家编译打造自己独一无二的Linux系统。 9,Lunar Linux,基于源码,由Sorcerer GNU/Linux所派生。 10,MkLinux:"Microkernel Linux"的缩写,旨在将Linux移植到跑Mach微核的PowerPC机器上。 11,Onebase Linux:采用OLM包管理器,对二进制、源码进行管理。 12,Sabayon Linux:基于Gentoo,来自意大利。 13,Sorcerer GNU/Linux:基于源码。 14,Source Mage GNU/Linux:也是基于源码,由Sorcerer GNU/Linux所派生。 15,Ututo:基于Gentoo,来自阿根廷。 16,Open Client:基于Red Hat Enterprise Linux,来自IBM,提供有Fedora、Ubuntu、SLED的Layer。给老机器订制的小型包 给老机器订制的小型包 一般的迷你包,除了可以硬盘安装,也可以安装在闪存盘上。 1,Austrumi:拉脱维亚的自启动CD包,支持英语,功能比较丰富,基于Slackware。 2,cAos Linux:有社区维护,功能通用。 3,Damn Small Linux(DSL):这是小型包的老祖宗,放在迷你CD上,原先设计是想看看一张50M的CD可以放多少桌面程序,原来是作为个人玩具,但不久Damn Small Linux周围就聚成了一个社区,不少人加入进来,参与改进,包括一个远程、本地的程序安装系统,多功能的备份、还原系统,另外还加入了Knoppix的硬件检测,使用自己的*.dsl软件包系统,默认的窗口管理器是Fluxbox。可以在微软虚拟机软件里运行,无须关闭WINDOWS系统专门进入LINUX系统,特别适合初学者。 4,Feather Linux:类似于Damn Small Linux,但总容量是115MB,兼容Debian的软件包。 5,Flonix USB版:放在USB设备上的可移动桌面包,这是个商业版,只能给购买的U盘作预装。 6,Knopperdisk:为U盘设计的包,基于Gentoo。 7,Puppy Linux:启动特别地快,在配置较低的PC上(内存小于48M),也可以运行自如。包含的工具都是特别精简的,使用Fvwm95作为窗口管理器(现在是JWM)。 8,Kuppy Linux:基于Puppy发展的发行版,拥有启动特别地快,在配置较低的PC上等特点外,将桌面置换为XFCE4,更适合习惯windows操作的用户。 9,Tiny Core Linux:是一个仅有10MB的桌面操作系统,甚至可以在486上运行,但它并不是一个完整的桌面,而且只支持有限局域网。 10,Stem桌面:一个混合产品,使用标准的Debian来编译桌面(Fvwm95)。针对老机器(CPU小于等于266Mhz,内存小于等于64M)设计,从Debian软件仓库种选择的包都是最轻巧的。与众不同的是,该包没有自己的安装光盘,用户得先安装Debian,然后运行文本界面的安装脚本,然后通过网络连接,编译剩余的软件。这个包100%跟Debian兼容。 11,SPBLinux:用于软盘、U盘的迷你版本。 12,Vector Linux:中小型包,针对新老机器,采用小而快的应用程序,以及简化的安装程序。该包有多个版本,包括大小为2G的SOHO(Small Office, Home Office)版,以及800M的"Dynamite"版。SOHO版提供KDE/IceWM窗口管理器,外观很专业;Dynamite版只采用IceWM,以及部分工具。该包包括了简单的升级包管理程序,基于Slackware。 13,eMoviX:小型包,专门用作媒体播放用途。 部分或全部的商业版 1,BlueCat Linux:Linux嵌入式系统,可用于小型客户定制的设备,乃至大规模多CPU的系统。 2,Libranet:基于Debian的桌面包,与Debian保持100%的兼容。安装过程有硬件自动检测,桌面有一个管理员菜单(文字模式与图形模式),这样简化了硬件与软件的配置。 3,Linspire:另一个桌面包,以前叫Lindows,基于Debian。可以通过Linspire或者Debian的apt命令,添加额外的软件,但不保证跟Debian的兼容性。该包包含不少的专属软件。 4,Mandriva Linux:Mandrakesoft跟Conectiva合并以后,更名为Mandriva Linux。对于菜鸟来说,该包的各种产品,包括服务器、工作站、小型商用以及个人版,是最容易维护的Linux包之一。原来是Red Hat的一个变种,针对奔腾级CPU作了优化,进而发展出了更加方便的包。在保留完全自由软件的同时,Mandriva商业模式,通过捐献,以及对非会员延迟发布政策,增加了企业级的支持与服务。 5,MEPIS:一个基于Debian的包,也可以作为自启动光盘来运行,这样可以在决定硬盘安装前,尝尝鲜。 6,Mobilinux:针对手机,由Montavista出品。 7,Nitix:第一个基于Linux服务器的自治操作系统,具有自管理、自恢复、自配置和自优化的能力。 8,Novell Linux 桌面:Novell收购SUSE后,两家的包就互相融合了。 9,Progeny Debian:由Progeny开发,基于Debian,使用从Red Hat移植过来的Anaconda安装器,该包又称为Progeny Componentized Linux。 10,Red Hat Enterprise Linux:从Red Hat Linux派生出的纯商业版。 11,SUSE:基于德国的纽伦堡,以前叫SuSE,是欧洲最流行的Linux包,由自己独特的配置工具YaST,用户可以下载到体验版(跟专业版类似)。该公司是United Linux的创建者,最近被Novell收购。 12,Xandros:来自加拿大,基于过去的Corel Linux,专注于桌面市场,以及跟Windows的兼容性。该包包含一些专属软件,跟Debian的dpkg包管理系统兼容。 13,YES Linux:针对小型公司,提供建议的网络环境。专用包 Slackware 1,Kate OS:基于Slackware的设计理念,一个轻便的波兰语包。 2,Zenwalk Linux(以前是MiniSlack):基于Slackware作了优化,注重简便、快捷。 3,Plamo Linux:基于Slackware的日语包。 4,Slackware:一个老牌包,由Patrick Volkerding维护,特别注重简洁与安全。 5,Ultima Linux:基于Slackware,由Martin Ultima作了优化。 6,SLAX:一个基于Slackware的自启动运行光盘,由Tomas Matejicek维护。 7,Frugalware:通用Linux包,面向中级用户。其它打包方式的包 专用包 1,Android:来自Google,以apk格式打包,采用Dalvik虚拟机提供类似Java (编程语言)的应用程序接口。 基于Android: Tapas:是一款应用于手机的操作系统,由Tapas公司进行开发发布,tapas手机操作系统前身是通过修改谷歌Android移动操作系统代码来完成Tapas软件。 2,Maemo:来自诺基亚,基于Debian,目前专用于诺基亚的N770、N800等少数网络终端。 3,Moblin︰来自英特尔,现已捐给Linux基金会,用于Eee PC或其他上网本,支持快速启动。 4,MeeGo:MeeGo的意思是Maemo + Moblin = MeeGo,也就是诺基亚Maemo系统和英特尔Moblin平台的融合,支持Linux智能操作平台,非常适合Maemo系统的运行。其它平台 其它平台 iPodLinux基于修改版uClinux内核,并编写有所谓的“podzilla”简单用户界面。但是安装据说将失去苹果公司保修资格,可以在高于不包含2G以上的任何有屏幕苹果iPod上面运行。
四、描述常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别。
GPL GPL授予程序接受人以下权利,或称“自由”: 以任何目的运行此程序的自由 以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提) 再发行复制件的自由 改进此程序,并公开发布改进的自由(能得到源代码是前提) 相反地,随版权所有软件的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。 GPL与其他一些更“许可的”自由软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在复制件及演绎作品中得到保障。它通过一种由Stallman发明的叫copyleft的法律机制实现,即要求GPL程序的演绎作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成版权所有软件。 GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可证。 这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。 copyleft利用版权法来达到与其相反的目的:copyleft给人不可剥夺的权利,而不是版权法所规定的诸多限制。这也是GPL被称作“被黑的版权法”的原因。 许多GPL软件发行者都把源代码与可执行程序捆绑起来。另一方式就是以物理介质(比如CD)为载体提供源代码。在实践中,许多GPL软件都是在互联网上发行的,源代码也有许多可以FTP方式得到。 copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。 MPL MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处: MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口 MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。 对源代码的定义 而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。” MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。 LGPL GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程序库。这个许可证以前被称为GNU库(Library)通用公共许可证。 LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。 Apache License Apache License是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件: 需要给代码的用户一份Apache License 如果你修改了代码,需要再被修改的文件中说明 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改 Apache License也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。 BSD BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理,只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软件。如果你对软件进行了修改,你可以限制其他使用者得到你修改的软件的自由。 BSD授权许可证没有实现"通透性"自由,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。 当一个非程序员仅仅理解一个程序的功能,但是不了解程序是如何做的时,即使你没有在开发软件中做任何工作那你就可以通过高超的市场技巧将软件卖给该用户。比如拿最流行的桌面操作系统作为例子,你就能很好的理解一个没有很好的程序技巧的软件公司只要具有高超的市场营销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力,但是具有很强的市场能力和能将其他开发者的软件包括到自己的系统,而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。 MIT MIT是和BSD一样宽泛的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的. 有许多团体均采用MIT许可证。例如著名的ssh连接软件PuTTY与X Windows System (X11)即为例子。Expat, Mono开发平台库,Ruby on Rails, Lua 5.0 onwards等等也都采用MIT授权条款。
五、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述
论Linux的哲学思想: 一切皆文件;由众多单一目的的小程序,一个程序只实现一个功能,多个程序组合完成复杂任务;组合小程序完成复杂任务;文本文件保存配置信息;尽量避免与用户交互;提供机制,而非策略。 一切皆文件:是 Linux 的基本哲学之一。普通的文件,目录、字符设备、块设备、Linux 中都是以文件被对待;虽然本身的类型不同,但是Linux提供的都是一样的。 单一小程序:一个单一的程序或者可执行的文件,不会太过于复杂和过大,这样才会保证Linux的高速运转。过于复杂的程序。linux也会通过连接很多是简单程序来实现复杂程序的运转,保证了简单功能的高效性的同时,复杂的程序也必然是高效性的 避免与用户交互:Linux上支持的脚本语言种类十分丰富、易学简单,易于使用者已脚本的方式自动完成众多功能。 提供机制,而非策略:Linux是一款开源的系统,所有的系统配置都写在配置文件之中,无论修改什么只要在在配置文件中修改即可,修改配置文件只需要任意一款文本编辑器就可以,不用像Windows只可以在注册表中修改,工具单一,过于复杂。
六、描述linux目录结构以及目录结构命名规定。
根据FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。
事实上,FHS是根据过去的经验一直在持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
根目录 (/) 的意义与内容:
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文件、开机所需程序、 函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。 因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分割槽内, 因为越大的分割槽妳会放入越多的数据,如此一来根目录所在分割槽就可能会有较多发生错误的机会。
因此FHS标准建议:根目录(/)所在分割槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
有鉴于上述的说明,因此FHS定义出根目录(/)底下应该要有底下这些次目录的存在才好:
事实上FHS针对根目录所定义的标准就仅有上面的咚咚,不过我们的Linux底下还有许多目录你也需要了解一下的。 底下是几个在Linux当中也是非常重要的目录喔:
除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分割槽!请背下来啊! 好了,谈完了根目录,接下来我们就来谈谈/usr以及/var!先看/usr里面有些什么东西:
/usr 的意义与内容:
依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static), 如果你知道如何透过网络进行分割槽的挂载(例如在服务器篇会谈到的NFS服务器),那么/usr确实可以分享给局域网络内的其他主机来使用喔!
很多读者都会误会/usr为user的缩写,其实usr是Unix Software Resource的缩写, 也就是『Unix操作系统软件资源』所放置的目录,而不是用户的数据啦!这点要注意。 FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。
因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的『C:\Windows\ + C:\Program files\』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 一般来说,/usr的次目录建议有底下这些:
![](https://s1.51cto.com/images/blog/201903/24/9d370c5a018bf24a40071bd5be4dc519.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
/var的意义与内容