Linux 是一种自由和 开放源代码 的类 unix 操作系统, 是遵循GPL 精神、遵守POSIX 标准的网络操作系统。
Linux的诞生离不开Unix家族。 Linux最初版本由 林纳斯·托瓦兹 (Linus Torvalds)在1991年9月17日首次发布。 之后Linux迅猛发展,到1994年3月,Linux 1.0正式诞生。 后来在 林纳斯·托瓦兹 的带领下,有众多爱好者共同参与开发和维护 Linux内核 。
在21世纪, Linux 操作系统已成为最受瞩目的操作系统之一,在网络 服务器端 的应用市场中占有的份额也越来越大, 理查德·斯托曼 (Richard Stallman)领导的 自由软件基金会 也继续为Linux提供了大量支持其内核的GNU组件。 Linux有多种发行版本,比如, centos 是由 Red Hat Enterprise Linux 依照 开放源代码 规定释出的源代码编译而成,具有高度稳定性; Debian是一个社区发行版,只附带免费的软件和驱动程序,但可以很好地支持各种硬件架构,以及提供近十万种不同的开源软件; Ubuntu 继承了Debian的所有优点并加以强化,采用默认的GNOME桌面系统,界面简约。 Linux操作系统是一个多用户多任务分时的操作系统。它能很好地运行在多种硬件平台上,并且对硬件的要求很低,功能强大而且架构开放,所以它能应用在数据库、 桌面应用、 云计算 、 网络服务器、嵌入式系统 等多个领域。Linux操作系统能够很好地支持 虚拟内存 、虚拟文件系统和TCP/IP,并且具有稳定、安全、多任务、多用户、 兼容性 强等优点, 因此非常适合学习和二次开发。
发展历程
起源
Linux 的诞生离不开 unix 家族。1969年 肯·汤普逊 (Ken Thompson)设计了一个适合自己工作环境的小型文件系统,这个系统就是最早期Unix的源头。到了1973年,贝尔(Bell)实验室的 丹尼斯·里奇 (Dennis Ritchie)等人以 c语言 将这个系统核心大幅改写,并将这个操作系统命名为Unix,这是最早的Unix操作系统。
20世纪70年代,Unix操作系统逐步盛行,这期间,又产生了一个比较重要的分支,就是1977年诞生的伯克利软件套件(Berkeley 软件 Distribution,BSD)系统,从BSD系统开始,各大商业公司开始根据自身公司的硬件架构,并以BSD系统为基础进行UNIX系统研发,从而产生了不同版本的 unix 系统。例如, 太阳微系统 的 Solaris 系统,IBM公司的 IBM AIX 系统,HP公司的HP UNIX系统等。
20世纪70年代末, 美国电话电报公司 (AT&T)试图对UNIX系统的版权进行回收, 特别要求禁止对学生群体提供UNIX系统代码,这样的问题一度引起了当时UNIX业界的恐慌,也因此产生了商业纠纷。
1984年, 理查德·斯托曼 认为如果程序有很多的人来检验,会使得软件发展得更好。于是他发起了开发 自由软件 的运动,并成立了 自由软件基金会 (Free 软件 Foundation ,FST)和GNU项目 。 GNU对于后来的 Linux 有相当深远的影响, 之后的Linux发行版本就是FSF的GUN项目、 林纳斯·托瓦兹 的个人努力和遍布全世界的合作者的共同产品。
发布
1991年初, 芬兰 大学生 林纳斯·托瓦兹 为了实习使用类 unix 操作系统—— MINIX (是Unix的一个分支)。 但是,他发现Minix的功能很不完善,基本上只是一个操作系统的内核。于是他决心自己写一个 保护模式 下的操作系统,这就是Linux原型的诞生。 最初的Linux是用 汇编语言 写的,主要的工作是处理80386的保护模式。
Linux的第一个正式版本,即0.0.2版hobby是在1991年10月5日发布的。在这个版本中可以运行bash, GCC ,但是它还是几乎什么事情也作不了,主要功能放在操作系统核心的开发工作上,还没有注意用户支持、文档和版本发布等问题。
命名
林纳斯·托瓦兹 最开始将 Linux 放在一个FTP服务器上供大家自由下载,为了表示它的自由(Free)与怪异(Freak),他给Linux起了一个怪怪的名字——Freax。但是FTP服务器的系统管理员认为这个软件是Linus的 MINIX ,所以管理员就建了一个Linux目录来存放这些文件,于是Linux这个名字就流传开了。
Linux的吉祥物是一只可爱的 小企鹅属 。1994年发表Linux正式核心1.0的时候,大家要 林纳斯·托瓦兹 想一只吉祥物,他突然想到小时候去动物园被一只企鹅追着满地打滚,企鹅的力量和速度给他留下了很深刻的印象,就把Linux的吉祥物定为了企鹅。
发展
林纳斯从一开始,就决定自由扩散 Linux ,包括源代码。他把源代码发布在网上,随即就引起编程高手和业余 计算机 爱好者的注意,他们通过互联网也加人了Linux的内核开发工作,在更正原有Linux版本中错误的同时,也不断地为Linux增加了新的功能,使得Linux达到迅猛发展的阶段。到1994年3月,Linux 1.0终于诞生。 Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能。
1996年6月,Linux 2.0内核发布,其代码量约为40万行,支持多个处理器,全球用户数达350万人。
甲骨文公司 从1998年开始支持Linux, Oracle数据库 是第一个支持Linux的商业数据库产品。通过支持Linux,使得用户可以用廉价的硬件及操作系统架构获得企业级的数据库应用解决方案。
进入21世纪, Linux 已成为最受瞩目的操作系统之一,在网络 服务器端 的应用市场中占有的份额也越来越大。 2001年1月,Linux 2.4内核发布,其代码量约为100万行,提升了SMP(Symmetric Multi-Processing,对称多处理结构)系统的扩展性,集成了 USB.PC卡(PCMCIA)、内置 PnP 等应用功能。
2003年1月, 日本电气 公司在其生产的手机中使用Linux系统。2003年12月,Linux 2.6内核发布,其代码量超过1000万行,灵活性、扩展性,易操作性更强,各种应用程序集成。
2004年,Ubuntu Linux发布,这是一个基于Debian的Linux发行版,它以 易用性 、友好性和社区支持为特色,迅速成为最受欢迎的Linux桌面系统之一。
2005 年,Linux 成功商业化。Linus Torvalds 首次出现在了《 商业周刊 》的封面上,打破了人们对 Linux成为主要商业参与者的任何怀疑。
2007年11月5日, 谷歌 基于Linux开发了开源移动手机平台 Android 。该平台由操作系统、 中间件 、用户界面和应用软件等组成,号称是首个为移动终端打造的真正的开放的移动开发平台。
2008年,股票交易系统转向 Linux, 纽约证券交易所 改用 Linux 作为核心操作系统,这一举措很快就被世界上许多其他主要证券交易所效仿。
2009年1月29日,纽约时报称“现在预计有超过10亿人在运行Ubuntu系统”。
2010年5月17日,Linux 2.6.34内核发布,这是一个重要的版本,它带来了大量开源 显卡 驱动更新、笔记本集显 独立显卡 切换支持、分布式闪存文件系统LogFS/Ceph、更快的 KVM 网络支持、Btrfs文件系统升级、 威睿 Balloon驱动等等。
2011年,Linux 3.0内核发布,这是一个纪念性的版本,它标志着Linux内核进入了一个新的时代,Linux 3.0改进了对虚拟化和文件系统的支持。
2012年1月4日发布了Linux 3.2的内核版本,这个版本的内核改进了 ext4 和 Btrfs文件系统,提供自动精简配置功能,新的架构和CPU 带宽 控制。
2015年11月,Linux 4.3内核问世,主要升级了网络,修复了x86 vm86模式里的一个漏洞,其他就是一些小修小补的集合。
2016年12月12日,Linus Torvalds发布了Linux内核4.9,也是迄今为止开发的最大的发布版本。
2017年11月,Linux内核4.14 LTS版本的主要功能特性是把异构 内存 管理合并到主线中。开发该功能是为了让进程地址空间可以被镜像,并确保系统内存被任何设备透明地使用。2018年8月12日,Linus Torvalds正式公布了Linux内核的第四个重要里程碑版本一Linux Kermel 4.18稳定版。
2019年11月,Linux 5.4 内核的正式版本带来了大量新功能,强化了安全,更新了硬件驱动,最大亮点就是支持 微软 exFAT 文件格式,可以更好地使用U盘、 移动硬盘 等便携存储设备。而且Linux系统内核首次加入锁定功能,新的“锁定”功能将限制Linux某些内核功能,即使对于 root 用户也是如此,这使得受到破坏的root 账户更难以破坏其余的系统内核。
2020年12月,Linus Torvalds公布了Linux 5.10,这是一个重要的 里程碑 。该版本至少要维护五年的长期支持(LTS)内核,在功能上也是大范围的内核更新,并且还有很多的改进。2021年1月6日,Linux 5.10.5内核正式发布,所有5.10内核系列的用户都必须升级,禁用FBCON 加速滚动。
2023年11 月8日,开源解决方案提供商 Red Hat 公司宣布推出红帽企业Linux 9.3(RHEL 9.3),该版本将为未来的创新创造更顺畅的途径,而无需对技能、工具或工作流程进行大规模更改。
架构
从总体上看,运行在计算机 硬件系统 之上的Linux操作系统可分为Linux内核与应用程序两大部分。 普通用户主要和应用程序打交道,而开发者,特别是内核或驱动的开发者则主要和 Linux内核 打交道。但是,一个正常工作的 Linux ,其实际组成更加复杂。从功能的角度,可以将Linux系统划分为三大部分,分别是引导程序、内核和 root 文件系统。
引导程序
引导程序在CPU上电后执行,负责准备工作,例如初始化硬件资源和提供用户选择菜单。由于CPU上电后执行的第一个程序受大小限制,内核无法直接作为此程序。为支持多个操作系统,引导程序在操作系统启动前提供用户选择菜单。其主要任务包括硬件初始化、启动配置和加载内核。根据CPU体系架构的不同,选择不同的引导程序,如ARM架构使用uboot,x86架构使用GRUB(GRand Unified Bootloader)。总体而言,引导程序是 Linux 的一部分,其运行在内核启动之前。
Linux内核
Linux内核 是Linux操作系统的核心和灵魂,它负责管理 磁盘 上的文件、 内存 、启动并运行程序以及从网络上接受或发送数据包等。 Linux内核在整个软件层次体系中是最贴近硬件的一层,它向下实现硬件的驱动和管理,向上将硬件抽象成操作系统中的资源供上层应用使用。Linux内核主要由6大功能模块组成,分别是进程管理、进程间通信、内存管理、文件系统、设备驱动和网络。 以上6个模块只是Linux内核的主要组成部分,除此之外还有很多其他的功能模块,如安全模块等。这些模块之间互相作用,并以系统调用的方式对外提供接口, 各种应用程序通过这个接口调用内核提供的功能和服务,以实现特定的任务。
init进程由idle通过 kenel_thread创建,在内核空间完成初始化后,加载init程序,并最终工作在用户空间(Iptables)。它由0进程创建,完成系统的初始化,是系统中所有其他用户进程的祖先进程。 Linux 中的所有进程都是由init进程创建并运行的。首先Linux 内核启动,然后在用户空间中启动init进程,再启动其他系统进程。在系统启动完成后,init将变为守护进程监视系统其他进程。
root文件系统
Linux 将一切抽象成文件,因此,整个Linux系统就是由很多很多各种类型的文件组成的,包括普通文件、目录、 符号链接 、设备文件等。每个文件都有一个路径,在Linux中,所有路径都有一个共同的起点——root目录( 根目录 ),在命令中用一个“/”来表示。因此,“root文件系统”就是指根下所有的文件和目录的集合。 Shell命令解释器负责接收用户输入的命令并进行解释,将需要执行的操作传递给系统内核执行。内部命令指的是集成于 壳层 解释器程序(如 Bash)内部的一些特殊命令,也称为内建(Built-in)指令。外部命令指的是 Linux 中能够完成特定功能的 脚本文件 或 二进制 程序。
从 Linux内核 1.1版本开始,Linux就具有包过滤功能了,管理员可以根据自己的需要定制其工具、行为和外观,无须昂贵的第三方工具。内核空间( netfilter )组件是内核的一部分,由一些“表”(table)组成,每个表由若干“链”(chains)组成,而每条链中可以有一条或数条规则(rule)。用户空间组件是一种工具,它使插入、修改和移去信息包过滤表中的规则变得容易。
包管理( RPM套件管理员 )是一个开放的软件包管理器,它工作于许多种类型的 Linux 和 unix 操作系统中。只要遵循GPL协议,RPM软件对所有的用户都是开放的,用户甚至可以将它用到自己的程序中。对于终端用户来说,包管理器大大简化了系统的升级、维护以及应用程序的安装。包管理器维护已安装的RPM软件包和文件的数据库。对于程序开发者来说,包管理器允许这类用户把软件源代码和编译、连接生成的 二进制 程序打包,然后提供给终端用户使用。
用户界面
Linux为用户提供了两类界面: 命令行界面 (Command Line Interface ,CLI)和图形用户界面(Graphic User Interface,GUI)。命令行界面通过 键盘 直接输入命令的方法来操作Linux系统,有点类似于DOS系统的界面。而图形用户界面则是利用鼠标、菜单、窗口等工具呈现给用户一个直观、易用而友好的图形化界面。图形用户界面又分为很多种,最常用的是GNOME和 KDE 。
GNOME是GNU Network Object Model Environment(GNU 网络对象模型环境)的缩写。它是Linux系统中最主要的桌面系统之一,也是 UNIX 系统中图形系统最重要的选择之一。严格来说,GNOME 不仅是一个简单的窗口管理器,它还为用户提供了功能强大、界面友好的桌面操作环境。它提供了很多功能强大的应用软件,如 Nautilus 文件管理器、 GIMP 图像处理软件、 gedit 文件编辑器、gThumb 图片浏览器。
壳层 是系统的命令行用户界面,提供了用户与内核进行交互操作的接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,Shell 编程语言 具有普通编程语言的很多特点,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
发行版本
Fedora
fedora 是由 Red Hat 发布的系统套件。用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到 Red Hat Enterprise Linux 系统中,因此Fedora也称为 RHEL系统的“试验田”。 Fedora对于Redhat的作用主要是为 RHEL 提供开发的基础。Fedora的界面与操作系统与RHEL非常相似;另外对于新技术,fedora一直快速引入;并且fedora一直坚持绝对开源的原则。而因为 Red Hat 在 Linux 的地位和影响力,拥有很多坚定的爰爱好者使用。
CentOS
社区企业操作系统(Community Enterprise Operating System,CentOS)是由 Red Hat Enterprise Linux 依照 开放源代码 规定释出的源代码编译而成。由于出自同样的源代码,有些要求高度稳定性的服务器以 CentOS 替代商业版的 RHEL 使用。两者的不同之处是CentOS完全开源。很多网站站长一般都选择CentOS系统,CentOS去除了很多与服务器功能无关的应用,系统简单、稳定,命令行操作可以方便管理系统和应用,并且有帮助文档和社区的支持。
Debian
Debian是一个社区发行版,只附带免费的软件和驱动程序。除此之外,Debian可以很好地支持各种硬件架构,以及提供近十万种不同的开源软件,且拥有适合大量硬件设备的驱动,因此在全球拥有很高的认可度和使用率。 Debian整个系统的基础核心稳定,只要应用层面不出现逻辑缺陷,系统可以多年不重启。并且Debian占用 HDD 空间小,占用 内存 小,128M的虚拟专用服务器(Virtual Private Server,VPS)即可以流畅地运行Debian。 但Debian更适合有 Linux 工作经验的开发人员。
Ubuntu
Ubuntu继承了Debian的所有优点并加以强化,包括Debian Sid的 APT 。Ubuntu采用默认的GNOME桌面系统,界面简约,安装过程人性化,与 Windows 一样易用。被誉为对硬件支持最好、最全面的 Linux 发行版之一,能轻松应对其他发行版难以使用或默认配置无法满足的硬件。Ubuntu使用加强的内核,提升了安全性。默认不允许直接 root 登录,需要通过su或sudo从第一个创建的用户获取root权限,虽然可能不太方便,但无疑提高了系统的安全性。另外, Ubuntu 的版本周期为六个月,弥补了Debian更新缓慢的不足。
Slackware
Slackware是由 Patrick Volkerding 制作的GNU/Linux发行版, Slackware并没有一个正式的机制来升级个别应用程序,库或软件包,因此当一个新的发布出现时,或者可以升级整个系统,或者按需要升级各个部分。Slackware有一个初级的打包系统,并没有 Red Hat 的RPM那么先进的功能。然而,如果不在乎软件包格式而且倾向于自己编译源代码,Slackware是一个不错的选择。
Red Hat
Red Hat是著名的 Linux 版本,它于1994年创立。由于有公司向用户提供了一套完整的服务,这使得它特别适合在公共网络中使用。Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部信息。系统运行后,用户可以从Web站点和 Red Hat那里得到充分的 技术支持 。Red Hat是一个符合大众需求的最优版本,产品涉及五大技术领域: 云计算 、存储、虚拟化、 中间件 、操作系统。
红帽企业版Linux(Red Hat Enterprise Linux, Red Hat Enterprise Linux ),RHEL 是全世界使用广泛的Linux系统。 RHEL 系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。RHEL系统也是红帽认证以及众多生产环境中使用的系统。 Red Hat Enterprise Linux 是Linux服务器产品的标杆,在国内和国际上都占据着主要的Linux服务器市场份额。RHEL 产品功能 全面,产品认证齐全。RHEL主要依靠技术服务和产品维护获取盈利。
SUSE
SUSE是 德国 SUSE Linux AG公司发行和维护的Linux发行版,前期只发行了商业版,第一个版本发行于1994年初。2004年2月,SUSE 被 Novell公司收购,其后成立了OpenSUSE 开源项目社区,推出了OpenSUSE 的社区发行版。SUSE凭借友好的图形界面安装方式和便利的管理工具,占据了一定的市场份额。
Gentoo
Gentoo Linux 最初由Daniel Robbins( FreeBSD 的开发者之一)创建,首个稳定版本发布于2002年。自从Gentoo 1.0面世后,它就像一场风暴,给Linux世界带来了巨大的惊喜,同时也吸引了大量的用户和开发者投入Gentoo的怀抱。Gentoo适合比较有Linux使用经验的人使用。
openEuler
openEuler 是一个开源免费的Linux发行版,通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系, openEuler 同时是一个创新的系统,倡导客户在系统上提出创新想法、开拓新思路、实践新方案。
Mandriva
Mandriva 在1998年由一个推崇Linux的小组创立,它的目标是尽量让工作变得简单。作为Red Hat Linux的一个分支,Mandriva 将自己定位在桌面市场的最佳Linux版本上。Mandriva的安装非常简单明了,为初级用户设置了简单的安装选项。它完全使用GUI界面,还为 磁盘 分区制作了一个适合各类用户的简单GUI界面。软件包的选择非常标准,另外还有对软件组和单个工具包的选项。
Knoppix
由 德国 的Klaus Knopper开发的Knoppix,是一个基于Debian的发行版。Knoppix严格算起来是一款 LiveCD Linux,所谓的LiveCD就是整个操作系统都在一张光盘上,只要开机,从光盘启动,就能拥有一个完整的Linux系统,无须安装。Knoppix也能够非常轻松地安装到 HDD 上。它具有强大的硬件检测能力、系统修复能力和即时压缩 传输技术 。
Linux Mint
Linux Mint提供了经典桌面配置的现代版本,对于Linux新手用户来说是一个很好的人门选项。这个发行版本易于安装,并且配备了从mac0S 或 Windows 切换过来的必要软件。此外,Linux Mint发行版还能更好地支持专有媒体格式,使用户可以开箱即用地播放视频、DVD和MP3音乐文件。
特点
稳定: Linux 是在 unix 基础上发展的操作系统,因此,Linux具有与Unix系统相似的使用界面与操作方式,同时也继承了Unix稳定而高效的特点。对于安装了 Linux 的主机来说,可以连续工作一年以上不会宕机。
安全: Linux 采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。 同时 Linux 有相当多的团队、个人参与开发,用户可以随时获得最新的安全信息与软件更新。
多任务、多用户: 与 Windows 不同,Linux主机可以允许多人同时登录工作,并且合理地分配系统资源。 内置网络支持,能与 NetWare 、Windows Server、OS/2、 unix 等无缝连接,网络效能在各种 UNIX 测试评比中速度最快,同时支持FAT16、FAT32、NTFS、 Ext2 FS、ISO9600等多种文件系统。
兼容性 强: Linux 是一个免费使用和自由传播的类UNIX系统,不受任何商品化软件的版权约束的软件产品,为满足用户需要,它必须具有良好的兼容性,符合POSIX、X/Open等标准,兼容各种文件系统和网络,硬件平台和应用程序支持面广。
设备独立性: Linux是具有设备独立性的操作系统,由于用户可以免费得到Linux的内核源代码,因此,可以修改内核源代码,适应新增加的外部设备。
可移植性好: Linux是一种可移植的操作系统,能够在从微型计算机到 大型计算机 的任何环境和任何平台上运行。 这要求 Linux内核 设计分为与体系结构无关部分和相关部分,使其能够比较容易地运行在不同的 计算机 硬件平台上,即内核要有高度的适应能力。
应用领域
数据库
经典的开源数据库 MySQL 就是在Linux操作系统下开发的,与此类似,其他著名的关系数据库,包括 Oracle数据库 、 DB2 和 sybase 等,也提供了专门为Linux操作系统定制的版本。对于非关系型数据库,例如 HBase 和 mongodb ,它们同样是在 Linux 环境下进行部署的。
桌面应用
随着Limux操作系统在图形用户接口方面和应用软件方面的发展,Linux在桌面应用方面得到了显著提高,现在完全可以作为一种集办公应用、 多媒体 应用、 网络应用 等多功能为一体的图形界面操作系统。 其中, Ubuntu 作为Linux领域中广泛使用的图形桌面系统之一,不仅在桌面应用环境方面进行了优化,而且其开发社区也是最活跃的开源开发社区之一。
云计算
云计算的一个关键组成部分是虚拟化,而以 Linux 为核心的虚拟化软件如 威睿 、Xen和 基于内核的虚拟机 都备受瞩目。在开源云计算软件Cloudstack和 OpenStack 中,许多组件都基于Linux。随着云计算的迅速发展,越来越多的公司和研发机构正在利用开源系统,而Limux作为最先开源的系统,其重要性不言而喻。
网络服务器
在金融、保险、银行、通信、互联网及其他企业的服务器上,甚至是 超级计算 中心上,大部分运行的是 unix 的替代者Linux系统,网络服务器是其典型的应用领域。 Linux 在网络服务器具备多重优势。首先,它能够与UNIX开发的软件无缝兼容,无需进行修改即可顺利运行。其次,Linux系统在网络功能方面表现非常稳定,能够满足7x24小时甚至更长时间的系统需求。最后,Linux拥有大量实用软件,并支持GPL授权,有效地降低了软件升级的成本。
嵌入式系统开发
Linux内核 的灵活性使得在 嵌入式系统 开发中使用Linux成为最为合适的选择。内核可根据 硬件系统 配置进行裁剪和重新编译,更容易满足嵌入式系统对功能、成本、体积和功耗的严格要求。 linux嵌入式应用 由内核和根据需求定制的系统模块组成,构成一种小型操作系统。这一领域不仅对 Linux 应用具有商业前景,而且由于Linux对各种设备的广泛支持,方便地应用于 机顶盒 、IA设备、PDA、 掌上电脑 、WAP手机、车载盒以及工业控制等智能信息产品。
移动设备
移动设备的功能和复杂性随着半导体技术的进步而提高。手机制造商和 移动运营商 为了在竞争激烈的市场中扩大业务,需要开发和部署新的功能和服务,而传统的专有开发平台已经不够用了。Linux可以给运营商提供一个可控的、可定制的、可扩展的开放平台,满足他们的标准和规范,同时让客户享受个性化的服务。手机制造商用Linux可以给用户提供独特的体验,同时降低开发和认证的成本。