[TOC]
# 什么是linux
linux操作系統(linux),是一種計算機操作系統。linux操作系統的內核的名字也是“linux”。
linux操作系統也是自由軟件和開放源代碼發展中最著名的例子。
開始的時候,linux 只是個人狂熱愛好的一種產物。但是現在,linux 已經成為了一種受到廣泛關注和支持的一種操作系統。包括 ibm 和惠普在內的一些計算機業巨頭也開始支持 linux。很多人認為,和其他的商用 unix 系統以及微軟 windows 相比,作為自由軟件的 linux 具有低成本,安全性高,更加可信賴的優勢。
linux 內核最初只是由芬蘭人 Linus Torvalds 在赫爾辛基大學上學時出于個人愛好而編寫的。當時他覺得教學用的迷你版 UNIX 操作系統 Minix 太難用了,于是決定自己開發一個操作系統。最初的設想中,linux 是一種類似 minix 這樣的操作系統。linux 的第一個版本在1991年9月被發布在 internet 上,隨后在10月份第二個版本就發布了。
linux 的歷史是和 GNU 緊密聯系在一起的。從1983年開始的 gnu 計劃致力于開發一個自由并且完整的類 unix 操作系統,包括軟件開發工具和各種應用程序。**到1991年 linux 內核發布的時候,gnu 已經幾乎完成了除了系統內核之外的各種必備軟件的開發。在 Linus Torvalds 和其他開發人員的努力下,gnu 組件可以運行于 linux 內核之上。整個內核是基于 gnu 通用公共許可,也就是 gpl(general pubic license) 的,但是 linux 內核并不是 gnu 計劃的一部分。**
linux 的標志和吉祥物是一只名字叫做 tux 的企鵝,linux 的注冊商標是 Linus Torvalds 所有的。這是由于在1996年,一個名字叫做 william r. della croce 的律師開始向各個 linux 發布商發信,聲明他擁有 linux 商標的所有權,并且要求各個發布商支付版稅,這些發行商集體進行上訴,要求將該注冊商標重新分配給 Linus Torvalds。
``
**linux的某些版本是不需要安裝就能使用的版本,他們稱為 livecd**
> [Linux和UNIX的關系及區別(詳解版)](http://c.biancheng.net/view/707.html)
# 什么是 GNU

GNU 計劃,又稱*革奴計劃*,是由 Richard Stallman 在1983年9月27日公開發起的。它的目標是創建一套完全自由的操作系統。Richard Stallman 最早是在*net.unix-wizards*新聞組上公布該消息,并附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟件界合作互助的團結精神”。
Stallman 倡導 FSF(自由軟體基金會(Free Software Foundation)) 的宗旨,是要建立一個 自由軟件 的王國。**他所謂的 free 并不是意謂著便宜或免費,因為在 FSF 下的有些軟體還是需要付出必要的費用的。他所謂的 free 是指使用上的自由。**
**GNU 的本意代表 "Gnu's Not Unix"**;雖然如此,它卻是一個與 UNIX 完全相容的軟體系統。二者最大不同在于,GNU 是一個 free 的 軟體, UNIX 卻是一個要付費的軟體系統。stallman宣布gnu應當發音為guh-noo,與canoe發音相同,以避免與gnu(非洲牛羚,發音與new相同)這個單詞混淆。unix是一種廣泛使用的商業操作系統的名稱。
由于gnu將要實現unix系統的接口標準,因此gnu計劃可以分別開發不同的操作系統部件。
gnu計劃采用了部分當時已經可自由使用的軟件,例如tex排版系統和x window視窗系統等。不過gnu計劃也開發了大批其他的自由軟件。
為保證gnu軟件可以自由地“使用、復制、修改和發布”,所有gnu軟件都在一份在禁止其他人添加任何限制的情況下授權所有權利給任何人的協議條款,gnu通用公共許可證(gnu general public license,gpl)。這個就是被稱為**“反版權”(或稱copyleft)**的概念。
1985年Richard Stallman又創立了自由軟件基金會(Free Software Foundation, **FSF**)。
到了1990年,gnu計劃已經開發出的軟件包括了一個功能強大的文字編輯器emacs,c語言編譯器gcc,以及大部分unix系統的程序庫和工具。唯一依然沒有完成的重要組件就是操作系統的內核(稱為hurd)。
1991年linus torvalds編寫出了與unix兼容的linux操作系統內核并在gpl條款下發布。linux之后在網上廣泛流傳,許多程序員參與了開發與修改。1992年linux與其他gnu軟件結合,完全自由的操作系統正式誕生。(盡管如此gnu計劃自己的內核hurd依然在開發中,目前已經發布beta版本。)
許多unix系統上也安裝了gnu軟件,因為gnu軟件的質量比之前unix的軟件還要好。gnu工具還被廣泛地移植到windows和mac os上。
*注:以上內容來自維基百科gnu詞條(http://zh.wikipedia.org/wiki/gnu)*
## GUN/LINUX 是什么玩意兒

通過回答上面兩個問題,我們很明顯可以注意到**linux只是一個操作系統內核而已,而gnu提供了大量的自由軟件來豐富在其之上各種應用程序。**
因此,嚴格來講,linux這個詞本身只表示linux內核,但在實際上人們已經習慣了用linux來形容整個基于linux內核,并且使用gnu 工程各種工具和數據庫的操作系統。基于這些組件的linux軟件被稱為linux發行版。一般來講,一個linux發行套件包含大量的軟件,比如軟件開發工具,數據庫,web服務器(例如apache),x window,桌面環境(比如gnome和kde),辦公套件(比如openoffice.org),等等。
絕大多數基于linux內核的操作系統使用了大量的gnu軟件,包括了一個shell程序、工具、程序庫、編譯器及工具,還有許多其他程序,例如emacs。正是由于linux使用了許多gnu程序,gnu計劃的開創者richard stallman博士提議將linux操作系統改名為gnu/linux。但有些人只把操作系統叫做"linux"。
有部分linux套件,包括了debian,采用了“gnu/linux”的稱呼。但大多數商業linux套件依然將操作系統稱為linux。有些人也認為“操作系統”一詞指的應該只是系統的內核,其他程序都只能算是應用軟件,這么一來,該操作系統的內核應叫linux,而linux套件是在linux內核的基礎上加入各種gnu工具。
一些人拒絕使用“gnu/linux”作為操作系統名稱的人認為:
1. linux 朗朗上口;名字較短又好記;
2. richard stallman 博士直到1990年代中期,linux 開始流行后才要求更名。
## 結語
我相信,堅持看完這些枯澀文字的讀者一定明白了我需要探討的問題,我們常說的 linux,準確地來講,應該是叫“gnu/linux”。雖然,我們沒有為 gnu 和 linux 的開發做出什么貢獻,但是我們可以為 gnu 和 linux 的宣傳和應用做出微薄的努力,至少我們能夠準確地去向其他人解釋清楚 gnu、linux 以及 gnu/linux 之間的區別。讓我們一起為 gnu/linux 的推廣貢獻出自己的力量!
---
# Linux 和 GNU 工程
[Richard Stallman](http://www.stallman.org/)
> 理查德·馬修·斯托曼(Richard Matthew Stallman, RMS,生于1953年),自由軟件運動的精神領袖、GNU計劃以及自由軟件基金會(Free Software Foundation)的創立者、著名黑客。他的主要成就包括 Emacs 及后來的GNU Emacs,GNU C 編譯器及GNU 調試器。 他所寫作的GNU通用公共許可證(GNU GPL)是世上最廣為采用的自由軟件許可證,為copyleft觀念開拓出一條嶄新的道路。
每天都有許多計算機用戶使用一個被改動過的[GNU 系統 (18k 字節)](https://www.gnu.org/philosophy/categories.html#TheGNUsystem),但是他們并沒有意識到它。 經過一系列的事件,現在被廣泛使用的 GNU 版本則經常被稱作“Linux”,可是許多用戶并不了解與之相關的 [GNU 工程](https://www.gnu.org/gnu/gnu-history.html)。
Linux 確實存在;它是一個內核,許多人都在使用它。但是你不能僅使用內核本身。內核只有作為整個系統的一個部分才有用處。Linux 是和 GNU 操作系統結合在一起使用:系統本身是 GNU 與 Linux 作為內核一起工作的。
許多用戶沒有并不完全了解 Linux 內核和被稱作“Linux”的整個系統的區別。而不加區別地使用這個名字并不能對理解有幫助。
程序員一般都知道 Linux 是一個內核。但是因為他們也聽到整個系統被稱作“Linux”,他們會根據名字去想象歷史。比如,很多人認為當 Linus Torvalds 完成了內核后,他的朋友四處尋找其他的自由軟件,而且所有的可以被組裝成一個類似 Unix 系統的程序都是現成的。
他們的發現不是巧合 -- 這就是 GNU 系統。 可用的[自由軟件](https://www.gnu.org/philosophy/free-sw.html)加在一起就組成了一個完整的系統,這是由于自 1984 年就開始的 GNU 工程一直在為此努力。[GNU 宣言(31k 字節)](https://www.gnu.org/gnu/manifesto.html) 早已設立了開發一個類似 Unix 的自由系統的目標,稱作 GNU。GNU 工程的最初公告 也勾畫了 GNU 系統的原始提綱。在 Linux 被編寫時,這個系統幾乎已經完成。
大多數自由軟件的工程都是為了特定的工作開發特定的程序。比方說,Linus Torvalds 編寫類似 Unix 的內核(Linux);Donald Knuth 編寫一個文本格式化工具(TeX);Bob Scheifler 開發一個窗口系統(X Window System)。對于這項工程編寫的程序都作出了貢獻,對這些貢獻進行評估是很自然的。
如果以這種方法來衡量對 GNU 工程的貢獻,我們會得出什么結論?一個 CD-ROM的提供商發現在他們的“Linux 發行版”中,[GNU 軟件](https://www.gnu.org/philosophy/categories.html#GNUsoftware) 占最大的比重,大約占全部源代碼的 28% ,而且這還包括一些關鍵的部件,沒有這些部件,系統就無法工作。Linux 本身占大約 3%。所以如果你要根據程序的作者來選擇一個名字的話,最合適的選擇是“GNU”。
但是我們不認為這是一個解決問題的適當方法。GNU 工程以前不是,現在也不是一個開發某個軟件包的工程。它不是一個 開發 C 編譯器的工程, 盡管我們做了。它也不是一個開發一個文本編輯器的工程,盡管我們也做了。GNU 工程的目標是開發一個完全自由的類似 Unix 的系統: GNU。
許多人已經為系統中的自由軟件作出了重大貢獻,他們都應該獲得榮譽。**但 GNU 是一個系統而不是一些實用程序的組合的原因是,GNU 工程的最初目標就是做一個完整系統。**我們曾經為完成一個完整的系統做了一個所需程序清單,而且我們有系統地尋找,編寫這些程序,并且尋找別人編寫清單上的每一個程序。我們編寫了關鍵的但是十分枯燥的主要部件,比如匯編語言和連接器,因為這是系統所必需的。除了編程工具,一個完整的系統還需要更多的東西, Bourne Again SHell 程序, PostScript 解釋器 Ghostscript, 和 [GNU C 庫](https://www.gnu.org/software/libc/libc.html) 同樣是很重要的。
到了 90 年代初期,我們曾經把除了內核以外的東西放到一起組成了一個系統(我們同時也在做內核的工作)稱為 GNU Hurd, 運行在 Mach 上)。開發這個內核比我們想象的要難得多,我們現在仍然在 [為此工作](https://www.gnu.org/software/hurd/hurd-and-linux.html)。
慶幸的是,你不必再等了,因為 Linux 開發成功。當 Linus Torvalds 寫成了 Linux,他填補了一個重要的空白。人們可以將 Linux 和 GNU 系統組成一個完整的自由系統:基于 Linux 的 GNU 系統(或簡稱為 GNU/Linux 系統)。
把它們組合到一起聽起來很容易,但是這并不是一個簡單的工作。 GNU C 庫 (簡稱 glibc) 需要作大量的修改。集成到一個完整的發行系統中也是一項很大的工作。它需要對如何安裝和啟動系統進行定位 -- 這個問題直到現在還在完善,因為我們還沒有抓住要點。那些開發了不同的發行系統的人們作出了巨大貢獻。
除了 GNU,還有一個獨立進行的工程開發了一個自由的類似 Unix 的操作系統。這個系統被稱為 [BSD](https://www.gnu.org/links/links.html#OtherFreeSoftware),它是由 UC Berkeley 開發的。 在 GNU 工程的鼓舞下,BSD 的開發者開始進行他們自己的自由軟件的開發工作,并時常受到 GNU 人士的鼓勵,但是他們的實際工作與 GNU 差別不大。今天 BSD 系統采用一些 GNU 軟件,就象不同版本的 GNU 系統也采用 BSD 的軟件一樣。總的說來,它們是兩套獨立開發的不同的系統。今天一個免費的操作系統幾乎都是采用 GNU 或 BSD 系統的一個派生版本。
GNU 工程支持 GNU/Linux 系統,就象支持 GNU 系統一樣 -- 包括資金的支持。我們為重寫與 Linux 相關的 GNU C 庫提供資金,以至于它們現在可以很好地集成在一起,直到最新版本的 GNU/Linux 仍在使用這個庫而無需修改。我們也為早期 Debian GNU/Linux 的開發提供資金。
今天我們的絕大多數的工作都在基于 Linux 的 GNU 系統上完成,我們希望你也如此。但是請不要含糊地使用 Linux 而使公眾迷惑。Linux 是內核,系統的關鍵部件之一。系統或多或少實際上都應該是 GNU 系統,再加上 Linux。當你在討論到這個組合系統時,請使用 “GNU/Linux”。
如果要為 GNU/Linux 作鏈接,本頁和 http://www.gnu.org/gnu/the-gnu-project.html 都是很好的選擇。如果你想為 Linux(內核)作鏈接,http://www.kernel.org/是一個很好 URL。
-------
# 滾動發行(Rolling Release)
國內常說的發行版概念正確的說是“分發版”(Distribution),包含了滾動升級版(Rolling release)和發行版(release)。
滾動升級版,理論上會設置兩個更新源,一個測試testing,一個穩定stable。
testing 用來測試新的軟件和升級過的軟件能否與原有系統兼容或編譯無錯;
stable用來給正常人用,當然它的 stable 甚至比有些發行版的 testing 都要新,除非是這個軟件久久不更新,其他發行版慢慢趕上來了。沒有版本號錨定,理論上發行版的維護者要隨時隨地保持 stable 源穩定。對于這類發行版是沒有傳統的維護這一概念的,所有操作都叫更新。
當前采用滾動發布方式 (Rolling Release)的比較知名的 Linux 發行版有 **Archlinux**,**Gentoo** 及 **PCLinuxOS** 等等,這種發行方式的好處在于沒有跨版本升級的概念,通過更新,任何時期的系統都可以平滑更新到最新版。
網友1答:
自從用上Gentoo,就沒有再重新裝過系統了。時間最長的一臺電腦從2010年到現在,連續平穩運行,換過硬盤、從mdraid變到lvm,做過bcache,但從來沒有重新安裝過系統。這就是可以一切從頭編譯、可以迭代bootstrap的優勢。這是我的主力開發機之一,是折騰比較狠的,但得益于我自己的良好習慣以及sandbox,確實沒出過解決不了的問題。而我們實驗室的服務器上部分也運行Gentoo,但由于服務器平時很少追新,秉持的是夠用就好的原則,所以Gentoo穩定運行并沒什么說服力。*呵呵,不過有一臺服務器是Ubuntu Server LTS,運行了幾年之后也必須要對發行版升級了,否則大多數軟件已經無法更新。但升級又會導致大量的用戶自行安裝的軟件出現動態鏈接庫的問題,所以這臺服務器的處境目前比較尷尬*。
網友2答:
我也是小白,我的理解是這樣的……
升級系統和軟件的時候不受具體的版本限制。
比如某一款軟件叫做“XXX”,在Ubuntu里面,更新可能是從XXX 1.0 到 XXX 1.6。如果想升級到XXX 2,那就需要安裝下一個版本的Ubuntu系統。Ubuntu系統本身也都帶版本號,比如14.04什么的……
而在Arch里面,沒有這些版本號的限制,可以從10年前的Arch滾動到最新版本的Arch,軟件也都是……
滾動更新之前,最好看一下本次滾動更新的具體內容以及可能導致的滾掛問題。
你可以監控滾動更新的過程,如果某次的滾動更新導致一些軟件無法正常使用(也就是通常意義的“滾掛”),那么你可以回滾更新,但是如果滾掛某些重要的軟件包,比如x window system,grub,gnome等桌面套件,那么你只能重裝了。
*怎么設置特定的包不會更新?
`pacman.conf`的`IgnorePackage`項*
# 參考
[陸偉峰:論GNU、Linux和GNU/Linux之間的關系](http://os.51cto.com/art/200608/30399.htm)
[GNU官網-Linux 和 GNU 工程](https://www.gnu.org/gnu/linux-and-gnu.zh-cn.html)
[王垠:完全用GNU/Linux工作](http://www.zhaoniupai.com/archives/247.html)
[百度百科-Linux](http://baike.baidu.com/item/linux)
[世紀大爭論:Linux還是GNU/Linux?](http://www.geekfan.net/4221/)