來源:馬哥教育node
連接:https://mp.weixin.qq.com/s/wwBt5H68tHmf_lHXrd_eSQlinux
本文是 Linus 寫於 1991年10月10日ios
LINUX是什麼?編程
LINUX是一個免費類unix內核,適用於386-AT計算機,附帶完整源代碼。主要讓黑客、計算機科學學生使用,學習和享受。它大部分用C編寫,可是一小部分是用gnu格式彙編,並且引導序列用的是因特爾086彙編語言。C代碼是相對ANSI的,使用一些GNU加強特性(大多爲 __asm__ 和 inline)。安全
然而有不少可用於386電腦的unices,他們大部分要花不少錢,並且不附帶源碼。所以他們是使用計算機的理想選擇,可是若是你想了解他們如何工做,那是不可能的。bash
也有一些 Unix 是附帶源碼的。Minix,Andrew S. Tanenbaum編寫的學習工具,已經在大學中做爲教學工具使用了不少年了。BSD-386系統是附帶源碼的,可是有版權限制,並且要花不少錢(我記得起始價格爲$995)。GNU內核(Hurd)將會是免費的,可是如今尚未準備好,並且對於瞭解和學習它們來講有點龐大。併發
LINUX與Minix是最類似的,因爲它很小並且不是很是複雜,所以易於理解(嗯…)。LINUX是基於Minix編寫的,所以有至關多的相同點,任何Minix黑客在使用LINUX的時候都感受很是熟悉。不過,沒有在項目中使用Minix代碼,所以Minix版權沒有限制到這個新系統。它也是徹底免費的,並且它的版權很是寬鬆。所以不像使用Minix,它不須要幾兆字節大小的區別。less
LINUX版權函數
雖然是免費的發佈版,我仍是從如下幾個方面限制了LINUX的使用:工具
你能夠自由複製和從新發布源碼和二進制,只要是:
對任何使用或者擴展系統的人來講,這應該足夠寬鬆而不會引發任何擔心。若是你有朋友真的不想要源碼,只想要一個能運行的二進制,你固然能夠給他而不用擔憂我會起訴你。不過最好只在朋友之間這麼作。
LINUX運行所需的硬件/軟件
LINUX是在一個運行Minix的386-AT上開發的。因爲LINUX是一個真正的操做系統,並且須要直接與硬件交互來作一些事情,你必須有一個很是類似的系統來讓他順利運行:
LINUX會發展成爲一個自給自足的系統,如今須要Minix-386才能正常運行。你須要Minix讓初始化啓動文件系統,和編譯OS二進制。在那以後LINUX是一個自給自足的系統,可是爲了作文件系統檢查(fsck)和修改以後重編譯系統,推薦使用Minix。
獲取LINUX
LINUX如今可使用匿名ftp從‘nic.funet.fi’的‘/pub/OS/Linux’目錄獲取。這個目錄包含操做系統的全部源碼,還有一些二進制文件,所以你能夠真正使用系統了。
注意!二進制大可能是GNU軟件,並且版權比LINUX的嚴格(GNU非盈利性版權)。所以你不能在不發佈他們源碼的狀況下從新發布他們,能夠在/pub/GNU中找到。關於GNU非盈利性版權,從任何GNU軟件包瞭解更多。
此目錄中各種文件以下:
讓系統運行的最少文件是OS源碼和bash和更新二進制文件。不過只用這些,你作不了什麼事。
安裝
在你拿到了必要LINUX文件以後,你須要編譯系統和建立root目錄。必要的二進制文件須要放到root文件系統中。按以下操做:
1. 備份你的軟件。雖然LINUX從沒有毀壞過個人任何文件,但沒有什麼是必然的。安全賽過遺憾。
2. 選擇/建立一個標準MinixHD-分區做爲新的LINUX root文件系統。
3. 在新的root建立必要的設備節點。LINUX與Minix使用相同類型的節點,因此使用Minix的mknod命令建立下面的設備:節點號與在Minix中相同。
4. 將必要文件放到新的root分區。文件應該放在下面目錄中:
但願你如今有一個功能正常的unix,並且你已經root權限登陸。LINUX如今沒有‘init’過程,只要你註銷,系統會同步並等待。使用三指鍵(Ctrl+Alt+Del)重啓機器。
LINUX 缺失/不兼容的東西
LINUX 是打算做爲一個所有自給自足的內核,但如今並不是如此。做爲上面已經提到的,你須要 Minix 來設置啓動設備而且檢查文件系統當它運行起來的時候。這裏有一些其它的不足之處:
硬件的不兼容。一些 AT 標準特性當前尚未支持。最值得注意的是軟盤驅動,利用 LINUX 進行實際工做(備份 etc)當前是不可能的[譯者:這個是 oldlinux,這個是 Linus Torvalds 1991 年 10 月寫的文章,確定當時是不行的]。還有串行鏈接的一些特性沒有被實現(2400 bps 波特率的硬鏈接,沒有掛斷(hang-up)提示等等 )。
標準 c 庫的不兼容。gcc 分發版的 libc.a 沒有完成,我對免費可發佈的庫功能很感興趣。
一些系統調用沒有徹底實現。這些設計絕大多數「極少調用」的特性好比調試(誰不管如何須要它的話,你的程序第一次是沒法工做的:-))以及其它的特性。
如上所述,沒有登錄和初始化進程。當前 LINUX 啓動在單用戶模式,以 root 做爲控制檯用戶。對於一些移植工做足夠了,但不是實際可用的。
387支持[譯者:硬件浮點,當時 Intel 發佈了外接式 FPU] 沒有被實現,即便已有一些基礎程序被提供出來。」nic.funet.fi」 的 gcc 二進制包使用軟浮點(ie 仿真功能調用)來支持 4 個基礎數學運算操做。387-支持將盡快實現當個人電腦安裝了這個硬件。但願在一個月或者兩個月。
如今尚未重要的系統管理命令實如今 LINUX 中。這些包括 mkfs, format, fsck, mknod 等。這些命令須要的內核特性尚未實現(format, mknod),一些命令只須要實現它。做爲一個庫,我歡迎任何免費分發文件。
如您所見,LINUX還不是一個完整的系統。 感謝您的幫助,使其變得更好。 我對爲LINUX重寫的Minix命令不感興趣,除非你本身從頭開始編寫它們。 您固然能夠免費(並鼓勵)將您的Minix發行版中的全部內容用於您本身的LINUX系統,但因爲Minix的版權,它們沒法分發給更普遍的受衆。
這裏提到的一些問題將由我(即lines/387/floppy支持)儘快修復,但我但願獲得庫函數的支持。感謝大家提交的錯誤報告及補丁還有願望清單,若是你真的有針對問題的補丁,我會當即嘗試去修復它。 小的更改將做爲補丁形式發送到郵件列表,並在nic.funet.fi'上設置,若是通過大量重寫,或者修復大的補丁,整個系統將在nic.funet.fi’更新。
LINUX移植軟件
LINUX被設計得讓移植相對容易。所以,就有了完整的termios實現和一些POSIX庫。我所移植的(誠然相對較少)程序沒有任何問題。
儘管LINUX與Minix很是類似,但Minix程序一般並不會比爲其餘nuix設計的程序更容易移植。所以,我不建議從一個特定程序的Minix版本開始,而應該嘗試從頭開始移植‘’virgin‘’程序。比BSD更接近SYSV,這意味着當給定一個-DUSG或者-DSYSV標識時,大多數程序很容易移植。
移植過程當中最困難的一點就是缺乏庫函數。這些必須由你來編寫,或者從其餘的來源複製(Minix多是個有緣人)。另外,一些程序(特別是GNU)有各類各樣的標識,這些標識能夠定義哪些函數不可用(一旦在Makefile中添加了足夠量的-DXXX_MISSING標識,GNU fileutils將編譯的很好)。
已經移植的程序
下面這些程序已經移植到LINUX:
全部上述程序都能在‘nic.funet.fi’(主要在’/pub/gnu’)中找到,大多數LIINUX-binaries均可以在‘/pub/OS/Linux’目錄中找到。包括gcc(cc1)有一些我本身加強的功能,全部這些程序都在沒有變化的狀況下編譯的。先嚐試本身編譯,遇到問題能夠將差別或者資源發郵件給我。
另外,我提起過明確地GNU差別編譯和運行。
技術幫助
LINUX目前有一個郵件列表,您能夠經過郵件發送到這個地址訂閱:Linux-activists-request@niksula.hut.fi ,並要求包括在列表中。而後你能夠經過這個郵箱:Linux-activists@niksula.hut.fi 提問題,這將複製你的問題/答案/不管什麼,併發送給列表中其餘全部人。
請注意Linux-activists和Linux0activists-request的不一樣——第一個用於給列表中的全部人發送郵件,第二個僅用於訂閱和取消訂閱。
固然,您也能夠直接發送郵件至 torvalds@kruuna.helsinki.fi。我會盡可能在一兩天內回答全部的問題。
儘管‘nic.funet.fi’可能會保持合理的更新狀態,可是它還有些問題(即,我沒法由於我的獲得文件,但能夠經過幾我的)。所以,若是郵件列表上的人想要補丁或二進制文件,他們將會更快獲得。
感謝
我要感謝學院…
說真的,若是沒有其餘人的幫助,這個系統將永遠不會有曙光,甚至會變得更糟。Bruce Evans 幫助我找到了須要更改的位置,以便gcc能正確地處理浮點數,並提供許多有用的想法/建議(他的Minix-386用於構建系統)。此外,Earl Chew 的estdio包被用於標準的IO庫。像這樣更自由地分發包!
Alain W Black和Richard Tobin爲Minix製做了gcc,沒有它我就沒法編譯這個東西。GNU完成了我在Linux下使用的大部分程序。Alfred Leung發送了美國鍵盤補丁。
附:「感謝」wirzeniu@kruuna.helsinki.fi他的「建設性」批評和「詼諧」的評論。他是我第一個 alpha-測試者,他應該被授予勇氣獎章。
Linus Torvalds (torvalds@kruuna.helsinki.fi) 1991年10月10日
英文:Linus Torvalds,翻譯:開源中國
www.oschina.net/translate/linux-a-free-unix-386-kernel