Linux简介
Linux是一种自由和开放源码的类UNIX操作系统。其操作系统的内核由林纳斯·托瓦兹(Linus Torvalds)在1991年10月5日首次发布,内核加上用户空间的应用程序即组成了Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。除了一部分专家之外,大多数人都是直接使用Linux 发行版,而非自己选择每一样组件或自行设置。
Linux严格意义上是指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。如今Linux常用来指基于Linux的完整操作系统,内核则改以Linux内核称之。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将其组合系统命名为GNU/Linux,但Linux不属于GNU计划,这个名称并没有得到社群的一致认同。
Linux最初是作为支持英特尔x86架构的个人电脑中一个自由操作系统。目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux可以运行在服务器和其他大型平台之上,如大型计算机和超级计算机。世界上500个最快的超级计算机已100%运行Linux发行版或变种。Linux也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的Android操作系统就是建立在Linux内核之上。
通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版。一些流行的主流Linux发行版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器、LibreOffice办公软件、GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。
基本信息
编程语言:C语言、少量汇编语言、Rust语言(自6.1版开始)
操作系统家族:类Unix系统
源码模式:自由及开放源代码软件
首次发布版本:1991年的0.01版(代号“Freax”)
市场取向:桌面、服务器、嵌入式设备、移动设备
支持平台:Alpha, ARC, ARM, C6x, H8/300, Hexagon, Itanium, m68k, Microblaze, MIPS, Nios II, OpenRISC,PA-RISC, PowerPC, RISC-V, s390, SuperH、SPARC, Unicore32、x86(含x86-64), Xtensa等
内核类别:宏内核
默认用户界面:命令行、图形界面(X窗口系统,Wayland)等
官方网站:https://www.kernel.org/
历史
UNIX渊源
UNIX操作系统是美国AT&T公司贝尔实验室于1969年完成的操作系统。最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie),道格拉斯·麦克罗伊(Douglas McIlroy),和乔伊·欧桑纳于1969年在AT&T贝尔实验室开发。于1971年首次发布,最初是完全用汇编语言编写。在1973年用一个重要的开拓性的方法,Unix被丹尼斯·里奇用编程语言C(内核和I/O例外)重新编写。高级语言编写的操作系统具有更佳的兼容性,能更容易地移植到不同的计算机平台。
1983年,理查德·马修·斯托曼创立GNU计划。这个计划的目标是为了发展一个完全自由的类Unix操作系统。自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并且在1989年撰写GPL。1990年代早期,GNU开始大量地产生或收集各种系统所必备的组件,如函式库、编译器、调试工具、文本编辑器,以及Unix的用户界面(Unix shell);但是一些底层环境,如硬件驱动、守护进程、系统内核(kernel)仍然不完整和陷于停顿,GNU计划中是在Mach微内核的架构之上开发系统内核,也就是所谓的GNU Hurd,但是这个基于Mach的设计异常复杂,发展进度则相对缓慢。林纳斯·托瓦兹曾说过如果GNU内核在1991年时可以用,他不会自己去写一个。
创立
1991年,林纳斯·托瓦兹在赫尔辛基大学上学时就对操作系统很好奇。他对MINIX只允许在教育上使用很不满(因在当时MINIX限制任何商业使用),于是他便开始写他自己的操作系统,这就是后来的Linux内核。
林纳斯·托瓦兹开始在MINIX上开发Linux内核,为MINIX写的软件也可以在Linux内核上使用。后来使用GNU软件代替MINIX的软件,因为使用从GNU系统来的源代码可以自由使用,这对Linux的发展有益。使用GNU GPL协议的源代码可以被其他项目所使用,只要这些项目使用同样的协议发布。为了让Linux可以在商业上使用,林纳斯·托瓦兹决定更改他原来的协议(原协议限制商业使用),以GNU GPL协议来代替。之后许多开发者致力融合GNU元素到Linux中,做出一个有完整功能的、自由的操作系统。
命名
Linux的第一个版本在1991年9月被大学FTP server管理员Ari Lemmke发布在互联网上,最初Torvalds称这个内核的名称为”Freax”,意思是自由(“free”)和奇异(“freak”)的结合词,并且附上”X”这个常用的字母,以配合所谓的类Unix的系统。但是FTP服务器管理员嫌“Freax”的名称不好听,把内核的称呼改成“Linux”,当时仅有10000行代码,仍必须执行于Minix操作系统之上,并且必须使用硬盘引导;随后在10月份第二个版本(0.02版)发布,同时这位芬兰赫尔辛基的大学生在comp.os.minix上发布一则消息:
Hello everybody out there using minix- I’m doing a (free) operation system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.
Linux的标志和吉祥物是一只名字叫做Tux的企鹅。标志的由来是因为林纳斯在澳洲时曾被一座动物园里的小蓝企鹅咬了一口,便选择企鹅作为Linux的标志;但更容易被接受的说法是:企鹅代表南极,而南极又是全世界所共有的一块陆地,即代表Linux是所有人的Linux。
发展现状
1994年3月,Linux1.0版正式发布,Marc Ewing成立Red Hat软件公司,成为最著名的Linux经销商之一。早期Linux的引导管理程序(boot loader)使用LILO(Linux Loader),早期的LILO存在着一些缺陷,例如无法识别1024柱面以后的硬盘空间,后来的GRUB(GRand Unified Bootloader)克服这些缺点,具有“动态搜索内核文件”的功能,可以让用户在引导的时候,自行编辑引导设置系统文件,透过ext2或ext3文件系统中加载Linux Kernel(GRUB通过不同的文件系统驱动可以识别几乎所有Linux支持的文件系统,因此可以使用很多文件系统来格式化内核文件所在的扇区,并不局限于ext文件系统)。
目前由Linus Torvalds带领下,众多开发人员共同参与开发和维护Linux内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持Linux内核的GNU组件。一些个人和企业开发的第三方的非GNU组件也提供对Linux内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。Linux社区或企业都推出一些重要的Linux发行版,包括Linux内核、GNU组件、非GNU组件,以及其他形式的软件包管理系统软件。
Linux发行版发展图
系统架构
Linux内核支持各种硬件架构,为软件提供公共平台。基于Linux的系统是一个模块化的类Unix操作系统。Linux操作系统的大部分设计思想来源于20世纪70年代到80年代的Unix操作系统所建立的基本设计思想。Linux系统使用宏内核,由Linux内核负责处理进程控制、网络,以及外围设备和文件系统的访问。在系统运行的时候,设备驱动程序要么与内核直接集成,要么以加载模块形式添加。
Linux具有设备独立性,它内核具有高度适应能力,给系统提供更高级的功能。GNU用户界面组件是大多数Linux操作系统的重要组成部分,提供常用的C函数库,Shell,还有许多常见的Unix实用工具,可以完成许多基本的操作系统任务。大多数Linux系统使用的图形用户界面建立在X窗口系统之上,由X窗口(XWindow)系统通过软件工具及架构协议来建立操作系统所用的图形用户界面。
Linux操作系统包含的一些组件
启动程序:例如GRUB或LILO。该程序在计算机开机启动的时候运行,并将Linux内核加载到内存中。
init程序:init是由Linux内核创建的第一个进程,称为根进程,所有的系统进程都是它的子进程,即所有的进程都是通过init启动。init启动的进程如系统服务和登录提示。
软件库包(含代码):可以通过运行的进程在Linux系统上使用ELF格式来执行文件,负责管理库使用的动态链接器是“ld-linux.so”。Linux系统上最常用的软件库是GNU C库。
用户界面程序:如命令行Shell或窗口环境。
Linux的应用
今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机(Super Computer),并且在服务器领域确定了地位,通常服务器使用LAMP组合。基于其低廉成本与高度可设置性,Linux常常被应用于嵌入式系统,例如机顶盒、移动电话及移动设备等。在移动电话上,基于Linux的Android已经成为IOS的主要竞争者;而在移动设备上,则成为Windows CE与Palm OS之外另一个选择。目前流行的TiVo数字摄影机使用了经过定制后的Linux。此外,有不少硬件式的网络防火墙及路由器,例如部分LinkSys的产品,其内部都是使用Linux来驱动、并采用了操作系统提供的防火墙及路由功能。
版权声明
Scholar’s Blog by scholargeek is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由董仕麟创作并维护的scholargeek博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Scholar’s Blog博客,版权所有,侵权必究。