LINUX是什麼?
LINUX是一個免費類unix內核,適用於386-AT計算機,附帶完整原始碼。
主要讓黑客、計算機科學學生使用,學習和享受。
它大部分用C編寫,但是一小部分是用gnu格式彙編,而且引導序列用的是因特爾086彙編語言。
C代碼是相對ANSI的,使用一些GNU增強特性(大多為 __asm__ 和 inline)。
然而有很多可用於386電腦的unices,他們大部分要花很多錢,而且不附帶源碼。
因此他們是使用計算機的理想選擇,但是如果你想了解他們如何工作,那是不可能的。
也有一些 Unix 是附帶源碼的。Minix,Andrew S. Tanenbaum編寫的學習工具,已經在大學中作為教學工具使用了很多年了。
LINUX與Minix是最相似的,由於它很小而且不是非常複雜,因此易於理解(嗯…)。
LINUX是基於Minix編寫的,因此有相當多的相同點,任何Minix黑客在使用LINUX的時候都感覺非常熟悉。
不過,沒有在項目中使用Minix代碼,因此Minix版權沒有限制到這個新系統。它也是完全免費的,而且它的版權非常寬鬆。因此不像使用Minix,它不需要幾兆字節大小的區別。
LINUX版權
雖然是免費的發布版,我還是從以下幾個方面限制了LINUX的使用:
你可以自由複製和重新發布源碼和二進位,只要是:
1、完全開源。因此不能單獨發布二進位,即使你只修改了一點。
2、你不能從發布版獲取利益。事實上甚至「裝卸費用」都是不被接受的。
3、你要保持完整的適當版權。
根據需要你可能會修改源碼,但是如果你發布了新系統的一部分(或者只有二進位),必須將新的代碼包含進去。
除了不包含版權的代碼之外,你可能會做一些小的修改。這由你來定,但是如果能將相關內容或者代碼告訴我,將不勝感激。
對任何使用或者擴展系統的人來說,這應該足夠寬鬆而不會引起任何擔憂。如果你有朋友真的不想要源碼,只想要一個能運行的二進位,你當然可以給他而不用擔心我會起訴你。不過最好只在朋友之間這麼做。
LINUX運行所需的硬體/軟體
LINUX是在一個運行Minix的386-AT上開發的。由於LINUX是一個真正的作業系統,而且需要直接與硬體交互來做一些事情,你必須有一個非常相似的系統來讓他順利運行:
386-AT(PS/2之類是不同的,不能正常運行)
VGA或者EGA屏幕硬體。
標準AT硬碟接口,IDE盤可以運行(實際上我用的就是這個)。
正常實模式BIOS。一些機器看起來是用虛-86模式運行啟動程序,而且在這樣的機器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軟體包了解更多。
此目錄中各類文件如下:
linux-0.03.tar.Z–系統的完全源碼,16位tar壓縮文件格式。
Linux.tex–這個文件的LATEX源碼。
bash.Z–在LINUX下運行的bash二進位文件。這個二進位文件應該放到預留給LINUX文件系統中的/bin/sh下(參見installation)。
update.Z–更新二進位文件,要放到/bin/update。
gccbin.tar.Z–GNU cc二進位文件需要由一個可運行的編譯器。這個tar壓縮包含有編譯器,加載器,彙編程序和支持程序(nm,strip等)。它還包含一個小型的庫,可用於大部分程序。
include.tar.Z–讓gcc運行的必要include文件。
unistd.tar.Z–unistd庫程序的源碼(即系統調用接口)。通過這個你可以使用系統獨立庫源碼編譯一個大一些的庫。
utilbin.tar.Z–各種GNU工具的二進位文件,包括GNU的fileutils,make和tar。也包含克隆emacs的uemacs。
README, RELNOTES-0.01, INSTALLATION–包含一些(有點過時的)LINUX相關的信息的ascii文件。
讓系統運行的最少文件是OS源碼和bash和更新二進位文件。不過只用這些,你做不了什麼事。
安裝
在你拿到了必要LINUX文件之後,你需要編譯系統和創建root目錄。必要的二進位文件需要放到root文件系統中。
按如下操作:
1.備份你的軟體。雖然LINUX從沒有毀壞過我的任何文件,但沒有什麼是必然的。安全勝過遺憾。
2.選擇/創建一個標準MinixHD-分區作為新的LINUX root文件系統。
3.在新的root創建必要的設備節點。LINUX與Minix使用相同類型的節點,所以使用Minix的mknod命令創建下面的設備:節點號與在Minix中相同。
● /dev/tty
● /dev/tty[0-2]
● /dev/hd[0-9]
4.將必要文件放到新的root分區。文件應該放在下面目錄中:希望你現在有一個功能正常的unix,而且你已經root權限登錄。LINUX現在沒有『init』過程,只要你註銷,系統會同步並等待。使用三指鍵(Ctrl+Alt+Del)重啟機器。
● gcc
● 添加連結到你選擇的/usr/local/lib中的文件。我將ld,as,nm,strip和size連結到他們相應的 /usr/local/lib/gcc-XXX。
● gccbin.tar.Z中的內容,除了gcc
● include.tar.Z的內容
● utilbin.tar.Z的內容
● sh,即bash.Z
● update
● /bin:
● /usr/bin:
● /usr/include:
● /usr/local/lib:
● /usr/local/bin:
● 編輯系統中的linux/include/linux/config.h。這個文件包含了針對於系統的信息:內存空間,硬碟類型,root分區號(同樣的與Minix中的編號相同),鍵盤類型(現在只有US和Finnish)等。
● 編譯LINUX源碼。一個簡單技巧就可以完成,在你編輯makefiles為適合你的系統之後(即,刪除-mstring-insnsflag,和修改適合你的路徑。)1.40之前版本gcc的用戶可能需要添加gnulib到makefile中『LIBS=』一行。
● 複製產生的鏡像文件到軟盤(即,cp Image /dev/PS0 或者之類的)。
● 使用新的軟盤重啟。啟動界面應該告訴你系統正在啟動(加載系統…),然後是一些必要的文件系統信息(xxx/XXX inodes/blocks free),接下來是一個確定,還有bash提示(如果你沒有.bashrc文件,則初始化bash#)。