5月22日,Linux內核迎來了版本更新,5.18版本已經可以下載,23日5.19版本開放了合併窗口。此次5.18版本中一個更新之前就引起過人們的討論:英特爾的軟件定義芯片(SDSI)機制的驅動程序包含在了內核之中,它擁有許多功能,簡單點說就是可以限制用戶對於處理器某些功能的使用——在用戶付費之前。雖然在技術上它與其他驅動程序沒有什麼不一樣,但是英特爾並沒有說明他們的目的,大家對此表示不理解並隱有擔憂。
▲今年2月在5.18版本合併窗口看到這些信息的時候
人們就對此表示非常不理解
在5.19版本合併信息中,關於顯示/圖形驅動更新內容增加了近50萬行代碼(新增495,793行),其中大多是AMD提供的。這樣看來,如果最終合併到5.19版本中,AMDGPU/AMDKFD內核驅動代碼將突破400萬行!
當然,這些數字並不是什麼有特殊用處的指標,而是讓我們可以思考一些問題:Linux這個全球都在用的操作系統是如何成長到今天的?它是如何發展的?作為一個開源項目它那3000萬行核心代碼都是哪兒來的?
Linus和Linux
所有的這一切都要從林納斯·托瓦茲(Linus Torvalds)說起,是他創造了最初的Linux。
「只要有台電腦,這孩子就不用管了」
林納斯是芬蘭人,1969年出生於赫爾辛基市。他的家庭條件很好,父母祖父都是記者,外祖父是芬蘭第一批統計學教授。很小的時候他就喜歡電腦,最開始是在外祖父的指導下使用BASIC語言編寫一些小程序,後來自己便沉迷其中,開始獨自鼓搗計算機。
就如他在自傳中寫的一樣:
媽媽對她的一些朋友們說,我是個非常好養的孩子。她只要把我放在一個黑咕隆咚的儲藏櫃里,再配上一台電腦,偶爾朝里扔一些意大利麵條,我就會感到格外高興了。她的話不無道理。
媽媽對她的一些朋友們說,我是個非常好養的孩子。她只要把我放在一個黑咕隆咚的儲藏櫃里,再配上一台電腦,偶爾朝里扔一些意大利麵條,我就會感到格外高興了。她的話不無道理。
進入大學開始計算機專業學習後,他有了自己的電腦,不過卻沒有一個好用的操作系統——當時主流的Unix實在太貴,大多發行版也都是閉源不好用。大學期間他去服了兵役,被分到計算機部門。後來,他買到一本安德魯·斯圖爾特·特南鮑姆寫的教科書和對應的Minix操作系統源碼,一下子便愛上了它,沒日沒夜地抱着那本書。
「當時我的生活只有編程」
回到學校之後,林納斯開始編寫自己的操作系統。他認為對於所有程序員來說,編程是世界上最有趣的事,只要制定了規則,就會得到與之相符的結果。
在寫那個操作系統期間,他幾乎沒有任何社交,生活中的全部就是寫代碼。在回憶當時的情形時,他是這樣說的:
這花費了我大量的精力:編程――睡覺――編程――睡覺――編程――吃飯(餅乾)――編程――睡覺――編程――洗澡(沖沖了事)――編程。
從小積累起來對計算機的興趣,驅使着他把大部分時間投入到編程之中,投入到開發這個操作系統之中。
1991年8月25日,林納斯看着這個雛形初現的操作系統,在Minix社區——就是他買的那本操作系統開發教科書使用的Minix操作系統討論社區——上發佈了一個帖子,講述自己的想法和現在在做的事情,是想做一個完全開源的項目。
▲當時林納斯發佈的帖子網絡檔案
Linux誕生!
Minix社區中很多人都喜歡Minix操作系統,但是它專門為了教學,而且作者拒絕添加新的代碼。所以當林納斯把自己的想法和進展在論壇上發出來之後,很快引起了很多人的興趣,他們也參與到這個項目當中,貢獻自己的代碼和想法。
為了可以讓社區成員下載和使用源碼,在同年9月,林納斯把代碼傳到了芬蘭大學和研究網絡(FUNET)的FTP服務器上,發佈了Linux內核版本0.01——最開始它的名字並不叫Linux,是服務器管理員給的建議。
Linux誕生!這個版本的Linux內核代碼總共只有10239行。
當然,在當時這並不是一個真正的操作系統,它只是一個內核。大多數人——包括林納斯——他們都期待GNU項目。
Linux操作系統與Linux內核
GNU是一個偉大的項目,他們當時設想做一系列完全自由的軟件和操作系統,並且完成了大部分操作系統所需的組件,並在努力開發其內核GNU Hurd。
只不過,可能是因為他們對於這個系統的定位過高或者其他原因,內核的開發一直遇到阻礙,遲遲無法推進,導致操作系統無法使用。
所以Linux得到了很大的發展空間,獲得了大量的開發人員和用戶。
Linux的開源
如林納斯在最開始帖子里講的那樣,他的目的就是開發一個自由的項目,所以把源碼公開給所有開發者,讓他們可以參與其中。
隨着更多的開發者參與進來,Linux得到了迅速的發展,無數代碼從世界各地傳到林納斯手裡,然後被選擇合併到內核代碼中。
最開始,Linux使用的是林納斯他們自行起草的開源許可證,在這個許可證下不允許他人對Linux進行商業再分發操作。到1992年的0.12版本時,他採用了GNU通用公共許可證(GPL)。
採用GPL之後,更多的企業和機構看到了Linux的潛力,看到了Unix操作系統的替代品影子,他們也加入進來幫助開發Linux內核,貢獻自己的代碼。
GNU/Linux操作系統
Linux內核的合作開發模式與林納斯的開源思想,讓Linux得到了難以想像的成功。
這與GNU項目理念不謀而合。GNU開始支持Linux,經過無數開發者的努力,Linux內核完美地與GNU已經做好的其他應用與組件融合,成為了真正的操作系統——GNU/Linux操作系統。
我們今天所說的Linux系統,其實指的就是GNU/Linux操作系統。在這套操作系統中,每一個具體的實現都是由相同或不同的開發者負責,比如最開始的內核是由林納斯編寫;Donald Knuth則負責文本排版軟件(TeX);窗口系統(X Window系統)是Bob Scheifler開發的等等。
它們整個一起,才叫做操作系統。
Linux是內核:它為計算機運行的其他程序分配計算資源和程序,是操作系統的基本部分,自己不會直接發揮作用——於用戶而言。它只能在完整的操作系統框架下才能發揮作用。
Linux系統與Linux內核
儘管不少人知道Linux是一個內核而不是操作系統,大多數時候還會把整個系統叫做「Linux」——包括大多數程序員也是這樣說的。
這一切的來源都是林納斯設計編寫了最初的Linux,並且把它完全公開,讓全世界的開發者能夠共同參與並將它發展成今天無比成功的樣子——幾乎所有服務器都使用的是GNU/Linux系統。
開放源代碼促進會首屆主席雷蒙德曾開玩笑說:「很有趣的是,如果你發自內心的謙遜,並承認你欠別人很多,你將很快發現世界會這樣對你:他們認為是你發明了整個軟件,而且你對自己的天賦有着得體的謙虛。我們可以看到這一點在林納斯身上體現得有多好!」
很多人以為Linux是林納斯以一人之力開發出來的,大概也是因為這種想法。
讀完碩士之後,林納斯進入了全美達公司工作,直到2003年離開——離開是為了專心Linux內核的發展。他加入開源碼發展實驗室(OSDL),擔任Linux內核的主要維護者。兩年後,因為一些事情,林納斯在十天之內發明了現在幾乎所有程序員都在用的git作為Linux內核的版本管理工具,則又是另一個故事了。
相比最開始的開發者直接發郵件給林納斯,現在整個Linux內核的開發變得規範與流暢。Linux內核各部分有專門的維護人員,當他們收到修改代碼後會進行審查。如果這些修改足夠重要,那麼包含這些信息的拉取請求將到幾天內發給林納斯。如果不是那麼重要,將會在下一個合併窗口時向林納斯發送拉取請求——比如現在內核5.18版本發佈了,5.19版本的拉取窗口開啟,持續兩周左右。
現在,Linux內核已經擁有了近3000萬行代碼,這些貢獻來自全世界無數自由開發者,還有英特爾、紅帽、三星、IBM等大企業。
如今大部分時候說Linux——如果沒有特別指明Linux內核,則指的是包含Linux內核的操作系統,它們有着各種各樣的GNU/Linux版本,稱之為發行版。關於Linux的操作、運維、開發等內容,也都不是指Linux內核層面。
經過30年的發展,Linux已經成為互聯網中不可缺失的角色。不僅是專門的Linux開發運維,日常的學習與開發都不可避免地要接觸Linux,對Linux知識有着不同層次的需求。
小異今天就帶來五本好書,滿足大家對於Linux學習的不同需求,讓大家不管是專門做Linux開發,還是單純想要學會Linux使用都可以即學即會!
即學即會,Linux也能得心應手
從零開始學Linux,無數人會選擇「鳥哥的Linux私房菜」系列。
《鳥哥的Linux私房菜 基礎學習篇 第四版》
▲ 經典入門,點擊進入Linux世界
這本書非常經典,也非常基礎。最開始是作者自己從零摸索開始學習Linux的經驗,為了幫助更多的人學習Linux知識,他將那些內容整理成書。正因如此,書中的內容安排是一個循序漸進的過程,慢慢地帶着讀者認識和進入Linux世界。
本書還有一個很大的特色,在講解一些專業概念的時候,作者使用了非常口語化的表述,這讓讀者可以更容易地理解與接收。有些圖書過於專業和書面的描述在閱讀的時候可能會消磨掉一些耐心,影響學習效率。
作為基礎篇,本書不僅僅適合完全零基礎的入門,也適合有一定基礎的從業人員閱讀——因為本書對於概念的講解非常細緻,深入淺出,對於功能和命令的介紹都搭配了大量的實際操作和詳盡的解析。
對於初學者,這些內容是一個非常好的入門老師,面面俱到,簡單易懂;對於有基礎的人來說,這本書也可以是非常好的百科全書,內容覆蓋全面,講解詳細。
《Linux就該這麼學》
▲ 致敬開源,和劉老師一起學Linux
作為Linux入門好書,這本《Linux就該這麼學》的編寫就耗時超過3年,數十萬讀者與30多家媒體對本書的內容與品質進行了認證。
本書作者劉遄是Linux基金會成員,是國內較早一批擁有紅帽認證的Linux講師。多年以來,他一直從事Linux運維技術和紅帽認證課程的培訓工作,具備非常豐富和專業的Linux知識及其教學經驗。
所以本書真正從新手角度思考並指引Linux入門,對初學者極其友好。所有內容都是基於最新版的Linux系統編寫,可以用來自學RHEL、CentOS、Ubuntu等主流系統。同時,本書作者極具開源精神,隨書配套站點免費提供了Linux學習所需要的成套工具和服務!在線閱讀、軟件工具、進階資料等應有盡有!
不怕學不會,只怕你不去學!每天只需1小時,連續30天,一邊看書一邊實踐操作,你就會發現自己已經掌握了Linux操作系統。
《UNIX/Linux 系統管理技術手冊(第5版)》
▲ 使用最新的Linux系統,全方位了解UNIX/Linux
豆瓣評分9.1的經典技術手冊!在前面的幾版基礎上更新了使用的案例,以當前主流的5種Linux發行版為例,從單機Linux各種管理知識和技術、網絡、X窗口系統和打印系統等不容忽視的重要主題三個方面入手,全方位地講解UNIX/Linux知識。
作為一本技術手冊,本書中對比了Linux和UNIX各個版本的區別與細節,為讀者勾勒出了兩個系統的整體架構,包羅萬象。作者對於每個知識點,都盡量從概念入手,然後到基礎用法。而且三位作者都是經驗豐富的計算機專家,具備非常豐富的使用和開發經驗,他們把這些經驗融合到書中,對於實際操作具有非常好的指導作用。
在技術之外,作者使用幽默的語言講了許多UNIX/Linux發展過程中一些有趣的事情與八卦,還有它們的哲學思想。總之,本書是一本非常全面的UNIX/Linux系統知識學習的手冊。
林納斯推薦的好書,不可錯過!
《Linux 高級程序設計(第三版)》
▲ 全方位地幫助讀者掌握Linux程序設計技巧
本書具備非常全面的基礎知識,旨在幫助讀者完成Linux系統下內存、CPU、磁盤、網絡及音頻設備的訪問及管理知識掌握。
使用的開發工具,是GCC 4.0/GDB 6.3,詳細介紹了Linux系統下編程環境及編程工具、文件管理、進程管理、屬性控制以及網絡基本編程、高級應用等內容。
本書以案例為指導,讓讀者可以針對每一個知識點使用書中的應用案例進行實例編程演練,真正掌握Linux系統程序設計。
《Linux命令行大全 第2版》
▲ 認識和了解每一個常用的命令行
看到這本書的名字,大家可能有些納悶:一本命令行大全有什麼好推薦的?隨便搜索一下就好多。這可是個大誤會!這本書當然不是簡單地展示一些命令行!它是從命令行入手,全方位地解析Linux命令。
幾乎所有的程序員都繞不開Shell的操作,本書就從Shell基本用法開始,循序漸進地講述如何配置文件、常見任務與必備工具,最後開始自己編寫Shell腳本。對於這個過程中使用的每一條命令行,作者都進行了清晰詳細的講解,什麼是相對路徑、什麼是絕對路徑這種基礎問題也都講得清楚而不顯累贅。
通過閱讀本書,讀者能夠對Linux命令有更深的理解,並且可以在實際工作與學習中自如地使用。所以本書適合那些想要快速掌握Linux命令及使用的讀者;對於知道使用命令但是並不清楚其中原理的讀者,本書也是極好的參考。
不管是工作使用,還是日常學習,本書都可以在Linux命令上幫上大忙!不知道命令怎麼用?不知道這條命令的原理?翻開書,你就知道了。
結語
我們可以發現,使用GNU/Linux是非常複雜的系統,同樣的它也為編程開發提供了無限的可能!所以在學習和使用的時候,需要明確自己的需求,知道自己是要掌握什麼內容。
是只要會操作就行了?興趣使然?還是需要在Linux環境下做開發?是要做服務器運維?只有真正知道了自己為什麼去學,才可以知道怎麼去學,然後從上面的書中選擇適合自己的一本,挑選其中合適的內容進行學習。
文章編輯:沙魚 審校:桐希
參考來源:
[1] Linux Kernel 5.18 Released, This is What's New - OMG! Ubuntu!..
[2] LKML: Linus Torvalds: Linux 5.18..
[3] Linus Torvalds - Wikipedia..
[4]just-for-fun-linus-torvalds. Github.
[5] Thoughts on software-defined silicon[LWN.net]..