inux发展历史和基础详解

既然是学习linux,就不得不从先从我们常用的计算机的组成谈起。

inux发展历史和基础详解

计算机组成部分对应的功能

运算器
运算器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
控制器
运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器
存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。具体有内存、RAM(Random Access Memory)
输入设备
输入设备与输出设备合称为外部设备,简称外设(I/O),输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标、光电输入机、磁带机、磁盘机、光盘机、U盘等。
输出设备
输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示器、打印机、激光印字机、绘图仪及磁带、光盘机等。

linux内核功能以及作用

Linux内核[kernel]是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM或Quota等文件系统等等,如果内核不认识某个最新的硬件,那么硬件也就无法被驱动,你也就无法使用该硬件。
计算机真正工作的东西其实是硬件,例如数值运算要使用到CPU、数据储存要使用到硬盘、图形显示会用到显示适配器、音乐发声要有音效芯片、连接Internet 可能需要网络卡等等。内核就是控制这些芯片如何工作。

linux不同发行版之间的联系和区别

*Linux发行版=Linux内核+商业软件
linux的发行版:
RedHat、Fedora、suse(Novell)、红旗、debian、Ubuntu、centos
不同发行版之间的联系和区别:
Red Hat ,是redhat自己的发行的企业版,是redhat的一个重要节点。
Fedore是一款基于linux的操作系统,也是一组维持计算机正常运行的软件集合。由红帽公司赞助。
suse linux,针对个人用户。
红旗linux的发行版,包括桌面版、工作站版、数据中心服务器版、HA集群版和红旗嵌入式linux等产品,是中国较大、较成熟的linux发行版之一。
debian,三大发行版中唯一以社区形式运作,不以商业公司形式运作。是一个致力于创建自由操作系统的合作组织。而且debian开发者所创建的操作系统中绝大部分基础工具来自于GNU工程。
Ubuntu(乌版图)是一个以桌面应用为主的linux操作系统。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。
Centos是一个基于redhat linux 提供的可自由使用源代码的企业级linux发行版本。目前Centos已被收购,成为redhat旗下的一个组织。

开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别

開源協議 : 世界上有關開源許可証,大概有上百種。

最為常見有(LGPL, Mozilla, GPL, BSD, MIT, Apache)。
inux发展历史和基础详解
inux发展历史和基础详解

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目录结构以及目录结构命名规定

前几天看书的时候,看到linux系统目录结构,看到它的目录结构都是英文字母的缩写,想到一个问题,原先编写这个目录的人究竟是采用什么英文来定义目录的。

/bin:一般看到这个英文单词相关的目录,我最先想到的是它是一些系统提供的可执行程序,和win下面的XX.bat有类似的含义,不过是系统的开发者编写的。

/boot:跟系统的开机引导文件相关的内容,应该都是在这里。reboot是重装,boot是一次性的装载初始化。

/dev:这个dev是device的意思,按照中文翻译最切合的是设备或者装置。在linux系统中通常跟已经装载在linux系统上的硬盘设备有关的。里面的内容是设备相关的。记得不是development,因为这个原先一头雾水很长时间。

/etc:有的说是etcetera,有人说是extenal tool text,有人说是editable text config。这几个的含义都是符合etc目录的内涵的,随便选择一款适合你的。etc目录下基本上都是重要的系统配置文件。

/home:这个没有什么问题,放置所有的用户文件夹,包含了用户的工作内容。

/lib:这个目录名称在很多程序的工程里面都可以见到,是引用函数库的意思,在这里是系统引用函数库。

/media:放dvd,软盘,可以长时间挂载的目录

/mnt:短时间或者暂时挂载的目录结构,例如U盘,移动硬盘等

/opt:option的意思,这里是给第三方软件放置的目录

/root:管理员目录

/sbin:system bin,系统专用的可执行程序存储位置

/srv:services,特别指网络服务,例如www

/lost+found:当在文件系统发生错误的时候,将一些lost的片段放在这里,你可以find

/usr:大多数情况下它不是user的意思,是unix software resource,直接可以称为unix软件资源,与软件的安装和执行相关的目录

/var:相信这个大家都知道variable,变量,存储这系统的变量

因为记忆起来有点难,因为是隔着一层语言的原因。有人可以死记硬背,有人不记但是用的多,我只是想仔细看看别人设计目录结构时命名的一般性指导原则。


本文内容均源自于网络摘抄,仅用于学习使用。使新手更易于深度了解Linux相关基础知识。
2019年3月24日14:40:30

转载于:https://blog.51cto.com/14211189/2368124

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值