Linux内核

维基百科,自由的百科全书
(重定向自Linux內核
跳转到: 导航, 搜索
跳过字词转换说明
Linux
Tux
開發者 林納斯·托瓦茲(創造者)與其他人
穩定版本

Kernel: v3.2

/2012年1月4日;57天前 (2012-01-04)[1][2] [+/−]
預覽版本

Kernel: 3.2-rc7

/2011年12月24日;2個月前 (2011-12-24)[3][4] [+/−]
程式語言 C
類型 核心
許可協議 GNU通用公共许可证
網站 Linux官方網站

Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客林納斯·托瓦茲(Linus B. Torvalds)为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,林納斯·托瓦茲当时在Usenet新闻组comp.os.minix登载帖子[5],这份著名的帖子標示着Linux计划的正式开始。

在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。

技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux

目录

[编辑] 架构

Linux内核的简化矩阵图示

Linux是一个宏内核(monolithic kernel)系统。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。

[编辑] 塔能鮑姆-林納斯辯論

Linux不是微内核(microkernel)架构的事实曾经引起了林納斯·托瓦茲与安德鲁·斯图尔特·塔能鲍姆(‎ Andy Tanenbaum)之间一场著名的争论。

[编辑] 編寫語言

Linux是用C語言中的GCC版(這種C語言有對標準C進行擴展)寫的,還有幾個用組合語言(用的是GCC的"AT&T 風格")寫的目標構架短段。 因為要支持擴展的C語言,GCC在很長的時間里是唯一一个能正确编译Linux的编译器。在2004年,Intel主张通过修改内核,以便它的编译器能正确编译内核。[6]在2009年,有通过修改内核2.6.22版而成功编译的报告(並帶來平均8-9%效能增長)。[7][8] 有許多其他的語言用在一些方面上,主要集中在內核構建過程中(這裡指從源代碼創建可啟動鏡像)。包括Perl,Python,和多種腳本語言。有一些驅動可能是用C++,Fortran,或其他語言寫的,但是這樣是強烈不建議的。 Linux的官方構建系統僅僅支持GCC作為其內核和驅動的編譯器。

[编辑] 可移植性

尽管林納斯·托瓦茲的初衷不是使Linux成为一个可移植的操作系统,今天的Linux却是全球被最广泛移植的操作系统内核。從行動電話到超級電腦,甚至於有人成功的將Linux内核在索尼出品的遊戲機PS2PS3微軟出品的遊戲機Xbox上使用。Linux也是IBM超级计算机Blue Gene的操作系统。直至2010年11月,全球前五百大超級電腦(TOP 500)有高達91.8%的比例採用Linux為它們的作業系統[9]。截至2010年11月,TOP 500中最快的超級電腦天河一號[10]正是採用Linux的。

iPodLinux 啟動 Linux

Linux目前可以在以下结构上运行:

[编辑] 法律層面

[编辑] 专利权

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

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

[编辑] 韌體爭議

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

[编辑] GPL第三版

目前Linux使用的版本為GPL 2,而目前存在一些爭議,討論如何讓Linux較容易地轉成使用後繼版本的GPL,例如第三版(無論是否真的會這樣做)[14]。Torvalds本人認為他自己寫在版本2.4.0的程式碼僅使用版本2的GPL[15]。然而GPL這個詞並沒有明述到底它指的是哪個版本,任何版本都有可能,而Alan Cox指出很多Linux套件有特別指出它們使用哪種版本的GPL[16]

[编辑] 載入式核心模組許可證

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

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

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

[编辑] SCO爭議

更多資料:SCO訴IBM

在2003年3月,SCO Group (SCO)對IBM提告,聲稱IBM將一些在SCO智慧財產權許可證保護下的Unix原始碼植入Linux中,破壞了SCO給予IBM的原始碼使用許可權。另外SCO也發出一大堆存證函給許多公司,警告他們在沒有SCO許可權的情況下使用了Linux,此舉可能導致侵犯智慧財產權,並且以起訴為手段對個別使用者施壓。SCO也同時對Novell戴姆勒克萊斯勒(DaimlerChrysler)(在2004年7月被部份駁回)以及AutoZone提出告訴,且被Red Hat與其他反對SCO論點的公司反告。

[编辑] 版本命名

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。[18]

从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是安全补丁

[编辑] 發佈歷史

  • 1991年9月:0.01(10,239字串)
  • 1991年10月:0.02
  • 1991年12月:0.11
  • 1992年2月:0.12
  • 1992年3月:0.95
  • 1993年至1994年:0.99
  • 1994年3月14日:1.0.0(176,250字串)
  • 1995年3月:1.2.0(310,950字串)
  • 1996年6月9日:2.0.0
  • 1999年1月25日:2.2.0(1,800,847字串)
  • 1999年12月18日:2.2.13
  • 2001年1月4日:2.4.0(3,377,902字串)
  • 2003年12月17日:2.6.0(5,929,913字串)
  • 2009年6月9日:2.6.30(11,637,173字串)
  • 2009年12月3日:2.6.32(12,606,910字串[19])
  • 2011年7月22日:3.0

[编辑] 時間線

來源: kernel.org[20]

[编辑] 維護

當前內核 當前版本 維護者 支援
2.0 2.0.40[21] David Weinehall 由於2.2.0發佈,目前已不支援
2.2 2.2.27-rc2[22] Marc-Christian Petersen (前維護者Alan Cox)
2.4 2.4.37.9[23] Willy Tarreau (前維護者Marcelo Tosatti)
2.6.16 2.6.16.62[24] Adrian Bunk
2.6.27 2.6.27.45[25] Greg Kroah-Hartman[26] "長期"穩定版本,由2008年10月9日至2010年7/9月[27]
2.6.32 2.6.32.10[28] Greg Kroah-Hartman[29] "長期"穩定版本,由2009年9月3日至2011/2012年[30]
2.6.35 2.6.35.10[31] Andi Kleen 長期支持 穩定版。 從 2010 到 20?? (將會是最後的 '長期支持 穩定版)
2.6.x 2.6.39 林納斯·托瓦茲 2.6 核心系列最後穩定版
3 3.0 林納斯·托瓦茲 (當前版本) (每三個月發佈)
linux-next next-20110811 最新的測試版本

其它Linux核心程序的維護者還包括:

[编辑] 参考文献

  1. ^ Greg Kroah-Hartman. Linux 3.1.4. 2011年11月28日 [2011年11月28日]. 
  2. ^ The Linux Kernel Archives
  3. ^ Linux 3.2-rc4. 2011年12月1日 [2011年12月2日]. 
  4. ^ The Linux Kernel Archives
  5. ^ What would you like to see most in minix?. Linus Benedict Torvalds. 1991-08-26 [2010-12-21]. 
  6. ^ Ingo A. Kubbilun. Linux kernel patch for Intel Compiler. Pyrillion.org. 2004-06-02 [2010-11-12]. 
  7. ^ Slashdot | High Performance Linux Kernel Project — LinuxDNA. Linux.slashdot.org [2010-10-30]. 
  8. ^ LinuxDNA Supercharges Linux with the Intel C/C++ Compiler. Linux Journal [2010-10-30]. 
  9. ^ Operating system Family share for 11/2010. Top 500 [2011-02-09]. 
  10. ^ TOP500 List - November 2010 (1-100). Top 500 [2011-02-09]. 
  11. ^ http://palmtelinux.sf.net
  12. ^ ELKS project
  13. ^ http://www.gnu.org/philosophy/linux-gnu-freedom.html
  14. ^ http://lwn.net/Articles/169797/
  15. ^ http://www.uwsg.iu.edu/hypermail/linux/kernel/0009.1/0096.html
  16. ^ http://lwn.net/Articles/169831/
  17. ^ http://www.ussg.iu.edu/hypermail/linux/kernel/0312.0/0670.html
  18. ^ Linux Kernel Archives - Volume 1 (Riley Williams)
  19. ^ http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-32-872271.html?view=print What's new in Linux 2.6.32
  20. ^ Index of /pub/linux/kernel. Kernel.org [2010-10-30]. 
  21. ^ David Weinehall. [ANNOUNCE] Linux-kernel 2.0.40 aka ``The Moss-covered Tortoise''. 2004-02-08. 
  22. ^ Marc-Christian Petersen. Linux 2.2.27-rc2. 2005-01-13. 
  23. ^ Willy Tarreau. Linux 2.4.37.7. linux-kernel mailing list. 2009-07-26. 
  24. ^ Adrian Bunk. Linux 2.6.16.62. linux-kernel mailing list. 2008-07-21. 
  25. ^ Greg Kroah-Hartman. Linux 2.6.27.44. linux-kernel mailing list. 2009-09-15. 
  26. ^ Greg Kroah-Hartman. Re: 2.6.27 maintenance plans after 2.6.32 is released. linux-kernel mailing list. 2009-09-08. 
  27. ^ http://lkml.indiana.edu/hypermail/linux/kernel/1001.2/00858.html
  28. ^ Greg Kroah-Hartman. Linux 2.6.32.4. linux-kernel mailing list. 2010-01-18. 
  29. ^ Greg Kroah-Hartman. Stable kernel tree status, January 18, 2010. linux-kernel mailing list. 2010-01-18. 
  30. ^ http://lkml.indiana.edu/hypermail/linux/kernel/1001.2/00858.html
  31. ^ http://kernel.org/

[编辑] 外部連結

[编辑] 参见

个人工具
名字空间
操作
导航
帮助
工具
其他语言