Skip to content

Linux 起源

致敬一下“vbird—鳥哥” (https://linux.vbrid.org),用了 RockyLinux 9 基础篇上手果然快!🤣

冯诺依曼计算机结构

  • 输入单元:键盘、鼠标、读卡器、扫描仪、手绘板、触控板等等。
  • 主存储器:也称为内存储器(Memory),用于暂时存放 CPU 中的运算数据,其存储内容掉电即失。
  • 输出单元:打印机、屏幕等等。

硬件与操作系统

为了简化硬件资源操作,因此后来开发操作系统用于管理硬件的资源分配。故而设计程序仅须考量运行流程,无须考虑内存分配、文档读写、网络存取等等。

  • 硬件

x86、ARM 两种硬件架构。不同架构具备不同指令集,驱动方式和资源分配方式会有所不同,因此需要不同的操作系统去驱动管理。

  • 核心

操作系统最基础部分!该系统内部涵盖档案系统、网络系统、存储单元管理、硬件驱动程序、加密机制等等的子系统,和提供基础的硬件管理以及资源分配功能。

  • 系统调用:核心提供的一系列函数库。程序设计仅需要参考此部分即可设计相关应用程序。
  • 应用程序:系统调用环境中,程序源码所编译的二进制程序(binary code)。

操作系统发展历史

1965 年之前:分时相容系统

最早的硬件没有操作系统的概念,后来为了方便管理,因此又了”多元程序处理系统“,之后在”多元程序处理系统“的概念上再开发”分时相容系统“,当时的硬件主要是透过大型主机系统,内涵分时相容系统。

  • 1969 年之前:Multics 系统——Bell、MIT、GE

Multics 计划,改善大型主机系统提供至少 300 个以上的文字终端机。虽然成功的开发出 Multics 系统,但是相对于 Unix 而言,Multics 的使用率并不高。

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

参与过 Multics 的 Ken Thompson 为了一直一套游戏,通过组合语言编写一套称为 Unics 的软件,同于控制 PDP-7 主机,提供小型的文档系统管理功能。

  • 1973 年:Unix 诞生,Ritchie、Thompson 使用 C 语言编写 Unix 核心

Thompson 与 Ritchie 合作,编写 C 编程语言,再以 C 语言改写 Unics,最后编译成为一套操作系统。此系统被称为 Unix。

  • 1977 年:BSD 分支诞生

Berkeley 大学的 Bill Joy 取得 Unix 核心源码后,着手修改合适自己机器的版本,同时增加很多工具软件与编译程序最用将它命名为 Berkeley Software Distribution(BSD)

  • 1979 年:SystemV 架构与版权宣告

Bell lab. 的母公司 AT&T 公司,AT&T 在 1979 年开发最新的 SystemV 架构的 Unix 操作系统。这个系统特别的地方是 SystemV 可以支持当时没有多工环境的 x86 个人电脑。此外,AT&T 在 1979 年发行的第七版 Unix 中特别提到了”不可对学生提供源码“的严格限制。

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

SystemV 之后,大学老师不可以教授 Unix 的源码,因此 Andrew Tanenbaum 动手编写了 Unix Like 的 Minix 核心程序,同时搭配 BBS 新闻群组于相关书籍来售卖 Unix Like 的程序代码。

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

Richard Mathew Stallman 在 1984 年发起 GNU 计划,目的是想恢复以前”只是分享的骇客文化“。强调程序代码需要公开以利于学习的自由软件概念,并开发出 bash、gcc、glibc、emacs 等脍炙人口的软件,Stallman 将所有软件都上网,没有网络的朋友可以通过邮件请 Stallman 寄送磁带,Stallman 通过这样贩售 emacs 的”服务费用“赚了点钱,然后成立了自由软件基金会(FSF, Free Software Foundation),同时与律师共同签署了 GNU 的通用公共许可证(GPL, General Public License),该授权让使用者可以自由的使用软件,且软件的授权可以永远存在。

  • 1988 年:图形界面 XFree86 计划

为了解决图形使用者界面(GUI,Graphical User Interface)的需求,于是原有 XFree86 这个组织的形成。XFree86 是由 X Window System + Free + 86 所组成的,目的是提供 Server/client 的图形界面。

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

Torvalds 在 1991 年于 BBS 上面公告他通过 GNU 的 bash、gcc,Minix 系统,在 x86(386)上成功的开发了一个小型的操作系统,并且放在往上供大家自由下载。同时,还鼓励大家告知 Tirvalds 自己,这个系统还有哪些部分可以值得继续修改等的信息。这就是 Linux 的起源。

  • 1992 年:Linux Distributions 发行

为了让使用者更方便的安装于操作 Linux,于是有了 LInux 开发套件的软件发行,称为 Linux Distribution。一开始于 1992 年就又 SLS, Softlanding Linux System、Yggdrasil Linux 等版本。

  • 1994 年:Linux Kernal version 1.0 发布。同年,知名企业 RadHat 公司成立。
  • 1996 年:Linux Kernal version 2.0 发布,此版本可以支持多核心 CPU 运行(SMP)
  • 2004 年:X.Org 基金会接管 XFree86 团队,开始加快 X Window system 开发
  • 2005 年:Google 收购 Android

从 2003 年开始,加州一公司开始发展 Android 系统面在手机上。后来 Google 于 2005 年收购该公司,并使用 Linux Kernal 为基础开发 Android,以发展可以手持式装置使用的操作系统。首个商用手机 Android 操作系统则在 2008 年由 HTC 推出。

  • 2011 年:Linux Kernal veriosn 3.0 发布
  • 2012 年:Raspberry pi

为了让小朋友能够轻松的学习程序语言,一个小型的单板电脑制造基金会依据 ARM 的架构开发了一版与 2.5 英寸硬盘大小的主板,内嵌电脑系统所需的硬件,这解释树莓派(Respberry pi),预设的操作系统是以 Linux Kernal 为基础开发的小型操作系统。

  • 2013 年:Android 占据 75% 的智能手机市场
  • 2015 年:Linux Kernal version 4.0 发布
  • 2019 年:Linux Kernal version 5.0 发布、
  • 2022 年:Linux Kernal version 6.0 发布

GPL 与 Opensource

  • 取得软件与源码:可以根据自己的需求来执行这个自由软件;
  • 复制:你可以自由的复制该软件;
  • 修改:你可以对源码修改,使之适合自己的工作;
  • 再发行:你可以将修改过的程序再度自由发行,而不会与原作者冲突;
  • 回馈:你应该将修改过的源码回馈于社群;
  • 不可修改授权:你不能将一个 GPL 授权的自由软件,修改后将他取消 GPL 授权;
  • 不可单纯贩售:你不能单纯的售卖自由软件;

由于 Free Softeware 存在歧义,1998 年成立的”开放源码促进协会(Open Source Initiative)“提出了开放源码(Open Source,亦可称为开源软件)这一名词,另外,并非软件可以北读取源码就可以称为开源软件,该软件的授权必须符合以下的基本要求,才可以算是 Open Source 的软件。

  • 公布源代码且用户具有修改权:用户可以任意的修改于编译程序的代码,这点与自由软件差异不大。
  • 任意再发布:该程序代码全部或部分可以被售卖,且程序的代码可以成为其他软件的元件之一,作者不该宣称拥有权或收取其他额外费用。
  • 衍生的相似授权:再发布的软件需要使用相似的授权进行发表。
  • 不可限制某个人或团体的使用权
  • 不可限制某些领域的应用,例如不可限制不能用于商业行为或学术行为等特殊领域等等;
  • 不可限制在某些产品当中,即程序代码可以应用于多种不同产品中。
  • 不可具有排他条款,例如不可限制本程序代码不能用于教育类的研究中,诸如此类。

Linux

Linux 是一个操作系统的核心(kernal)部分,提供管理硬件资源分配以及一套软件开发标准。

现代 Linux 操作系统主要以可跨硬件平台的 C 程序语言编写而成,且自从 Linux 3.x 之后的核心版本已经支援了 ARM 架构,因此 Linux 可以在不同硬件平台间安装。提供约 16 个文字终端机连线。不过当使用者过多时,需要等待才能够使用电脑系统。

Linux Kernal version

  • 主线版本(MainLine)”:从 3.0 之后,核心主要依据主线版本来开发,开发完毕后会往下一个住下版本进行。例如 4.8 完成后进行 4.9 开发任务。
  • 停止维护(EOL, End of Live):该版本程序代码开发工作已结束,不会进行后续维护。
  • 长期维护(Longterm):该版本程序代码会被长期维护,若存在 bug 或其他问题,维护者会进行修复以及更新。

Linux Distributions

发行单位将 Kernal(含 tools)与软件和安装套件(套件可以让使用者以光碟或透过网络直接安装 Linux 系统)整合在一起,这样 Kernal + Software + Tools + 安装程序称之为 Linux Distribution。

性质流派Linux Distribute软件管理
商业公司Red HatRHELRHELRPM
商业公司Micro FocusRHELSuSERPM
社群单位RHELFedoraRPM
社群单位RHELRockyLinuxRPM
社群单位RHELOpenSuSERPM
社群单位DebianDebianDPKG
社群单位DebianUbuntuDPKG
社群单位DebianB2DDPKG
其他-Gentoo-

RockyLinux 取自 RHEL,将源码中与 Red Hat 相关的注册商标或其他著作相关的资料移除,改以自己的“企业商用社群版本操作系统”取名,然后再发行。因此 RockyLinux 与 RHEL 亦步亦趋。(包括 Oracle Linux 与 Scientific Linux 也是采取相同作法)

Linux 的一些用途

  • 网络服务器
  • 关键任务的应用(金融资料库、大型企业网管环境)
  • 学术机构的高效运算任务
  • 台式电脑
  • 手持式设备,Pad、手机、平板电脑、笔记本
  • 嵌入式设备,Raspberry pi/ Xapple pi
  • 物联网(IoT, Internet of Things)