Linux内核
















body.skin-minerva .mw-parser-output table.infobox caption{text-align:center}














































Linux

Tux

Linux 3.0.0 boot.png
Linux内核3.0.0启动画面

开发者
林納斯·托瓦茲和几千名合作者
编程语言
C語言、汇编语言
作業系統家族
类Unix系统
初始版本
0.01
1991年9月17日,​27年前​(1991-09-17
最新版本
Kernel: 4.20.5(2019年1月26日 (2019-01-26)[±]
最新測試版本
Kernel: 5.0-rc3[1](2019年1月21日,​9天前​(2019-01-21[±]
支持的语言

多语言

内核类别

單核心
许可证
GPL(僅)第二版[2][3]
各類封闭固件的許可證[4][5]
官方網站
www.kernel.org

Linux内核英语:Linux kernel),是一种开源的类Unix操作系统宏内核。整个Linux操作系统家族基于该内核部署在传统计算机平台(如个人计算机和服务器,以 Linux 发行版的形式[6])和各种嵌入式平台,如路由器、无线接入点、专用小交换机、机顶盒、FTA接收器英语FTA receiver、智能电视、数字视频录像机、网络附加存储(NAS)等。工作于平板電腦、智能手机及智能手表的Android操作系统同样通过Linux内核提供的服务完成自身功能。尽管于桌面电脑的占用率较低,基于Linux的操作系统统治了几乎从移动设备到主机的其他全部领域。截至2017年11月,世界前500台最强的超级计算机全部使用Linux。[7]


Linux内核最早是于1991年由芬兰黑客林納斯·托瓦茲为自己的个人电脑开发的,他当时在Usenet新闻组comp.os.minix登载帖子[8],这份著名的帖子标志着Linux内核计划的正式开始。如今,该计划已经拓展到支持大量的计算机体系架构,远超其他操作系统和内核。它迅速吸引了一批开发者和用户,利用它作为其他自由软件项目的核心,如著名的 GNU 操作系统。[9]而今天,Linux 内核已接受了超过1200家公司的近12000名程序员的贡献,其中包括一些知名的软硬件发行商。[10][11]


从技术上说,Linux 只是一个符合POSIX 标准的内核。它提供了一套应用程序接口(API),通过接口用户程序能与内核及硬件交互。仅仅一个内核并不是一套完整的操作系统。有一套基于 Linux 内核的完整操作系统叫作Linux 操作系统,或是GNU/Linux(在该系统中包含了很多GNU 计划的系统组件)。


Linux 内核是在GNU通用公共许可证第2版之下发布的[3](加上一些非自由固件、blob 与各种非自由许可证[12]),是一个开源项目协作的突出例子。它的版本支持根据版本最长可达6年,貢獻者遍佈世界各地,日常开发相关的讨论在Linux 内核邮件列表英语Linux kernel mailing list上。




目录






  • 1 历史


    • 1.1 塔能鮑姆-林納斯辯論




  • 2 架构


    • 2.1 編程語言


    • 2.2 编译器兼容性


    • 2.3 接口


      • 2.3.1 内核至用户空间API


      • 2.3.2 内核至用户空间ABI


      • 2.3.3 内核内API


      • 2.3.4 内核内ABI




    • 2.4 技术特性


      • 2.4.1 抢占式调度系统


      • 2.4.2 可移植性


      • 2.4.3 内核错误和oops




    • 2.5 安全




  • 3 开發


    • 3.1 开发者社区


    • 3.2 开发过程与模式


      • 3.2.1 同 Linux 发行版的关系




    • 3.3 重新开发的估价


    • 3.4 維護


      • 3.4.1 2.0之前的版本系列


      • 3.4.2 2.0与2.6.x.y版本系列(主要版本)


      • 3.4.3 3.x.y版本系列


      • 3.4.4 4.x.y版本系列


      • 3.4.5 5.x.y版本系列




    • 3.5 版本命名


    • 3.6 版本時間線




  • 4 法律層面


    • 4.1 许可证


      • 4.1.1 GPL第三版


      • 4.1.2 韌體爭議


      • 4.1.3 載入式核心模組許可證




    • 4.2 SCO爭議




  • 5 参考文献


  • 6 外部連結


  • 7 参见





历史






林納斯·托瓦茲


1991年,林納斯·托瓦茲,一名21岁的就读于芬兰赫尔辛基大学的计算机科学专业学生,基于一些简单的想法,打算编写一个操作系统内核。他通过英特尔80386汇编语言的任务切换器和一个终端驱动程序开始工作。8月25号,他在 comp.os.minix 新闻组里发了一封帖子:[13]


.mw-parser-output .templatequote{margin-top:0;overflow:hidden}.mw-parser-output .templatequote .templatequotecite{line-height:1em;text-align:left;padding-left:2em;margin-top:0}.mw-parser-output .templatequote .templatequotecite cite{font-size:small}

我在做个(自由的)操作系统(就是个兴趣爱好,我不会搞得像GNU那么大那么专业),打算让它工作在386 AT平台上。它从四月就开始酝酿了,马上就快好了。我想要那些喜欢或不喜欢minix的人的意见,因为我的系统和它有点类似(同样的文件系统的物理布局——由于实际原因——还有些其他的东西)。


我现在已经移植了bash(1.08)和gcc(1.40), 而且看起来奏效了。这意味着我会在几个月内得到一些实用的东西。「……」是的——它没有任何minix代码,并且它有一个多线程的fs。它可移植(使用386任务切换等),而且它可能永远不会支持除AT硬盘之外的其他东西,因为我只有这些:-(。



「……」它基本上是用C语言写的,但是大多数人可能不会把我写的东西叫做C语言。它使用我能找到的386的每个可以想象的特性,因为它也是一个教我关于386的功能的项目。我前面提到过,它使用内存管理单元来进行分页(还没实现到对硬盘的功能)和分段。这个分段功能使得它真正的依赖于386(每个任务都有64Mb的代码和数据段——4Gb中最多64个任务。如果有人需要超过每个任务64Mb的限制,那将是个麻烦事)。「……」我的一些C语言文件(特别是mm.c)几乎用了和C一样多的汇编。「……」不像minix,我也碰巧喜欢中断,所以中断将在不试图隐藏背后的原因的情形下被处理。



之后,许多人为这个项目贡献了代码。在早期,MINIX社区向 Linux 内核贡献了代码和想法。当时,GNU 项目已经创建了许多自由操作系统所需的组件,但是它自己的内核 GNU Hurd 尚不完整且无法使用;而BSD操作系统还没有摆脱合法的阻碍。因此,尽管早期版本的 Linux 功能有限,但它迅速获得了开发人员和用户。


到1991年9月,Linux内核版本 0.01 在芬兰大学和研究网络(FUNET)的FTP服务器(ftp.funet.fi)上发布。它有10,239行代码。在1991年10月,0.02版本的内核发布了。[14]


1991年12月,0.11版本的内核发布。由于它可以由运行相同内核版本的计算机编译,因此该版本是第一个自托管的英语Self-hosting Linux 内核。当托瓦茲于1992年2月发布0.12版本时,他采用了 GNU 通用公共许可证(GPL),而不是以前的自行起草的许可证,原先的许可证不允许商业再分发。[15]


1992年1月19日,第一篇文章提交给新的新闻组 alt.os.linux 出现。[16] 1992年3月31日,该新闻组更名为 comp.os.linux[17]


X Window 系统随后被移植到Linux上,所以在1992年3月,Linux 0.95 是第一个能够运行X的版本。从0.1x到0.9x的版本号大幅跨越是因为期望没有大的缺失部分的版本1.0的即将出现。然而,这被证明是错误的。从1993年到1994年初,出现了0.99版本的15个开发版本。


1994年3月14日,Linux内核1.0.0发布,共176,250行代码。随后的1995年3月,有310,950行代码的 Linux 内核1.2.0发布。


在1996年6月9日发布的 Linux内核2.0版本之后,以2.0为大版本的主要更新有如下这些:


  • 1999年1月25日 - 发布Linux内核2.2.0(1,800,847行代码)

  • 1999年12月18日 - 针对2.2.13的 IBM 大型机补丁发布,允许 Linux 内核用于企业级机器

  • 2001年1月4日 - 发布 Linux 内核2.4.0(3,377,902行代码)

  • 2003年12月17日 - 发布 Linux 内核2.6.0(5,929,913行代码)

从2004年开始,发布过程发生了变化,新的内核每隔2-3个月定期发布,编号为2.6.0、2.6.1,直到2.6.39。


2011年7月21日,Torvalds宣布发布Linux内核3.0:“2.6.<大版本> 的日子过去了”。[18]与Linux 2.6.39相比,大的技术变化同版本跃升没有关系;[19]它标志着内核的20周年纪念。[20]基于时间的发布过程保持不变。


2013年6月发布的Linux内核版本3.10包含15,803,499行代码[21],而2015年6月发布的4.1版本已发展到超过1950万行代码,由近14000名程序员贡献。[22]



塔能鮑姆-林納斯辯論



Linux不是微内核架构的事实曾经引起了林納斯·托瓦茲与安德鲁·斯图尔特·塔能鲍姆之间一场著名的争论。1992年在Usenet討論群組comp.os.minix[23]開始了一場網路論戰,討論的主題在於作業系統架構的選擇。稍後一些著名的駭客也加入討論,如大衛·米勒、曹子德。這場辯論影響了Linux核心的設計走向。塔能鲍姆認為Linux内核採用的宏内核已經過時了,應該採取比較先進的微內核架構,引起了林納斯的反擊。


在2006年5月9日,这个主题被重新审视[24],并且在2006年5月12日塔能鲍姆写了一份立场声明。[25]



架构





Linux内核地图


Linux是一个单体内核,支持真正的抢占式多任务处理(于用户态,和版本2.6系列之后的内核态[26][27])、虚拟内存、共享库、请求分页英语Demand paging、共享写时复制可执行体(通过内核同页合并英语Kernel same-page merging)、内存管理、Internet协议族和线程等功能。


设备驱动程序和内核扩展运行于内核空间(在很多CPU架构中是ring 0),可以完全访问硬件,但也有运行于用户空间的一些例外,例如基于FUSE/CUSE的文件系统,和部分UIO[28][29]。多数人与Linux一起使用的图形系统不运行在内核中。与标准单体内核不同,Linux的设备驱动程序可以轻易的配置为内核模块,并在系统运行期间可直接装载或卸载。也不同于标准单体内核,设备驱动程序可以在特定条件下被抢占;增加这个特征用于正确处理硬件中断并更好的支持对称多处理[27]。出于自愿选择,Linux内核没有二进制内核接口[30]


硬件也被整合入文件层级中。用户应用到设备驱动的接口是在/dev/sys目录下的入口文件[31]。进程信息也通过/proc目录映射到文件系统[31]




































Linux内的各种层,还显示了在用户空间和内核空间之间的分离。
用户模态

用户应用
例如:Bash,LibreOffice,GIMP,Blender,0 A.D.,Mozilla Firefox等
低层系统构件

系统守护进程
systemd,runit,logind,networkd,PulseAudio等

窗口系统
X11,Wayland,SurfaceFlinger

其他库
GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep等

图形
Mesa,AMD Catalyst等

C标准库

open()exec()sbrk()socket()fopen()calloc(),... (直到2000个子例程)
glibc目标为POSIX/SUS兼容,uClibc目标为嵌入式系统,bionic等
内核模态

Linux内核

stat, splice, dup, read, open, ioctl, write, mmap, close, exit等(大约380个系统调用)
Linux内核系统调用接口(SCI,目标为POSIX/SUS兼容)

进程调度子系统
IPC子系统

内存管理子系统
虚拟文件子系统
网络子系统
其他构件:ALSA,DRI,evdev,LVM,device mapper,Linux Network Scheduler,Netfilter
Linux安全模组:SELinux,TOMOYO,AppArmor, Smack
硬件(CPU,内存,数据存储设备等。)


編程語言


Linux是用C語言中的GCC版(這種C語言有對標準C進行擴展)寫的,還有幾個用組合語言(用的是GCC的"AT&T風格")寫的目標架構短段。因為要支持擴展的C語言,GCC在很長的時間里是唯一一个能正确编译Linux的编译器。有許多其他的語言用在一些方面上,主要集中在內核構建過程中(這裡指從源代碼創建可啟動鏡像)。包括Perl、Python和多種腳本語言。有一些驅動可能是用C++、Fortran或其他語言寫的,但是這樣是強烈不建議的。



编译器兼容性


GCC是Linux内核源代码的缺省编译器。在2004年,Intel主张通过修改内核,以便Intel C++編譯器能正确编译内核。[32]在2009年,有通过修改内核2.6.22版而成功编译的报告(並帶來平均8-9%效能增長)。[33][34]


自从2010年,已经开始进行使用Clang建造Linux内核的努力,Clang是一个可作为替代的C语言编译器[35];截止2014年4月12日,官方内核几乎可以完全用Clang编译[36][37]。致力于这个目标的计划叫做“LLVMLinux”,得名于Clang所基于的LLVM编译器下部构造[38]。LLVMLinux不意图复制Linux内核或LLVM,因此它是由最终提交给上游计划的补丁构成的一个元计划。使Linux内核可以用Clang编译最大的好处是比GCC有更快的编译速度,内核开发者可以得益于由此而来的更快的工作流程[39]



接口





区分四种接口:两种内核内部,两种在内核和用户空间之间。


符合标准是Linux内核内部的普遍策略。另一个规则是Linux内核主线不接受只由专有用户空间软件使用的内核模块。



内核至用户空间API





Linux API组成自Linux内核的系统调用接口、GNU C函数库、libcgroup[40]、libdrm、libalsa和libevdev[41]


源代码可移植性确保符合标准的C程序可以在符合同样标准的任何系统上编译和运行。Linux内核开发、GNU C函数库和相关的实用工具致力于追随POSIX和单一UNIX规范。Linux内核API英语Linux kernel interfaces是内核的系统调用接口。



内核至用户空间ABI



二进制可移植性将保证任何程序在符合标准的给定硬件平台上一旦编译通过,可以在符合同样标准的任何其他硬件平台上以编译后的形式运行。二进制可移植性是在基于Linux内核的操作系统上建造独立软件供应商(ISV)应用有商业可行性的本质要求。现有唯一的二进制兼容标准是Linux标准规范(LSB)。



内核内API




图形的数据和指令被发送至GPU来处理。渲染呈现的结果被存储在帧缓冲器,其中的内容由视频显示控制器扫描并发送至屏幕。


在不同子系统间使用了数个内核内部API。其中一些是跨越多个发行版保持稳定的,另一些则不然。对于内核内API不作担保。维护者和贡献者可以在任何时候增加或变更它们[42]


内核内API的例子包括针对下列类别设备驱动程序的软件框架/API:




  • Video4Linux – 用于视频捕捉硬件。


  • 高级Linux声音体系(ALSA) – 用于声卡。


  • New API英语New API – 用于网络接口控制器。


  • 直接渲染管理器英语Direct Rendering Manager – 用于图形加速器。


  • KMS驱动器英语KMS driver – 用于视频显示控制器英语Video display controller


  • mac80211 – 用于无线网络接口控制器[43]



内核内ABI


Linux内核开发者选择不维护稳定的内核内ABI[44]




技术特性



抢占式调度系统





I/O调度器在Linux内核存储栈各层内的位置。[45]


Linux内核提供在特定条件下的抢先式调度。直到内核版本2.4,只有用户进程是抢先式的,就是说除了时间片用尽,在用户模式下执行的当前进程,如果有更高态优先级的进程进入TASK_RUNNING状态,它就会被中断[46]。自从2.6系列Linux内核,增加了中断执行内核代码的任务的能力,但不是对于内核代码的所有段落[47]


Linux内核含有不同的调度器类[48]。内核缺省使用的调度机制叫做完全公平调度器,它介入于内核版本2.6.23[49]。这个缺省调度器类在内部也叫做SCHED_OTHER,而内核还含有两个遵循POSIX的实时调度类[50],分别叫做SCHED_FIFO(实时先进先出)和SCHED_RR(实时轮流式),二者都优先于缺省类[48]


通过使用实时Linux内核补丁PREEMPT_RT,可以支持对关键段落、中断处理器和“中断禁用”代码序列的完全抢先[51]。 实时Linux内核补丁部分地集成入主线内核已经带给它一些功能[52]。抢先机制改善延迟、增进响应性,并使得Linux更加适合桌面和实时应用。老版本内核有所谓的巨锁英语Giant lock,用于锁定粒度为整个内核的同步,它最终由Arnd Bergmann在2011年移除了[53]


还有叫做SCHED_DEADLINE英语SCHED_DEADLINE的调度策略,实现了最近截止期限最先英语earliest deadline first scheduling(EDF)算法,它增加于2014年3月30日发行的内核版本3.14[54][55]



可移植性





iPodLinux啟動Linux


尽管林納斯·托瓦茲的初衷不是使Linux成为一个可移植的操作系统,今天的Linux却是全球被最广泛移植的操作系统内核。從行動電話到超級電腦,甚至於有人成功的將Linux内核在索尼出品的遊戲機PS2及PS3和微軟出品的遊戲機Xbox上使用。Linux也是IBM超级计算机Blue Gene的操作系统。直至2011年11月,全球前五百大超級電腦(TOP500)有高達91.4%的比例採用Linux為它們的作業系統[56]。一些为手机开发的操作系统,使用Linux内核的修改后的版本,其中包括谷歌Android、Firefox OS、HP WebOS和诺基亚Maemo。[57][58][59]



内核错误和oops




内核错误(Kernel panic)



在Linux中,内核错误(Kernel panic)是指操作系统在监测到内核系统内部无法恢复的错误,相对于在用户空间代码类似的错误。操作系统试图读写无效或不允许的内存地址是导致内核错误的一个常见原因。内核错误也有可能在遇到硬件错误或操作系统BUG时发生。在许多情况中,操作系统可以在内存访问违例发生时继续运行。然而,系统处于不稳定状态时,操作系统通常会停止工作以避免造成破坏安全和数据损坏的风险,并提供错误的诊断信息。


在Linux上,oops即Linux内核的行为不正确,并产生了一份相关的错误日志。许多类型的oops会导致内核错误,即令系统立即停止工作,但部分oops也允许继续操作,作为与稳定性的妥协。这个概念只代表一个简单的错误。当内核检测到问题时,它会打印一个oops信息然后杀死全部相关进程。oops信息可以帮助Linux内核工程师调试,检测oops出现的条件,并修复导致oops的程序错误。



安全


计算机安全是一个非常公众化的主题,关系到Linux内核,因为大量在内核中的错误可能成为潜在的安全漏洞,是否允许提升权限漏洞或拒绝服务攻击源漏洞。[60]在过去的几年中,许多这样的缺陷被发现,并在Linux内核中被修补好。新的安全功能被继续实现,以解决在Linux内核中的电脑不安全问题。[61][62]


批評者指責內核開發人員,稱他們掩蓋(至少並未公佈)安全漏洞。2008年,作為回應,Torvalds稱:「個人認為,安全漏洞只是『正常的漏洞』。這些漏洞我並不去掩蓋,不過我不認為應當把它們特殊化,更不認為應該追蹤並公示它們……我不理會整個安全團隊,原因之一就是,我認為這些漏洞不僅美化還鼓勵了錯誤的行為。這令安全人員成了『英雄』,就猶如不修補正常漏洞的人就不值一提似的。而事實上,所有無聊的正常漏洞極為重要,僅僅因為它們實在太多了。我不認為該美化和關心那些嚴重的安全漏洞——它們並不及那些由死鎖造成的隨機嚴重崩潰來得更特殊。」[63][64]


如2012年五月,SYSRET指令被發現在AMD和英特爾處理器間在實現方面有差異,這個差異在Windows、FreeBSD、XenServer和Solaris這些主流作業系統會導致漏洞。2012年六月,Linux核心中該問題已被修復。[65]



开發



@media all and (max-width:720px){body.skin-minerva .mw-parser-output div.mw-graph{min-width:auto!important;max-width:100%;overflow-x:auto;overflow-y:visible}}

内核版本



开发者社区


截止2007年,内核开发已经从20位最活跃开发者写80%的代码转变为顶端30人写30%的代码,而顶端开发者花费更多的时间审核变更。[66] 开发者还可以按从属关系来归类;在2007年,顶端类属是“不知名”而顶端公司是Red Hat,它占有12%的贡献,而知名业余爱好者占3.9%。[66] 在2007年中所做内核变更已经由超过1900位开发者提交。一般假定Linux内核开发者社区由5000或6000名成员组成。


Linux基金会发表的2016年Linux内核开发报告的更新表明,从版本3.18(2014年12月)至4.7(2016年7月)期间:平均每次发行有来自200-250个公司的大约1500位开发者作出贡献。顶端30位开发者贡献了稍大于16%的代码。在公司中,顶端贡献者是Intel(12.9%)和Red Hat(8.0%),第三和第四位为“none”(7.7%)和“unknown”(6.8%)类属。



开发过程与模式


一个想要对 Linux 内核进行修改的开发者一般就从对那个修改的开发和测试开始着手。接下来的过程取决于变化的重要程度,及修改该变更的子系统数量是由单个还是多个修补程序组成。如果仅仅是修改了由单个维护人员维护的单个子系统,那么这些修改的补丁代码就直接通过Cc中某个邮件列表发送给相关的维护人员。邮件列表的阅读者和子系统的维护人员将检查补丁代码并提供反馈。一旦审查过程完成,维护者接受他内核代码树中的补丁。如果这些更改被认为是够重要的错误修复,那么包含这些修补程序的拉取请求(pull request)将在几天内发送给Linus。否则,将在下一个合并窗口时向Linus发送拉取请求。合并窗口通常会持续两周,并在之前的内核版本发布后立即启动[67]


Linus Torvalds拥有对Linux内核能够接受哪些更改和谁可以成为维护者的最终决定权。内核维护者在他们自愿放弃之前将维持他们的角色。目前,没有任何已知的内核维护者被要求退出。此外,还没有一个内核维护者因与其他维护者的交互风格的因素而受到Linus批评的例子。这为维护者提供了宽松的社区空间。虽然内核开发社区的文化多年来有所改善,但曾有一段时间它的声誉很糟糕[68][69]。认为自己遭受了不公正对待的开发者可以向Linux基金会的技术专家委员会报告[70]。尽管如此,一些社区成员仍然不认同现在的讨论氛围[71]



同 Linux 发行版的关系


大多数Linux用户运行一个由他们 Linux 发行版提供的内核。一些发行版搭载的是 Linux 的通用内核(也就是 “vanilla”或“stable”)版本。不过,一些Linux内核发行商(如Red Hat和SUSE)会维护他们自己的内核分支。这些发行商分支的内核版本通常相对于稳定版本(vanilla)而言更新的速度更慢一些,但是同样会包括所有相关的稳定版本分支的补丁。此外,他们同时也会增添一些新特性和对新硬件的支持,而这些支持是这些发行商分支基于的稳定分支所不包括的。



重新开发的估价




重新开发Linux内核的估价


按照传统商业软件开发的方式,重新开发Linux 2.6.0内核的估计代价将是6.12亿美元(4.67亿欧元、3.94亿英镑),以2004年的COCOMO人月估计模型.[72]在2006年,欧盟资助的一项研究表明,重新开发Linux 2.6.8以后的内核,代价是8.82亿欧元(11.4亿美元、7.44亿英镑)[73]


截至2011年1月4日,使用当前的代码行(LOC)和大卫·惠勒的计算工资数,这将花费约30亿美元(约22亿欧元),才能够重新开发Linux的内核。[74]



維護







2.0之前的版本系列





































































內核
初始发行日期
最新版本
維護者
支持状态
备注

舊版本,不再支援: 0.01
1991年09月17日
0.03

林納斯·托瓦茲

EOL


舊版本,不再支援: 0.10
1991年11月
0.12
EOL


舊版本,不再支援: 0.95
1992年03月08日
0.99.15
EOL


舊版本,不再支援: 1.0
1994年03月14日
1.0.9
EOL
有176,250字串。[75]此版本的Linux内核只支持单处理器基于i386的计算机系统,可移植性成为一个问题。随后1.2版(310,950字串)[76]支持多种计算机架构例如Alpha、SPARC、MIPS处理器。

舊版本,不再支援: 1.1
1994年04月06日
1.1.95
EOL


舊版本,不再支援: 1.2
1995年03月07日
1.2.13
EOL


舊版本,不再支援: 1.3
1995年06月12日
1.3.100[77]
EOL


舊版本,不再支援: pre2.0
1996年05月12日
pre2.0.14
EOL



格式:

舊版本

舊版本,仍被支援

当前版本

最新的预览版

未来版本





2.0与2.6.x.y版本系列(主要版本)











































































內核
初始发行日期
最新版本
維護者
支持状态
备注
2.0
1996年06月09日
2.0.40[78]

David Weinehall

EOL(已不再支援)

2.2
1999年01月26日
2.2.27-rc2[79]

Marc-Christian Petersen(前維護者艾倫·考克斯)

EOL(已不再支援)

2.4
2001年01月04日
2.4.37.11[80]

Willy Tarreau(前維護者Marcelo Tosatti)

EOL(已不再支援)

2.6.16
2006年03月20日
2.6.16.62[81]

Adrian Bunk(前維護者葛雷格·克羅哈曼)

EOL(已不再支援)

2.6.27
2008年10月09日
2.6.27.62

葛雷格·克羅哈曼[82]

EOL(已不再支援)

2.6.32
2009年12月03日
2.6.32.71[83]

Willy Tarreau(前維護者葛雷格·克羅哈曼)

EOL,长期支持版本,由2009年12月3日至2016年3月

2.6.34
2010年05月16日
2.6.34.15[84]

Paul Gortmaker(前維護者Andi Kleen)

EOL,长期支持版本,從2010年6月至2014年2月

2.6.39
2011年05月19日
2.6.39.4

林納斯·托瓦茲

EOL,2.6核心系列最後穩定版。



3.x.y版本系列



























































































































































內核
初始发行日期
最新版本
維護者
支持状态
备注
3.0
2011年07月22日
3.0.101

葛雷格·克羅哈曼

EOL,长期支持版本,從2011年7月至2013年10月
托瓦兹宣布,大的变化是,“没有,绝对没有。”[85]2011年5月30日,托瓦兹宣布,“让我们确保我们真正的下一个版本不只是一个全新的闪亮的数字,而是有一个好的内核。”3.0的发布日接近Linux的20周年纪念日。
3.2
2012年01月05日
3.2.99

Ben Hutchings

EOL,长期支持版本,從2011年12月至2018年5月

3.4
2012年05月21日
3.4.113

Li Zefan(前維護者葛雷格·克羅哈曼

EOL,长期支持版本,從2012年5月至2017年4月

3.5
2012年07月21日
3.5.7
葛雷格·克羅哈曼

EOL


  • CoDel队列管理算法

  • seccomp filters

  • 沙盒机制

  • Android风格的自动休眠和唤醒锁机制

  • 用户空间探测子系统uprobes

  • TCP连接修复

  • 减少重复确认加快转发的TCP Early Retransmit

  • 连续性内存分配器

  • kcmp ()系统调用

  • ext4文件系统加入元数据校验和

  • 改进Btrfs


3.6
2012年10月01日
3.6.11
葛雷格·克羅哈曼

EOL
客户端TCP Fast Open实现
3.7
2012年12月11日
3.7.10
葛雷格·克羅哈曼

EOL


  • 改进开源显卡驱动程序,包括: Nvidia、Intel 与 Radeon

  • 通过Xen hypervisor实现对ARM Cortex-A15的硬件虚拟化支持

  • 继续改进BTRFS文件系统

  • TCP Fast open


3.8
2013年02月19日
3.8.13
葛雷格·克羅哈曼

EOL


  • CPU热插拔支持;

  • 改进ACPI电源管理;

  • 改善XFS文件系统;

  • 支持64位ARMv8/AArch64;

  • 放弃支持旧的i386处理器,减少内核复杂度;

  • Video 4 Linux 2驱动支持DMA-BUF;

  • 在某些工作负荷下减少物理内存占用;

  • 支持微软Windows 8多重触摸协议;

  • 音频驱动改进;

  • 加密性能改进;

  • 支持下一代IBM POWER8处理器(2013年发布)

  • XFS文件系统的元数据完整性检查

  • 提升了NUMA调度

  • 核心内存使用审计和关联使用率限制

  • EXT4文件系统的inline data support

  • 近乎完全支持user namespace等待


3.9
2013年04月29日[86]
3.9.11
葛雷格·克羅哈曼

EOL


  • 繼續完善F2FS檔案系统

  • 省電功能改進

  • 改善ARM處理器支援

  • 音效、音訊重大更新

  • Google Goldfish Android模擬器原始碼

  • DRM顯示卡驅動改善

  • 硬體支援改善


3.10
2013年06月30日
3.10.108
Willy Tarreau

EOL,长期支持版本,從2013年6月至2017年10月


  • 完整支持DynTicks(动态定时器),并成为内核级别的核心特性。

  • KVM虚拟化改进。

  • 音频/声音驱动更新。

  • ARM架构支持改进,包括更好地支持64位架构。

  • 大量的Linux加密子系统优化。

  • AMD电源管理改进。

  • 分阶段驱动(Staging Drivers)改进与新举措。

  • BCache固态硬盘/机械硬盘缓存框架已经可用,使用两种硬盘的系统将会大大提速。

  • eCryptfs AES-NI性能改进,支持AES指令集的AMD/Intel x86处理器将会大大提速。

  • Btrfs文件系统支持skinny extent,quota也进行了一些重建。

  • F2FS闪存文件系统重大改进。

  • XFS额外保护。

  • DRM驱动多方面改进。

  • Radeon DRM驱动支持golden registers、UVD视频解码、RadeonSI tiling。

  • 引入QXL KMS驱动。


3.11
2013年09月02日
3.11.10
葛雷格·克羅哈曼

EOL


  • 支持LZ4压缩,LZ4压缩和解压缩速度快于LZO、Snappy和zlib,目前只支持ARM架构,在ARMv7 1.5GHz硬件上它的压缩速度能达到45.6MB/s,相比之下LZO是25.2 MB/s

  • 轻量级压缩交换缓存Zswap

  • 例行的Btrfs和XFS文件系统bug修正和性能改进,F2FS修正了Linux 3.10中发现的一个性能退化bug,首次加入高性能并行分布式文件系统Lustre

  • 动态电源管理支持从Radeon HD 2000到Radeon HD 7000系列的GPU
  • *KVM和Xen虚拟化支持64位硬件(AArch64)

3.12
2013年11月03日
3.12.74

Jiri Slaby(前維護者葛雷格·克羅哈曼)

EOL,长期支持版本,從2013年11月至2017年5月


  • 優化了CPU頻率管理器,更有效的實現動態調頻功能,間接提昇了部分開源和閉源驅動的性能。

  • 進一步改善了Radeon開源驅動的動態電源管理。

  • 增加了逆向工程出來的Snapdragon/Adreno顯卡驅動。

  • 支援AMD首個異構計算的Berlin系列伺服器APU。
  • *小幅改善了F2FS、XFS和Btrfs文件系統。
  • ext4檔案系統加入兩個新功能:支持主動extent緩存,減少主讀工作負荷的記憶體使用,改進非同步I/O。
  • *改進英特爾Haswell圖形性能。
  • 支援NVIDIA Optimus顯示技術的動態GPU電源管理,雙顯卡筆記本可以動態的關閉或啟用第二個GPU。


3.13
2014年01月20日
3.13.11
葛雷格·克羅哈曼

EOL

  • 多佇列塊層允許I/O負載在多CPU核心中均衡,延展性更好,減少磁碟延遲,提供更好的磁碟效能。

  • 支援英特爾Broadwell和AMD Radeon R9 waii的新驅動。

  • 防火牆子系統/包過濾引擎nftables取代iptables。

  • 提供了一個更簡單的核心ABI,減少重複程式碼,更有效的支援過濾規則。

  • 開源NVIDIA驅動加入新的電源管理程式碼。

  • 改進AMD HDMI音訊功能。

  • 英特爾硬體支援立體/3D HDMI裝置。

  • Btrfs和F2FS檔案系統改進。

  • Linux功率限制框架和即時平均功率限制驅動程式將允許在超出定義臨界值時限制某些元件的功耗。

3.14
2014年03月31日
3.14.79
葛雷格·克羅哈曼

EOL,长期支持版本,從2014年3月至2016年8月


  • 開源NVIDIA驅動支援更多NVIDIA顯示卡。

  • 英特爾Broadwell的顯示晶片及音訊系統獲得更好的支援。


  • VMware SVGA2顯示驅動程式重大變更。


  • NVIDIA Tegra初步支援PRIME。

  • 開源AMD驅動部份裝置支援改進。

  • 經由新的驅動程式支援AMD加密協作處理器。

  • 通用CPU加速。

  • F2FS及BTRFS檔案系統改進。

  • 新增Xen的PVH支援。

  • 加入Deadline調度器。

  • 支援MIPS最新的CPU核心支援。

  • 加入TCP自動抑制功能。


3.15
2014年06月08日
3.15.10
葛雷格·克羅哈曼

EOL


  • 支援EFI混合模式,可以在32位元的UEFI上執行64位元的核心。

  • 啟用異步執行緒來加快暫停及恢復的時間。

  • 開源驅動對新一代的NVIDIA Maxwell顯示卡的初步支援,以及對近期的AMD顯示卡的VEC 2.0視訊解碼支援。

  • CPU前端的AVX-512及RDSEED擴充支援。

  • 支援Sony DualShock 4控制器。


  • LLVM近乎完全支援編譯主線核心。


3.16
2014年08月03日
3.16.54
Ben Hutchings
长期支持版本,從2014年8月至2020年4月


  • 部份支援64位元ARM架構的EFI。


  • Samsung的Exynos多平臺核心支援。

  • 改進ARM的Xen虛擬化支援。

  • 支援Dell Latitude掉落感應器。

  • 新的Synaptics觸控版驅動程式。

  • 改進對Sony DualShock 4的支援。

  • 大量音效卡驅動程式更新。


  • Btrfs及XFS檔案系統的重大更新。


3.17
2014年10月05日
3.17.8
葛雷格·克羅哈曼

EOL


  • 開源AMD驅動改進。

  • 英特爾顯示晶片驅動程式改進。

  • Nvidia顯示卡驅動程式重大改進。

  • 新的DRM驅動程式。

  • 移除許多舊的或不再維護的驅動程式。

  • 增加了英特爾Braswell音效驅動程式。

  • 對Wacom繪圖板更好的支援。

  • 新增許多ARM硬體支援。

  • 支援東芝筆記型電腦掉落感應器。

  • x86上的KVM改進。


  • F2FS改進。


  • XFS有了sysfs介面。


3.18
2014年12月07日
3.18.95
Sasha Levin

EOL,长期支持版本,從2014年12月至2017年1月


  • Nouveau支援從DisplayPort輸出音訊。

  • 許多新的多媒體驅動程式。


  • Wacom繪圖板支援改進。

  • 在64位元ARM架構上的PCI支援。

  • 在大型伺服器上更快的暫停及恢復速度。

  • 郵件信箱框架進入主線代碼。


  • ACPI及電源管理改進。


3.19
2015年02月09日
3.19.8
葛雷格·克羅哈曼

EOL


  • 對Intel下一代的Skylake架構的顯示晶片的初步啟用。

  • 對Nvidia GeForce 900系列的基本支援。

  • 在Btrfs檔案系統上對於RAID 5及RAID 6的改進。

  • 對多點觸控的支援改進。




4.x.y版本系列




















































































































































































內核
初始发行日期
最新版本
維護者
支持状态
备注

舊版本,不再支援: 4.0
2015年04月12日
4.0.9

葛雷格·克羅哈曼

EOL



  • Skylake架構處理更好的支援。

  • 支援Intel的Quark單晶片。

  • 改進對PS3的支援。

  • 對Btrfs、F2FS、pNFS等多個檔案系統支援改進。

  • AMD Radeon驅動程式開始支援DisplayPort音源。



舊版本,不再支援: 4.1
2015年06月22日
4.1.52
Sasha Levin[87]
(曾经是葛雷格·克羅哈曼)[88]

EOL



  • ext4支援檔案系統層級的加密。


  • F2FS、XFS、Btrfs檔案系統增強與更新。


  • RAID 5/6改進。


  • Dell與Toshiba筆記型電腦支援改進。

  • 音訊功能模組化。



舊版本,不再支援: 4.2
2015年08月30日
4.2.8
葛雷格·克羅哈曼

EOL


  • 大量的ARM架構改進。


  • NCQ Trim支援。


  • F2FS每一檔案加密支援。

  • 輸入裝置支援改進。


  • UEFI ESRT支援以讓UEFI韌體可在系統內更新。



舊版本,不再支援: 4.3
2015年11月02日
4.3.6
葛雷格·克羅哈曼

EOL


  • 預設啟用Intel Skylake的顯示晶片支援。

  • 許多檔案系統方面的修正。



舊版本,仍被支援: 4.4
2016年1月10日
4.4.169
葛雷格·克羅哈曼
长期支持版本,從2016年1月至2022年2月


  • 新增許多AMD硬體支援。


  • UEFI 2.5改進。


  • Toshiba筆記型電腦更多的改進支援。

  • 重要的ext4加密修復。

  • 用於設定核心編譯參數的圖形化介面之一,Xconfig移植到Qt5。



舊版本,不再支援: 4.5
2016年3月14日
4.5.7
葛雷格·克羅哈曼

EOL


  • 對Kabylake處理器內建顯示晶片的初步支援。


  • AMD顯示卡諸多改進。

  • 對於ARMv6與ARMv7的程式碼重寫。


  • Xbox One控制器支援改進。


  • F2FS檔案系統增加了新功能。



舊版本,不再支援: 4.6
2016年5月15日
4.6.7
葛雷格·克羅哈曼

EOL


  • 對樹莓派的3D圖形效能改進。

  • 新增對許多ARM平臺的支援。

  • 新增對OrangeFS的支援。

  • 對XFS、F2FS、ext4、Btrfs的諸多改進。


  • EFI安全性改進。



舊版本,不再支援: 4.7
2016年07月24日
4.7.10
葛雷格·克羅哈曼

EOL


  • 支援AMD RX480。

  • 全新的安全模塊LoadPin。

  • 支援製作USB/IP協議的虛擬USB設備控制器。

  • 支援在Linux下更新UEFI韌體。

  • 新增schedutil頻率控制器,CPUFreq動態頻率縮放子系統速度更快、更精準。



舊版本,不再支援: 4.8
2016年10月02日
4.8.17
葛雷格·克羅哈曼

EOL



  • tmpfs文件系统支援透明大暫存頁。

  • 新的Formatted Kernel Documentation。[89]

  • 解決延遲問題的Timer Wheel。[90]

  • 改進高性能網路路由。[91]

  • 建立核心時允許使用GCC plugins。[92]

  • 加強使用者複製。[93]

  • AMD GPU驅動支援超頻,改進PowerPlay。

  • 初步支援NVIDIA Pascal顯卡。

  • 支援Raspberry Pi 3的BCM2837 SoC。

  • 支援ACPI Low-Power Idle。

  • 支援Microsoft Surface 3觸控螢幕。



舊版本,仍被支援: 4.9
2016年12月11日
4.9.148
葛雷格·克羅哈曼
长期支持版本,從2016年12月至2019年1月


  • 2/3 程式碼翻新。

  • 新增 Greybus 硬體協定。

  • 新增 Vmapped kernel stacks 機制。

  • 支援 Memory Protection Key 機制。

  • 新增 XFS 共享式資料延伸功能。

  • 為 AMDGPU 提供虛擬螢幕支援,更好的 AMDGPU GPU 重置支持,並對這個現代 AMD GCN 驅動程序進行了其他變化。

  • AMDGPU 還有試驗性的 Southern Islands 支持 (GCN 1.0),作為 Radeon DRM 中現有支持之外的一種選擇。

  • 對英特爾 DRM 作了各種修補和改進,最顯著的變化之一就是 DMA-BUF 隱式圍欄 (implicit fencing)。

  • 3D渲染期間,為 Raspberry Pi VC4 驅動程序減少 GPU 和記憶體方面的使用。

  • CPUFreq 驅動程序繼續更充分地使用調度程序的信息。

  • 內存保護密鑰 (MPK) 支持。

  • NVDIMM 支持方面的更新。

  • F2FS 性能方面的改進。

  • 支援 OverlayFS SELinux。

  • 支援另外 29 種 ARM 機器,包括 Raspberry Pi Zero、LG Nexus 5 及其他知名的移動/嵌入式硬體。

  • 支持 Mellanox 平台。

  • 內核線程 (Kthread) 方面的改進。

  • 開始支援 BBR congestion control。

  • System calls for memory protection keys。

  • 2017/01/19 確認為長期支援版本。



舊版本,不再支援: 4.10
2017年2月19日
4.10.17
葛雷格·克羅哈曼

EOL


  • 支援虛擬GPU。

  • 支援 Intel CPU L2/L3 Cache。

  • 優化對 EXT4、F2FS、XFS、OverlayFS、NFS、CIFS、UBIFS、BEFS 和 LOGFS 檔案系統的支援。

  • 針對 AMD Radeon GPU 驅動進行強化。

  • 全新的「perfc2c」工具。



舊版本,不再支援: 4.11
2017年5月1日
4.11.12
葛雷格·克羅哈曼

EOL


  • AMD GPU 電源管理更加成熟。

  • 已經可以處理 DisplayPort MST 音訊。

  • 初步支援 Gemini Lake。


  • SSD 支援可擴展 swapping。

  • 支援 SMC-R 協議(RFC7609)。

  • 增強並改進 Intel Turbo Boost Max 3.0。

  • 多隊列塊層支持可插拔 IO 調度器框架和死線調度器。

  • 新的 perf ftrace 命令。

  • 支持 Opal Storage Specification 驅動。

  • 新的 Raspberry Pi 驅動。

  • MD/RAID5 日誌。

  • 新的 statx() 系統調用。

  • SipHash 哈希函數,新的 LZ4 壓縮實現。

  • 大量的安全、架構和驅動更新。



舊版本,不再支援: 4.12
2017年7月2日
4.12.14
葛雷格·克羅哈曼

EOL


  • 史上最大更新。

  • 初步支援 AMD Radeon RX Vega GPU。

  • 初步支援 nVidia GeForce GTX 1000 "Pascal" 加速。

  • 支援 Gemini Lake 的顏色管理器 (Color Manager)。

  • 增加對 Intel Memory Bandwidth Allocation 的支援。

  • 新增 USB Type-C 控制器介面驅動和管理員。

  • 增加支援 Rivet Networks Killer 1535。


  • IPv4 增加對 L4 哈希函數支援。


  • IPv6 增加支援 NETDEV_RESEND_IGMP event。

  • 對 EXT4 支援 GETFSMAP ioctl。

  • 新 BFQ I/O 排程器。

  • 新 Kyber I/O 排程器。

  • 支援 Raspberry Pi 的 Broadcom BCM2835 溫度驅動。

  • 記憶體管理優化。

  • 加入 TEE (Trusted Execution Environment) 子系統。


  • SELinux 增加 security hook for prlimit。



舊版本,不再支援: 4.13
2017年9月3日
4.13.16
葛雷格·克羅哈曼

EOL


  • 初步支援 Intel Cannon Lake/Coffee Lake CPU。

  • Nouveau 的開源 NVIDIA 具有 HDMI 3D/stereoscopic 支持。

  • 現在還有一個用於統一 UUID/GUID 處理的更多內核代碼的 UUID 子系統。

  • 支援 WMI(Windows Management Instrumentation)匯流排。

  • EXT4 現在支援超大型目錄功能,支援到20億個目錄。

  • XFS 現在支援 SEEK_HOLE 和 SEEK_DATA。


  • NVMe 裝置現在寫入效能更好。

  • 新 HID 硬體支援。


  • Thunderbolt 改進。

  • 新音效晶片支援,包含 Realtek ALC215/ALC285/ALC289。



舊版本,仍被支援: 4.14
2017年11月12日
4.14.91
葛雷格·克羅哈曼
长期支持版本,從2017年11月至2020年1月


  • 2017/09/20 確認為長期支援版本。[94]

  • 支援最大 4,000TB 和 1,280,000TB 記憶體。

  • 支援 AMD 加密的協處理器(CCP)。

  • 高通 MSM8916 SoC 耳機插孔檢測,Allwinner H3 和 Cirrus Logic CS43130 的支持,Intel Kabylake 系統上對 RT5663、Realtek RT274、TI TLV320AIC32x6 和 Wolfson WM8523 的支持。

  • 支援 Wacom Driver 和 ASUS T100 Touchpad。

  • 增加 Retaltek RTL8822 驅動。

  • 支援 Intel 快取品質監控(CQM)。

  • ARM64 支援 VMAP_STACK。

  • 為 Btrfs 和 SquashFS 檔案系統加入 zstd 壓縮功能。

  • 支援 HDMI CEC(Raspberry Pi)。

  • 改善對 Ryzen CPU 的支援。



舊版本,不再支援: 4.15
2018年01月28日
4.15.18
葛雷格·克羅哈曼
EOL


  • 修補 Meltdown 和 Spectre 安全漏洞。

  • 支援 RISC-V 架構。

  • 支援 AMD 安全加密虛擬化。

  • 支援 HDMI、Display Port 聲音。

  • 支援 AMD Zen CPU 溫度檢測。

  • 增進 Intel Coffee Lake 內建顯示的穩定性。

  • 新增 AMD Radeon GPU 和 AMD GPU 開源驅動模式設置。


  • AMD Secure Encrypted Virtualization (SEV) 核心程式碼合併。



舊版本,不再支援: 4.16
2018年04月1日[95]
4.16.18
葛雷格·克羅哈曼
EOL


  • 完善 Meltdown 和 Spectre 安全漏洞更新。

  • 增進 RISC-V 支援。

  • 支援 KVM 對 AMD 安全加密虛擬化。

  • 移除未使用的程式碼。

  • 各種系統結構、驅動程式、網路等改進跟修復。



舊版本,不再支援: 4.17
2018年4月1日[96]
4.17.19
葛雷格·克羅哈曼
EOL


  • 改进 CPU 调度器的负载估算

  • raw BPF 跟踪点

  • XF 文件系统支持 lazytime

  • 内核 TLS 协议完全支持

  • histograms 触发器

  • 修补最新 Spectre 漏洞变种

  • 移除八种基本没人再使用的过时处理器架构

  • 支持 AMDGPU WattMan

  • 支持 Intel HDCP

  • 支持 Vega 12 GPU 和 NVIDIA Xavier SoC

  • 默认启用 AMDGPU DC

  • 改进电源管理,等等



舊版本,不再支援: 4.18
2018年6月3日[97]
4.18.20
葛雷格·克羅哈曼
EOL


  • Unprivileged file system mounts:非特权用户现在也能挂载 FUSE 文件系统

  • 用于异步 I/O 的新内核轮询接口

  • Restartable sequences

  • 新的 TCP zero-copy receive API

  • 用于高性能网络的 AF_XDP 机制

  • 支持 Qualcomm Snapdragon 845





舊版本,仍被支援: 4.19
2018年10月22日[98]
4.19.13
葛雷格·克羅哈曼
长期支持版本,从2018年10月至2020年12月


  • 基于异步 I/O 的轮询接口

  • L1TF 漏洞补丁

  • 块 I/O 延迟控制器

  • Common Applications Kept Enhanced (CAKE)队列管理算法

  • Wi-Fi 6 (802.11ax) 初步支持

  • 实验性文件系统 EROFS

  • Intel Cache Pseudo-locking

  • 基于时间的包传输

  • 改进 RISC-V 架构处理器的支持



當前版本: 4.20
2018年12月23日[99]
4.20.2
葛雷格·克羅哈曼
最新稳定版本


  • BPF 网络流解析器

  • taprio 流量调度器

  • PCI 层中的点对点 DMA 支持

  • 支持 C-SKY 架构

  • pressure-stall 检测机制

  • XArray 数据结构




格式:

舊版本

舊版本,仍被支援

当前版本

最新的预览版

未来版本





5.x.y版本系列




















版本
最初发行日期
当前版本
维护者
支持状态
备注

最新预览版本: 5.0
2019年01月06日[1]
5.0-rc1[1]
Linus Torvalds
最新不稳定发行



格式:

舊版本

舊版本,仍被支援

当前版本

最新的预览版

未来版本




Linux内核的主要贡献者可见于Linux核心黑客列表。



版本命名


Linux内核有三个不同的命名方案。


早期版本:


  • 第一个版本的内核是0.01。其次是0.02,0.03,0.10,0.11,0.12(第一GPL版本),0.95,0.96,0.97,0.98,0.99及1.0。[100]

从0.95版有许多的补丁发布於主要版本版本之间。


旧计划(1.0和2.6版之间),版本的格式為A.B.C,其中A,B,C代表:




  • A大幅度转变的内核。这是很少发生变化,只有当发生重大变化的代码和核心发生才会发生。在历史上曾改变两次的内核:1994年的1.0及1996年的2.0。


  • B是指一些重大修改的内核。
    • 内核使用了传统的奇数次要版本号码的软件号码系统(用偶数的次要版本号码来表示稳定版本)。




  • C是指轻微修订的内核。这个数字当有安全补丁,bug修复,新的功能或驱动程序,内核便会有变化。

自2.6.0(2003年12月)发布後,人们认识到,更短的发布周期将是有益的。自那时起,版本的格式為A.B.C.D,其中A,B,C,D代表:




  • AB是无关緊要的


  • C是内核的版本


  • D是安全补丁


自3.0(2011年7月)发布后,版本的格式為3.A.B,其中A,B代表:




  • A是内核的版本


  • B是安全补丁


而4.0(2015年4月)釋出後,則延續3.A.B的命名格式,只是將主版號變更為4。



版本時間線





來源:kernel.org[101]



法律層面



许可证


原先托瓦茲将 Linux 置于一个禁止任何商业行为的条例之下[102],但0.12版本之后改用 GNU 通用公共许可证第二版。[15] 该协议允许任何人对软件进行修改或发行,包括商业行为,只要其遵守该协议,所有基于Linux的软件也必须以该协议的形式发表,并提供源代码。


托瓦茲曾经公开声称将Linux置于GNU通用公共许可证之下是他一生中所做的“最好的决定”。[102]



GPL第三版


Linux 内核明确地仅发表在 GNU 通用公共许可证(GPL)第二版下,[3]而不向被许可方提供选择“任何更高版本”的选项(这是常见的 GPL 扩展)。关于如何轻松地改变许可证以使用后来的 GPL 版本(包括第3版)以及这种更改是否合乎需要,存在着相当多的争论。[103] 托瓦茲本人在版本2.4.0的发布中明确指出,他自己的代码仅在版本2下发布。[104]然而,GPL的条款规定,如果没有指定版本,那么可以使用任何版本;[105]并且艾伦·考克斯指出,很少有其他 Linux 贡献者指定了特定版本的 GPL。[106]


2006年9月,对29位关键内核程序员的调查显示其中的28位更倾向于使用 GPL 第二版(GPLv2)而非当时的 GPL 第三版(GPLv3)草案。 托瓦茲评论说:“我认为一些外界人士......相信我才是那个古怪不合群的人,因为我这么大张旗鼓地不做 GPLv3 的忠实粉丝。”[107]这些高水平的内核开发者就大众媒体对 GPLv3 的反对发表了评论,其中包括林納斯·托瓦茲本人、葛雷格·克羅哈曼和安德鲁·莫顿。[108]他们提到有关DRM/TiVo化日语TiVo化、专利及“附加限制”的条款,并警告GPLv3对“开源宇宙”的巴尔干化。[108][109]决定不采用 GPLv3 作为 Linux 内核许可证的托瓦茲在几年后重申了他的批评。[110]



韌體爭議


許可證爭議的一個重點是Linux使用韌體二進位包以支援某些硬體裝置。理察·馬修·斯托曼認為這些東西讓Linux某部份成為非自由軟體,甚至以此散佈Linux更會破壞GPL,因為GPL需要完全可獲取的原始碼[111]


林纳斯·托瓦兹及Linux社群中的領導者,支持較寬鬆的許可證,不支持理察·馬修·斯托曼的立場。社群中的Linux-libre提供完整的自由軟體韌體。



載入式核心模組許可證


另一個爭論點,就是載入式核心模組是否算是智慧財產權下的衍生創作,意即LKM是否也受GPL約束?托瓦茲本人相信LKM僅用一部分「公開」的核心介面,因此不算衍生創作,因此允許一些僅有二進位包裹的驅動程式或不以GPL宣告的驅動程式用於核心。但也不是每個人都如此同意,且托瓦茲也同意很多LKM的確是純粹的衍生創作,也寫下「基本上,核心模組衍生創作」這樣的句子。另一方面托瓦茲也說過:



有時候一些驅動程式原先並非為Linux設計,而是為其他作業系統而作(意即並非為Linux作的衍生創作),這是個灰色地帶……這「的確」是個灰色地帶,而我個人相信一些模組可視為非Linux衍生創作,是針對Linux設計,也因此不會遵守Linux訂下的行為準則。[112]


特別像繪圖卡驅動程式就有非常大的爭議,也許到最後得由立法機關給個答案。



SCO爭議



在2003年3月,SCO Group對IBM提告,聲稱IBM將一些在SCO智慧財產權許可證保護下的Unix原始碼植入Linux中,破壞了SCO給予IBM的原始碼使用許可權。另外SCO也發出一大堆存證函給許多公司,警告他們在沒有SCO許可權的情況下使用了Linux,此舉可能導致侵犯智慧財產權,並且以起訴為手段對個別使用者施壓。SCO也同時對Novell、戴姆勒克萊斯勒(DaimlerChrysler,在2004年7月被部份駁回)以及AutoZone提出告訴,且被Red Hat與其他反對SCO論點的公司反告。2007年8月24日,聯邦法院審理SCO對Novell案(SCO v. Novell),法院認定Novell才是Unix商標的合法擁有者,而不是SCO。2010年3月20日,美国联邦第十巡回上诉法院宣判,Novell才是UNIX與UnixWare商標的合法擁有者。此項判決宣布後,已進入破產保護程序的SCO公司,決定停止繼續提出訴訟。



参考文献





  1. ^ 1.01.11.2 Torvalds, Linus. Linux 5.0-rc3. LKML (邮件列表). 2019-01-21 [2019-01-22]. 


  2. ^ InfoWorld. Linux creator Torvalds still no fan of GPLv3. [2008-10-11]. 


  3. ^ 3.03.13.2 COPYING Archive.is的存檔,存档日期2012-12-21


  4. ^ Stallman, Richard. Linux, GNU, and freedom. Free Software Foundation. 2002 [2007-02-21]. 


  5. ^ linux/kernel/git/stable/linux-stable.git/blob - firmware/WHENCE. git.kernel.org. 2002-10-16 [2012-08-21]. (原始内容存档于2013-01-13). 


  6. ^ README - kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org. [2018-02-18] (英语). 


  7. ^ TOP500 Supercomputer Sites. www.top500.org. [2018-02-18] (英语). 


  8. ^ What would you like to see most in minix?. Linus Benedict Torvalds. 1991-08-26 [2010-12-21]. 


  9. ^ Free as in Freedom: Chapter 9. www.oreilly.com. [2018-02-18]. 


  10. ^ The Linux Foundation Releases Linux Development Report. 2016-07-19 [2018-02-18]. (原始内容存档于2016-07-19). 


  11. ^ Greg Kroah-Hartman. Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It. [2018-02-19]. 


  12. ^ git.kernel.org - linux/kernel/git/stable/linux-stable.git/blob - firm…. archive.is. 2013-01-13 [2018-02-18]. (原始内容存档于2013-01-13). 


  13. ^ Torvalds, Linus Benedict. What would you like to see most in minix?. Newsgroup: comp.os.minix. 26 August 1991. Usenet: 1991Aug25.205708.9541@klaava.Helsinki.FI. 


  14. ^ Torvalds, Linus Benedict. Free minix-like kernel sources for 386-AT. Newsgroup: comp.os.minix. 5 October 1991. Usenet: 1991Oct5.054106.4647@klaava.Helsinki.FI. 


  15. ^ 15.015.1 Torvalds, Linus. Release Notes for Linux v0.12. The Linux Kernel Archives. [21 February 2007]. 


  16. ^ Summers, David W. Troubles with Partitions. Newsgroup: alt.os.linux. 19 January 1992 [7 January 2007]. Usenet: 1992Jan19.085628.18752@cseg01.uark.edu. 


  17. ^ Clegg, Alan B. It's here!. Newsgroup: comp.os.linux. 31 March 1992 [7 January 2007]. Usenet: 1992Mar31.131811.19832@rock.concert.net. 


  18. ^ Torvalds, Linus. Linux 3.0 release. Linux kernel mailing list. 21 July 2011 [16 May 2013]. 


  19. ^ Leemhuis, Thorsten. Linux Kernel Data. The H. Heinz Heise. 19 May 2011 [22 July 2011]. 


  20. ^ Hachman, Mark. Linux 3.0 Released; Linus Torvalds Explains Why You Shouldn't Care. PC Magazine. Ziff Davis. 22 July 2011 [11 November 2014]. 


  21. ^ Leemhuis, Thorsten. What's new in Linux 3.10. The H. Heinz Heise. 1 July 2013 [15 July 2013]. 


  22. ^ Linux Kernel At 19.5 Million Lines Of Code, Continues Rising. Phoronix. 23 June 2014 [23 June 2015]. 


  23. ^ A. S. Tanenbaum. LINUX is obsolete. Newsgroup: comp.os.minix. January 29, 1992 [2006-11-27]. 12595@star.cs.vu.nl. 


  24. ^ Torvalds, Linus. Hybrid kernel, not NT. 9 May 2006 [2007-01-06]. 


  25. ^ Tanenbaum, Andy. Tanenbaum-Torvalds Debate: Part II. 12 May 2006 [2007-01-06]. 


  26. ^ FAQ: Preemption. kernelnewbies.org. 22 August 2009 [7 May 2015]. 


  27. ^ 27.027.1 Jonathan Corbet. Driver porting: the preemptible kernel. LWN.net. 24 February 2003 [7 May 2015]. 


  28. ^ Jake Edge. Character devices in user space. LWN.net. 25 November 2008 [7 May 2015]. 


  29. ^ Jonathan Corbet. UIO: user-space drivers. LWN.net. 2 May 2007 [7 May 2015]. 


  30. ^ Kroah-Hartman, Greg. The Linux Kernel Driver Interface. (原始内容存档于4 November 2013). 


  31. ^ 31.031.1 Nguyen, Binh. Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy. The Linux Documentation Project. 30 July 2004 [28 November 2012]. 


  32. ^ Ingo A. Kubbilun. Linux kernel patch for Intel Compiler. Pyrillion.org. 2004-06-02 [2010-11-12]. (原始内容存档于2011-07-22). 


  33. ^ Slashdot. Linux.slashdot.org. [2010-10-30].  已忽略文本“ High Performance Linux Kernel Project—LinuxDNA ” (帮助)


  34. ^ LinuxDNA Supercharges Linux with the Intel C/C++ Compiler. Linux Journal. [2010-10-30]. 


  35. ^ Lelbach, Bryce. Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts). cfe-dev (邮件列表). 25 October 2010. (原始内容存档于7 September 2015). 


  36. ^ Larabel, Michael. Linux 3.15 Can Almost Be Compiled Under LLVM's Clang. Phoronix. 12 April 2014 [10 June 2014]. 


  37. ^ Larabel, Michael. Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel. Phoronix. [20 November 2014]. 


  38. ^ Edge, Jake. LFCS: The LLVMLinux project. LWN.net. 7 May 2013 [3 March 2015]. 


  39. ^ Möller, Jan-Simon. LLVMLinux: The Linux Kernel with Dragon Wings (PDF). LLVM Project. 2 February 2014 [3 March 2015]. 


  40. ^ ControlGroupInterface. freedesktop.org. 


  41. ^ libevdev. freedesktop.org. 


  42. ^ Greg Kroah-Hartman. The Linux Kernel Driver Interface. [10 April 2015]. (原始内容存档于4 November 2013). 


  43. ^ About mac80211. Linux Kernel Organization, Inc. [8 June 2014]. 


  44. ^ Report on ABI changes in the Linux kernel. Andrey Ponomarenko's ABI laboratory. 17 March 2016. 


  45. ^ Werner Fischer; Georg Schönberger. Linux Storage Stack Diagram. Thomas-Krenn AG. 1 June 2015 [8 June 2015]. 


  46. ^ Bovet, Daniel P.; Cesati, Marco. Chapter 10: Process Scheduling. Understanding the Linux Kernel. O'Reilly. October 2000 [15 October 2011]. ISBN 0-596-00002-2. (原始内容存档于21 September 2014). 


  47. ^ Santhanam, Anand. Towards Linux 2.6, A look into the workings of the next new kernel. IBM Global Services. 23 September 2003 [15 October 2011]. (原始内容存档于27 September 2013). 


  48. ^ 48.048.1 Bar, Moshe. The Linux Scheduler. Linux Journal. Belltown Media, Inc. 1 April 2000 [14 April 2012]. 


  49. ^ Molnár, Ingo. [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]. LKML (邮件列表). 13 April 2007 [14 April 2012]. 


  50. ^ IEEE Standard for Information Technology – Portable Operating System Interface, POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993). 


  51. ^ McKenney, Paul. A realtime preemption overview. LWN.net. 10 August 2005 [5 February 2012]. 


  52. ^ OSADL Project: Realtime Linux. OSADL. [5 February 2012]. 


  53. ^ Bergmann, Arnd. BKL: That's all, folks. Linux Kernel Organization, Inc. 5 March 2011 [20 February 2012]. (原始内容存档于20 July 2012). 


  54. ^ Larabel, Michael. The Linux 3.14 Kernel Already Has Many Exciting Features. Phoronix. 24 January 2014 [3 February 2014]. 


  55. ^ Linux kernel 3.14, Section 1.1. Deadline scheduling class for better real-time scheduling. kernelnewbies.org. 30 March 2014 [2 April 2014]. 


  56. ^ TOP500 Statistics. Top500. [2012-04-26]. (原始内容存档于2012-11-02). 


  57. ^ Greg Kroah-Hartman. Android and the Linux kernel community. 2010-02-02 [2010-02-03]. This means that any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google's kernel tree, causing it to fail to build in the kernel.org tree. Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on. 


  58. ^ Linux developer explains Android kernel code removal. ZDNet. 2010-02-02 [2010-02-03]. (原始内容存档于2010-02-06). 


  59. ^ Maemo platform described as being based on Linux kernel. Maemo community. 2010-04-09 [2010-04-09]. 


  60. ^ K.K. Mookhey, Nilesh Burghate and ISACA. Linux-- Security, Audit and Control Features. ISACA. 2005: 14. ISBN 1-893209-78-4. 


  61. ^ Brian Hatch. Hacking exposed Linux: Linux security secrets & solutions. McGraw Hill Professional. 2008: 524. ISBN 0-07-226257-5. 


  62. ^ Trent Jaeger. Operating system security. Morgan & Claypool Publishers. 2008: 122. ISBN 1-59829-212-9. 


  63. ^ Jeremy Andrews. Security Bugs and Full Disclosure. 2008-07-16 [2010-12-31]. (原始内容存档于2012-07-10). 


  64. ^ Brad Spengler. Linux's unofficial security-through-coverup policy. Full-Disclosure (邮件列表). 2008-07-16 [2010-12-31]. 


  65. ^ The Intel SYSRET privilege escalation –. Blog.xen.org. 2012-06-13 [2012-07-26]. 


  66. ^ 66.066.1 Marti, Don. Are top Linux developers losing the will to code?. ComputerworldUK. [2016-10-24] (英国英语). 


  67. ^ How the development process works. [4 February 2018]. 


  68. ^ Sharwood, Simon. Linux kernel dev who asked Linus Torvalds to stop verbal abuse quits over verbal abuse. The Register. 6 October 2015. 


  69. ^ Corbet, Jonathan. Bash the kernel maintainers. LWN.net. 6 November 2017 [4 February 2018]. 


  70. ^ Code of Conflict. [4 February 2018]. 


  71. ^ Edge, Jake. Too many lords, not enough stewards. LWN.net. 31 January 2018 [4 February 2018]. 


  72. ^ David A. Wheeler. Linux Kernel 2.6: It's Worth More!. 


  73. ^ Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector 互联网档案馆的存檔,存档日期2010-02-15., Table 3 on page 50.


  74. ^ Wheeler, David. The Linux Kernel: It’s Worth More!. [17 September 2012]. 


  75. ^ Kernel 1.0 Source Code Release(last checked 2008-10-27)


  76. ^ Kernel 1.2 Source Code Release(last checked 2008-10-27)


  77. ^ Torvalds, Linus. Century Linux!. LKML (邮件列表). 10 May 1996 [29 April 2016]. 


  78. ^ David Weinehall. [ANNOUNCE] Linux-kernel 2.0.40 aka ``The Moss-covered Tortoise. 2004-02-08. (原始内容存档于2012-05-30). 


  79. ^ Marc-Christian Petersen. Linux 2.2.27-rc2. 2005-01-13. (原始内容存档于2012-05-30). 


  80. ^ Willy Tarreau. Linux 2.4.37.7. linux-kernel (邮件列表). 2009-07-26. 


  81. ^ Adrian Bunk. Linux 2.6.16.62. linux-kernel (邮件列表). 2008-07-21. 


  82. ^ Greg Kroah-Hartman. Re: 2.6.27 maintenance plans after 2.6.32 is released. linux-kernel (邮件列表). 2009-09-08. 


  83. ^ Greg Kroah-Hartman. Linux 2.6.32.71. linux-kernel (邮件列表). 2015-09-18. 


  84. ^ http://kernel.org/


  85. ^ Linux 3.0-rc1, Linus Torvalds, 30 May 2011, accessed 31 May 2011


  86. ^ Torvalds, Linus. Linux 3.9 released. Linux kernel mailing list. 28 May 2013 [12 May 2013]. 


  87. ^ Kroah-Hartman, Greg. 4.1 is now maintained by Sasha Levin. LKML (邮件列表). 31 January 2016 [22 February 2016]. 


  88. ^ Kroah-Hartman, Greg. 4.1 is a longterm kernel. LKML (邮件列表). 23 September 2015 [27 September 2015]. 


  89. ^ Kernel documentation with Sphinx, part 1: how we got here


  90. ^ Reinventing the timer wheel


  91. ^ Early packet drop — and more — with BPF


  92. ^ Kernel building with GCC plugins


  93. ^ Hardened usercopy


  94. ^ Some new stable kernels now released, most importantly, 4.12.y is now end-of-.... [2017-11-28] (中文). 


  95. ^ LKML: Linus Torvalds: Linux 4.16. lkml.org. [2018-04-04]. 


  96. ^ Linux Kernel 4.17 发布,修复最新 Spectre 漏洞变种 - 开源中国. www.oschina.net. [2018-11-03]. 


  97. ^ Linux Kernel 4.18 正式发布,新增许多实用功能 - 开源中国. www.oschina.net. [2018-11-03]. 


  98. ^ Linux Kernel 4.19 LTS 正式发布! - 开源中国. www.oschina.net. [2018-11-03]. 


  99. ^ Torvalds, Linus. Linux 4.20 released... LKML (邮件列表). 23 December 2018 [24 December 2018]. 


  100. ^ Linux Kernel Archives - Volume 1 Archive.is的存檔,存档日期2005-05-11(Riley Williams)


  101. ^ Index of /pub/linux/kernel. Kernel.org. [2012-03-12]. 


  102. ^ 102.0102.1 Yamagata, Hiroo. The Pragmatist of Free Software. HotWired. 3 August 1997 [21 February 2007]. (原始内容存档于10 February 2007). 


  103. ^ Corbet, Jonathan. GPLv3 and the kernel. LWN.net. 31 January 2006 [21 February 2007]. 


  104. ^ Torvalds, Linus. Linux-2.4.0-test8. LKML (邮件列表). 8 September 2000 [21 February 2007]. 


  105. ^ gnu.org. www.gnu.org. [2017-10-18] (英语). 


  106. ^ Cox, Alan. Re: GPL V3 and Linux. LKML (邮件列表). 20 January 2006 [21 February 2007]. 


  107. ^ Shankland, Stephen. Top Linux programmers pan GPL 3. News.com. CNET. 25 September 2006 [21 February 2007]. 


  108. ^ 108.0108.1 James E.J. Bottomley, Mauro Carvalho Chehab, Thomas Gleixner, Christoph Hellwig, Dave Jones, Greg Kroah-Hartman, Tony Luck, Andrew Morton, Trond Myklebust, David Woodhouse. Kernel developers' position on GPLv3: The Dangers and Problems with GPLv3. LWN.net. 15 September 2006 [11 March 2015]. The current version (Discussion Draft 2) of GPLv3 on first reading fails the necessity test of section 1 on the grounds that there's no substantial and identified problem with GPLv2 that it is trying to solve. However, a deeper reading reveals several other problems with the current FSF draft: 5.1 DRM Clauses [...] 5.2 Additional Restrictions Clause [...] 5.3 Patents Provisions [...] since the FSF is proposing to shift all of its projects to GPLv3 and apply pressure to every other GPL licensed project to move, we foresee the release of GPLv3 portends the Balkanisation of the entire Open Source Universe upon which we rely. 


  109. ^ Petreley, Nicholas. A fight against evil or a fight for attention?. linuxjournal.com. 27 September 2006 [11 March 2015]. Second, the war between Linus Torvalds and other Kernel developers and the Free Software Foundation over GPLv3 is continuing, with Torvalds saying he's fed up with the FSF. 


  110. ^ Linus Torvalds says GPL v3 violates everything that GPLv2 stood for Debconf 2014, Portland, Oregon (accessed 11 March 2015)


  111. ^ http://www.gnu.org/philosophy/linux-gnu-freedom.html


  112. ^ 存档副本. [2006-11-25]. (原始内容存档于2006-09-27). 




外部連結












  • (英文)Linux内核官方下载中心


  • (英文)日渐膨胀的Linux邮件列表内容摘要


  • (英文)林納斯與塔能包姆爭論微核心的筆仗


  • (英文)Greg Kroah Hartman on the Linux Kernel at youtube


  • (中文)如何查看Linux内核版本信息




参见




  • Linux

  • 林納斯·托瓦茲

  • 操作系统内核的比较英语Comparison of operating system kernels





Popular posts from this blog

GameSpot

connect to host localhost port 22: Connection refused

Getting a Wifi WPA2 wifi connection