从系统的来源角度:Linux是Unix的开源实现,Unix一开始的时候也是开源的,后来才以授权方式闭源,这时候在原始Unix基础上诞生了AIX,HP-UX等这些都是正统Unix,但BSD被认为是Unix精神的继承者(BSD同样也是Unix的另外一个开源实现)也是Unix的一种,Linux为什么比BSD发展的好这里不讨论。从这里看Linux是Unix的一个模仿者之一。
站在时间和发展的角度:这两个操作系统可以认为是同一个操作系统的不同时期 UNIX是过去的UNIX,Linux是现在的UNIX,就像大清王国和中国的关系吧,你把Linux说成UNIX也没有错,只不过是个商标而已,Unix要是没有闭源Unix应该就和现在的Linux差不多了。
Unix于1969年由贝尔实验室开发出来,使用至今已变更了很多个版本。目前主流的Unix系统有三种,分别是AIX、HP-UX、Solaris,这些Unix系统互不兼容。
Linux于1991年由芬兰大学生Linus开发出来,是一个类Unix系统,但是其代码不源自任何Unix版本,完全不是Unix的一个分支,而是一个开源版的模仿。
现在Linux主要使用在PC机和嵌入式,或者一些小型企业的服务器;而Unix垄断着大型企业的关键性应用领域。
unix是在posix之前就有的,linux是在posix出来之后有的,最初的linux是仿制的minix,unix和linux很多软件都是相通的,linux是UNIX的一个分支,别的分支还有freebsd等,UNIX是命令行下的系统linux是加了窗体管理的系统。 UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统。Linux是一种外观和性能与UNIX相同或更好的操作系统,但,Linux不源于任何版本的UNIX的源代码,并不是UNIX,而是一个类似于UNIX的产品。
从发展的背景看,Linux是从UNIX发展而来的。这种继承使得Linux的用户能大大地从UNIX团体贡献中获利。因为UNIX是世界上使用最普遍、发展最成熟的操作系统,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。UNIX的用户可以从很多方面得到支持和帮助。因此,Linux做为UNIX的一个克隆,同样会得到相应的支持和帮助,直接拥有UNIX在用户中建立的牢固的地位。
从使用费用上看,UNIX与Linux的区别在于Linux是一种开放、免费的操作系统,而UNIX系统基本上需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。并且,一大批世界级的优秀的程序员正在努力开发和提供基于Linux的共享软件。 但是,也正是由于Linux源码可以开放的缘故,所以现在真正的商业应用尚未开始,原因很简单:任何人都可以了解其内部最薄弱的环节,都可以实施侵袭和攻击。
至于价格,个人使用的Linux基本上算是免费的,不同的Linux发行厂商针对企业级应用在基本的系统上有些优化,如RedHat的Enterprise产品,这些产品包括支持服务是比较贵的。像IBM/HP/SUN的UNIX,因为主要是针对其硬件平台,所以操作系统通常在设备价格中。
在性能上,Linux没有UNIX那么全面,但基本上对个人用户和小型应用来说是绰绰有余.通常情况下,如果你有机会使用到UNIX环境,比如银行、电信部门,那一般都是固定机型的UNIX。比如电信里SUN的居多,民航里HP的居多,银行里IBM的居多。学习中,不同的UNIX命令集有些不同,要注意。
除了个别命令和命令参数有点不一样之外,使用思路是完全一样的。我要不看看超级终端连到那个IP上都会搞混命令。
Linux 是一个采用GPL 许可证第二版(GPLv2) 的操作系统内核。由于它只是一个操作系统内核,其生态系统的完善必须依靠东拼西凑。举例来讲,Ubuntu、CentOS、Arch 等发行版都是 Linux 内核 +GNU 套件(有时也会称为 “base” 或者 “userland”)+ 应用软件的组合。普通开发者以及用户所理解的「能干活」的最小系统,至少需要 Linux 内核 + GNU 套件。当然 GNU 套件理论上并不是必须,例如嵌入式领域常用 BusyBox 代替 GNU 套件,另外还有 Android 这类默认不需要 shell 交互的 Linux 发行版存在。Linux 用户可以自行脑补一下从开机引导到进入 shell,再运行几个基本命令比如ls、cd、cat等这套完整流程。
由于历史局限性,GPL 许可证在发布当年并没有覆盖云服务的使用场景,使得云服务可以合法绕过其强制开源条款向用户提供服务,间接促成了 Linux 在服务器领域的繁荣。十余年后出现了试图亡羊补牢却于事无补的AGPL 许可证,此乃后话,按下不表。
然而,在方兴未艾的 IoT 领域,物联网设备的物理分发必要性使得采用 Linux 的嵌入式产品面临严峻的许可证问题。与云服务不同,嵌入式设备的使用场景通常会触发 GPL 的强制开源条款。尽管这个笼统的描述在法律上并不简单等同于「设备使用了 Linux 就必须开源」,但是 GPL 的传染性无疑会极大增加技术选型以及合规成本。
不谈法律细节,许可证是非常严肃的问题,忽视许可证风险将给产品和公司带来巨大的不可控因素。GPL 许可证造成的著名纠纷案例可以参考被强制开源的 linksys WRT54G 无线路由器固件(后来发展成为OpenWrt),在此不予赘述。
同样由于历史原因,在某些忽视版权的国家和地区,Linux 在嵌入式领域曾经大行其道。然而随着全球化进程的加深,越来越多的公司意识到版权问题的重要性。在特殊时期,知识产权陷阱更会成为遏制公司甚至是国家发展的武器。基于 Linux 的物联网设备极有可能深陷 linksys WRT54G 那样的 GPL 合规泥潭,轻则付出合规与罚款代价,重则被强制开源并丧失商业机密,甚至遭遇全面禁售。
看似百花齐放,实际上 Linux 各发行版的区别并不大。除去技术细节,各发行版最主要的差异在于社区性质(用户数量及质量)、技术支持水平(与社区相关)以及不同偏好,例如包管理系统等。
几乎所有的 Linux 发行版都将 Linux 内核、GNU 套件以及应用软件混为一谈,也就是采用同样的包管理器管理所有组件。这三个部分本来分属若干独立团体,彼此之间并无强耦合关系,却常常被强行锁定版本捆绑在一起发布(特别是非滚动更新发行版)。与系统稳定性紧密相关的核心组件往往和应用软件享有同样的优先级,例如全部配置文件都被塞到/etc下,无原则混用/usr与/usr/local等。
云服务常用的 LTS (Long Term Support) 发布模式 Linux 系统中,为了「稳定性」,很多被业务重度依赖的应用软件偏偏被锁定在当前 LTS 版本发布时的低版本,并且在今后的 LTS 生命周期(一般是好几年)内得不到任何新版本更新(只会获得重要的安全更新)。这就是将所有组件混为一谈的恶果。
在实际生产环境中,为了某些应用软件只有新版本才有的新功能,运维不得不开启非官方仓库以求获得新版本支持。更有甚者不惜触犯运维大忌,干脆人为绕过包管理系统,采取自行编译并「山寨」安装的下下策。
这种一刀切的粗粒度发行模式本身就是极其不合理的奇葩设计,由此产生的各种丑陋的变通方案更是折射出 Linux 社区的精分、痛苦、纠结与挣扎。人人都不满意,人人都想要「更合理」的方案,这也是为什么 Linux 发行版层出不穷的原因。一次次重复发明轮子的行为,使得 Linux 的碎片化问题日益严重。
近年来兴起的容器技术(例如 Docker)可以部分看作是对以上粗粒度发行模式的反抗:既然每次吃饭都会无可避免弄脏手,我们不妨吃完饭就砍掉脏手,再等新的长出来,这样不至于因为弄脏手而把整个人埋掉。
生态高度统一的 x86 市场尚且如此艰辛,更何况是生态多样的 ARM 移动设备市场。Google 使劲浑身解数,仍然无法遏制住 Android 的碎片化趋势,这些都是历历在目的前车之鉴。可想而知,在目前几乎呈现原生态的广阔 IoT 市场,选择 Linux 就注定选择了混乱和颠沛流离。
与东拼西凑的 Linux 发行版不同,源自 BSD 的 FreeBSD 是一套完整的操作系统。FreeBSD 可以说是正统的 Unix,比 Linux 的历史更为悠久。FreeBSD 在今天不如 Linux 流行,是因为若干年前那场 BSD 与 AT&T 的版 (sī) 权 (bī) 纠 (dà) 纷 (zhàn)。待到几年后尘埃落定,FreeBSD 也遗憾地错过了服务器市场爆发的黄金时期。
FreeBSD 采用的两句版 BSD 许可证不要求衍生作品开源,除了保留原始版权声明的要求之外,没有其他的限制,因此对商业使用场景来说非常友好,特别是在物联网设备的嵌入式应用场景下。
FreeBSD 内核与基本系统 (base system) 作为一个整体绑定发行(以下简称「系统」),有三个发行分支,分别为CURRENT、STABLE以及RELEASE,在升级路线上也高度一致。其中RELEASE分支采用二进制升级方式,剩下两个分支采用源代码编译升级方式。整体发行的好处在于提高系统一致性、健壮性与稳定性。
FreeBSD 的应用软件采用独立于系统的包管理方案。还能提供同一软件的不同版本选择,不需要像非滚动更新的 Linux 发行版常见的错误做法那样粗暴地将应用软件版本与整个系统锁定。
多版本共存的理念贯穿大多数对版本敏感的软件,比如 PHP、MariaDB、PostgreSQL 等。Linux 发行版(特别是 CentOS)如同噩梦般的软件版本问题,在 FreeBSD 下竟然完全不存在。
系统与软件的清晰隔离也体现在 FreeBSD 的文件组织结构上。例如,/usr与/usr/local有严格区分,前者为系统文件路径,后者为软件文件路径,根据路径可以直观地识别出用户自行安装的部分。
熟悉 Linux 的人也许会发现,FreeBSD 的包管理方案实际上大约等于以下两大 Linux 发行版包管理器的完美合体:
然而,Linux 发行版并没有类似 freebsd-update 那样的系统二进制升级方案。
令人惊奇的是,与日常认知不同,FreeBSD 并不小众,在很多商业产品里都能看到 FreeBSD 的身影。以下是几个著名产品的例子:
linux就是基于unix操作系统原理的开源操作系统, 基于的是操作系统的原理,重点是那个原理。
当linux起初开发的时候,借鉴了unix操作系统原理,但当linux开源和成熟后,就很少或者就不借鉴了。就像我们小时候,像某个厉害的人学习,不断成长,但我们和那个厉害的人,没有什么父子关系,当我们比那个厉害的人更厉害的时候,我们就不向他学习了,而是独立发展了。

