Linux内核
| 開發者 | 林納斯·托瓦茲(創造者)與其他人 |
|---|---|
| 穩定版本 |
Kernel: v3.2 /2012年1月4日[1][2] [+/−] |
| 預覽版本 |
Kernel: 3.2-rc7 /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是一个宏内核(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内核在索尼出品的遊戲機PS2及PS3和微軟出品的遊戲機Xbox上使用。Linux也是IBM超级计算机Blue Gene的操作系统。直至2010年11月,全球前五百大超級電腦(TOP 500)有高達91.8%的比例採用Linux為它們的作業系統[9]。截至2010年11月,TOP 500中最快的超級電腦天河一號[10]正是採用Linux的。
Linux目前可以在以下结构上运行:
- Acorn:Archimedes,A5000和RiscPC系列
- ARC International的 Argonaut RISC Core (ARC)
- ARM 系列:
- ARM v6, v7 Cortex-A 系列
- ARM7TDMI, Cortex-M&R 系列 (uCLinux)
- Acorn Archimedes 與 Risc PC 系列
- DEC StrongARM
- Marvel(Intel的前身)XScale
- Sharp Zaurus
- iPAQ
- Palm的 Tungsten Handheld[11]
- Gamepark Holdings的GP2X
- Nokia 770 Internet Tablet
- gumstix
- 運用DSLinux執行任天堂DS
- Atmel AVR32
- Axis Communications的 ETRAX CRIS
- Fujitsu FR-V
- Alpha 系列:
- Hewlett-Packard的 Integrity家族 使用Intel Itanium CPU
- Renesas Technology(日立的前身)H8 系列
- H8/300
- H8/500
- x86 系列:
- 針對8086,8088,80186,80188 與 80286 CPU 的可移植版本正在撰寫中(ELKS計劃)[12]
- 80386,80486,與 AMD、Cyrix、德州儀器 和IBM的相容CPU
- 整個 Pentium 系列
- AMD 5x86、 K5、 K6、 Athlon(所有32-bit版本)、 Duron與 Sempron
- x86-64:AMD的 64-bit 處理器架構,名為AMD64 或 EM64T (Intel), 支援 Athlon 64, Opteron 與 Intel Core 2 處理器與其他
- Cyrix 5x86, 6x86 (M1), 6x86MX 與 MediaGX (National/AMD Geode) 系列
- VIA Technologies Eden (Samuel II), VIA C3,與 VIA C7 處理器
- 經由Xbox Linux 計劃,Microsoft的 Xbox(Pentium III 處理器)
- SGI Visual Workstation(Pentium II/III 處理器 搭配SGI 晶片組)
- 升阳 x86 工作站(80386 與 80486)
- MIPS 架構:
- Jazz
- Cobalt Qube, Cobalt RaQ
- DECstation
- Godson(類MIPS), Godson II,及 BLX IC Design Ltd(中華人民共和國)的 Godson IIE
- 藉由PS2 Linux計劃,成功移植到一些PlayStation 2模組上
- Power Architecture:
- IBM 伺服器
- PowerPC 系列:
- IBM的 CELL
- 大部份的新型蘋果電腦(所有PCI基準的Power Macintosh,對較舊的NuBus Power Macs提供有限支援)
- Power Computing, UMAX 與 Motorola製作的PCI Power Mac 的克隆品
- 以"Power-UP"卡升級的Amigas(如 Blizzard 或 CyberStorm)
- 由Eyetech Group Ltd(英國)製造的AmigaOne主機板
- Soft3(義大利)製造的Samantha
- Troika的Amy'05 PowerPC主機板
- IBM RS/6000,iSeries 與 pSeries 系統
- Genesi的Pegasos I與 II
- 藉由Gamecube Linux可執行在Nintendo GameCube
- Realm Systems, Inc的BlackDog計劃
- Sony Playstation 3
- Culturecom的V-Dragon CPU
- 以Xilinx 搭配PowerPC 核心組成的Virtex II Pro Field Programmable Array(FPGA)
- SPARC:
- Sun-4 系列
- SPARCstation/SPARCserver
- Sun UltraSparc
- Sun Blade
- Sun Fire
- 由大同公司與其他公司製作的克隆品
- IBM的AS/400
[编辑] 法律層面
[编辑] 专利权
原先托瓦茲将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爭議
在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.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代表:
- A和B是无关緊要的
- 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核心程序的維護者還包括:
- Robert Love: preemptible kernel, inotify
- Ingo Molnár: x86架構, scheduler, locking
- David S. Miller: 網絡, sparc架構
- Hans Peter Anvin: x86架構, 內核加載器
[编辑] 参考文献
- ^ Greg Kroah-Hartman. Linux 3.1.4. 2011年11月28日 [2011年11月28日].
- ^ The Linux Kernel Archives
- ^ Linux 3.2-rc4. 2011年12月1日 [2011年12月2日].
- ^ The Linux Kernel Archives
- ^ What would you like to see most in minix?. Linus Benedict Torvalds. 1991-08-26 [2010-12-21].
- ^ Ingo A. Kubbilun. Linux kernel patch for Intel Compiler. Pyrillion.org. 2004-06-02 [2010-11-12].
- ^ Slashdot | High Performance Linux Kernel Project — LinuxDNA. Linux.slashdot.org [2010-10-30].
- ^ LinuxDNA Supercharges Linux with the Intel C/C++ Compiler. Linux Journal [2010-10-30].
- ^ Operating system Family share for 11/2010. Top 500 [2011-02-09].
- ^ TOP500 List - November 2010 (1-100). Top 500 [2011-02-09].
- ^ http://palmtelinux.sf.net
- ^ ELKS project
- ^ http://www.gnu.org/philosophy/linux-gnu-freedom.html
- ^ http://lwn.net/Articles/169797/
- ^ http://www.uwsg.iu.edu/hypermail/linux/kernel/0009.1/0096.html
- ^ http://lwn.net/Articles/169831/
- ^ http://www.ussg.iu.edu/hypermail/linux/kernel/0312.0/0670.html
- ^ Linux Kernel Archives - Volume 1 (Riley Williams)
- ^ 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
- ^ Index of /pub/linux/kernel. Kernel.org [2010-10-30].
- ^ David Weinehall. [ANNOUNCE] Linux-kernel 2.0.40 aka ``The Moss-covered Tortoise''. 2004-02-08.
- ^ Marc-Christian Petersen. Linux 2.2.27-rc2. 2005-01-13.
- ^ Willy Tarreau. Linux 2.4.37.7. linux-kernel mailing list. 2009-07-26.
- ^ Adrian Bunk. Linux 2.6.16.62. linux-kernel mailing list. 2008-07-21.
- ^ Greg Kroah-Hartman. Linux 2.6.27.44. linux-kernel mailing list. 2009-09-15.
- ^ Greg Kroah-Hartman. Re: 2.6.27 maintenance plans after 2.6.32 is released. linux-kernel mailing list. 2009-09-08.
- ^ http://lkml.indiana.edu/hypermail/linux/kernel/1001.2/00858.html
- ^ Greg Kroah-Hartman. Linux 2.6.32.4. linux-kernel mailing list. 2010-01-18.
- ^ Greg Kroah-Hartman. Stable kernel tree status, January 18, 2010. linux-kernel mailing list. 2010-01-18.
- ^ http://lkml.indiana.edu/hypermail/linux/kernel/1001.2/00858.html
- ^ http://kernel.org/
[编辑] 外部連結
- (英文)Linux内核官方下载中心
- (英文)日渐膨胀的Linux邮件列表内容摘要
- (英文)林納斯與塔能包姆爭論微核心的筆仗
- (英文)Greg Kroah Hartman on the Linux Kernel at youtube
[编辑] 参见