陳昱維/千秋
I. What's OS?
II. Story of Linus
III. Let's try!
對Linux的迷思?
-
資工肥宅才在用
-
很冷門
-
清潔劑
Q1: Android也是!
Operating System
管理電腦硬體與軟體資源的電腦程式,電腦系統的核心與基石。
系辦阿姨
To-Do list
-
管理與配置記憶體
-
決定系統資源供需的優先次序
-
控制輸入與輸出裝置
-
操作網路與管理檔案系統等基
-
與使用者互動
1946
沒錯,就是她們
IBM, 1964
OS/360
延伸閱讀:
《人月神話:軟體專案管理之道》
(The Mythical Man-Month: Essays on Software Engineering)
Multics
星際旅行 (1969年遊戲)
肯尼斯‧藍‧湯普遜 Kenneth Lane Thompson
PDP-7
不要告狀 拜託
這是我玩遊戲玩到找到工作的故事
在完成Unix系統開發的基本工作之後,湯普遜覺得Unix系統需要一個系統級的程式語言,於是創造了B語言。
第一版UNIX是用PDP-7組合語言編寫的,一些應用是由叫做B語言的直譯式和組合語言混合編寫的。
因為PDP-7的效能不佳,肯‧湯普遜與丹尼斯‧裡奇決定把第一版UNIX移植到PDP-11/20的機器上,開發第二版UNIX。
1969年
在把遊戲移植好之後,湯普遜又著手把自己的工具擴充成完備的作業系統。
肯‧湯普遜發現要編寫驅動程式來驅動檔案系統,進行測試,並不容易,於是開發了一個殼層(shell)與一些驅動程式,實現了檔案系統、行程、裝置檔案、命令列直譯器和一些小的工具程式等。做出一個作業系統的雛形。
在團隊合作下,Multics的許多功能都被採納,重新實作,最終做出了一個分時多工作業系統,1970年,在布萊恩‧柯林漢的建議下,這個系統命名為「Unix」。
在進行系統編程時不夠強大,所以湯普遜和裡奇對其進行了改造,並於1971年共同發明了C語言。
1973年湯普遜和裡奇用C語言重寫了Unix,形成第三版UNIX。
Best self documenting program (2011/hou/hou.c)
1974年,湯普遜和裡奇合作在ACM通訊上發表了一篇關於UNIX的文章,這是UNIX第一次出現在貝爾實驗室以外。此後UNIX被政府機關,研究機構,企業和大學注意到,並逐漸流行開來。
1975年,UNIX發佈了4、5、6三個版本。
1978年,已經有大約600台電腦在執行UNIX。
1979年,版本7發佈,這是最後一個廣泛發佈的研究型UNIX版本。
20世紀80年代相繼發佈的8、9、10版本只授權給了少數大學。
因為AT&T的政策改變,在Version 7 Unix推出之後,發佈新的使用授權條款,將UNIX原始碼私有化,在大學中不再能使用UNIX原始碼。
1982年,AT&T基於版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。
這個新的UNIX商業發佈版本不再包含原始碼,所以加州大學柏克萊分校繼續開發BSD UNIX,作為UNIX System III和V的替代選擇。
阿姆斯特丹自由大學
安德魯‧斯圖爾特‧塔能鮑姆(Andrew Stuart "Andy" Tanenbaum,1944年-)
MINIX
1991那年,陽光明媚的芬蘭赫爾辛基大學的校園裡,一個少年正好擁有了一台完全屬於自己的386電腦,不必再忍受學校機房漫長的等待。
但是他有了新的敵人:MS-DOS
故事先暫停一下,回到1983年...
理察‧馬修‧斯托曼
(Richard Matthew Stallman,1953-)
美國程式設計師,自由軟體活動家。
發起自由軟體運動,倡導軟體使用者能夠對軟體自由進行使用、學習、共享和修改,確保了這些軟體被稱作自由軟體。
斯托曼發起了GNU項目,並成立了自由軟體基金會。他開發了GCC、GDB、GNU Emacs,同時編寫了GNU通用公共許可協議。
是一個自由軟體集體協作計畫,1983年9月27日由李察‧斯托曼在麻省理工學院公開發起。
它的目標是建立一套完全自由的作業系統,稱為GNU。李察‧斯托曼最早在net.unix-wizards新聞群組上公佈該訊息,並附帶一份《GNU宣言》等解釋為何發起該計畫的文章,其中一個理由就是要「重現當年軟體界合作互助的團結精神」。
GNU的創始人,理察‧馬修‧斯托曼,將GNU視為「達成社會目的技術方法」
GNU Project
1985年,李察‧斯托曼創立了自由軟體基金會來為GNU計畫提供技術、法律以及財政支援。儘管GNU計畫大部分時候是由個人自願無償貢獻,但FSF有時還是會聘請程式設計師幫助編寫。當GNU計畫開始逐漸獲得成功時,一些商業公司開始介入開發和技術支援。當中最著名的就是之後被Red Hat兼併的Cygnus Solutions。
1989年,GNU計畫中的其他部份,如編輯器、編譯器、Shell等都已經完成,包括了:
- 一個功能強大的文字編輯器Emacs
- C語言編譯器GCC
- 以及大部分UNIX系統的程式庫和工具。
只有一個小問題
唯一依然沒有完成的重要元件,就是作業系統的內核
作為作業系統,GNU的發展仍未完成,其中最大的問題是具有完備功能的內核尚未被開發成功。
GNU的內核,稱為Hurd,是自由軟體基金會發展的重點,但是其發展尚未成熟。
1983年,理察‧斯托曼提出GNU計畫,根據湯瑪斯‧布希內爾的回憶,最早自由軟體基金會使用TRIX來開發作業系統。
1986年,放棄TRIX,改以輕量化後的4.4BSD為基礎進行開發。
1987年,理察‧斯托曼決定以Mach微內核進行開發,認為可以藉此加速作業系統的開發,但因為一直不確定卡內基梅隆大學何時要將核心原始碼釋出,造成計畫三年進展緩慢。他在之後承認這是個錯誤。
1990年,自由軟體基金會開始正式發展Hurd。
Minix由於過於短小精悍,只能跑在一種機器,其他機器沒有驅動。Andrew的學生就寫了好多好用驅動來擴展Minix。可是,教授Andrew卻覺得自己的操作系統要保持純潔,不能有其他的程式碼來源。於是學生們就很鬱悶,其中就有個叫Linus的同學。
聖誕節買了自己的PC的Linus,很討厭上面的MS-DOS,卻不能將Minix運行在自己的電腦上。
Linus也不得不走上了他無數前輩的道路,不讓用,不給用,那就自己寫一個操作系統來用。
回到荷蘭,1911年
林納斯‧本納第克特‧托瓦茲
Linus Benedict Torvalds
僅僅兩個月後,一個「千瘡百孔但卻正好可以使用」的硬碟驅動程式和一個小到不能再小的文件系統就誕生了。
這就是第0.01版的Linux。隨後Linus將系統上傳至FTP,並公佈了全部原始碼。
1991年,Linux內核首次釋出
早前那些GNU計畫中的軟體經過修改移植後,可以在Linux之上使用,因而很多開發者轉向Linux。
Linux成為最常見的GNU系統軟體運行平台。
「我的核心!!我的王之力!!」
GNU 核心一開始並不叫做 Hurd。它最初稱為 Alix,是以當時斯托曼的女朋友來命名,斯托曼於是決定用 Alix 命名核心給她驚喜。
之後 Stallman 跟 Alix 分手,她也改了名字。
核心主要開發者 Michael Bushnell 較喜歡 Hurd 這個名字,Alix 被改以指稱核心中攔截系統呼叫,並發送訊息至 Hurd 伺服器加以處理的部分。
恰巧的是,Hurd 設計也有所更動,C 程式庫會直接發送訊息至伺服器,使得 Alix 元件消失在設計中。
故事還沒有結束,
我還沒有死。
2005年,Hurd的開發者Neal Walfield完成了Hurd/L4基本的記憶體管理框架,Marcus Brinkmann移植了glibc的重要部分。
2006年,Coyotos開發者嘗試將Coyotos核心移植到Hurd下。
2007年,放棄了L4與Coyotos,重新著手開發基於Mach微內核的GNU Mach上。
Q:為什麼Linus一下就搞定了?大夥還在折騰Hurd那麼久?
大概是人家很屌吧
GNU/Linux命名爭議
理察‧斯托曼希望以該名稱來作為此作業系統的正式名稱。
他們認為,此作業系統,包括了GNU系統軟體套件與Linux核心,使用GNU/Linux這個名稱,可以良好概括它的主要內容。
Linus表示:
Will...
- 1992年,在GNU GPL下Linux內核被重新授權使用,產生第一個「Linux發行版本」。
- 1993年,超過100個開發者致力於Linux內核開發。在他們的努力下,內核逐漸適應GNU的環境,這個為Linux創造巨大的應用空間的廣闊環境。Slackware首次釋出。後來在同一年,Debian專案設立,現已成為最大的社群釋出專案。
- 1994年,Torvalds認為內核的所有元件已經完全成熟,他放出了Linux的1.0版本。XFree86專案組提供了一個圖形化使用者介面(GUI).同年Red Hat公司和SUSE發行他們各自的Linux 1.0分發版本。
- 1996年,Linux內核2.0版本釋出。此時內核已經支援多處理器,因而成為各大公司的絕佳選擇。
關於自由和開源軟體歷史的重要事件
1969:UNIX 的誕生
1984:AT&T 將 UNIX 商業化
1984:GNU 的誕生
1985:自由軟體基金會的建立
1991:Linux 內核的誕生
1998:Open Source Summit
置入性行銷(X
1999:Red Hat 的 IPO
2004:Ubuntu 的推出
2005:git
2008:GitHub
最多人用的發行版
最企業的回歸發行版
最好看的發行版
最優雅極簡的發行版
依賴複雜的工具來管理整個系統的結果是給終端使用者帶來惡化的體驗。
如果你嘗試隱藏系統的複雜性,於是就得到一個更加複雜的系統。
為了隱藏內部機制而設定抽象層並非良好的架構方法,而應該把內部機制設計得精良而無需隱藏。
前瞻性開發版
適合伺服器、系統管理員
Hard Core發行版
gentoo
-march=native
「學其它 Linux 版本,你就是學會該版本而已。學會 Gentoo,你就學會所有的 Linux」
超他媽脆弱Linux
「把它修補到穩定為止。」
Kali Linux
「For true hacker.」
Linux From Scratch
從原始碼開始編譯吧!
Live Demo
linux
By 陳昱維/千秋
linux
- 1,265