LINUX是什么?
LINUX是一個(gè)免費(fèi)類(lèi)unix內(nèi)核,適用于386-AT計(jì)算機(jī),附帶完整源代碼。主要讓黑客、計(jì)算機(jī)科學(xué)學(xué)生使用,學(xué)習(xí)和享受。它大部分用C編寫(xiě),但是一小部分是用gnu格式匯編,而且引導(dǎo)序列用的是因特爾086匯編語(yǔ)言。C代碼是相對(duì)ANSI的,使用一些GNU增強(qiáng)特性(大多為 __asm__ 和 inline)。
然而有很多可用于386電腦的unices,他們大部分要花很多錢(qián),而且不附帶源碼。因此他們是使用計(jì)算機(jī)的理想選擇,但是如果你想了解他們?nèi)绾喂ぷ鳎鞘遣豢赡艿摹?/p>
也有一些 Unix 是附帶源碼的。Minix,Andrew S. Tanenbaum編寫(xiě)的學(xué)習(xí)工具,已經(jīng)在大學(xué)中作為教學(xué)工具使用了很多年了。BSD-386系統(tǒng)是附帶源碼的,但是有版權(quán)限制,而且要花很多錢(qián)(我記得起始價(jià)格為$995)。GNU內(nèi)核(Hurd)將會(huì)是免費(fèi)的,但是現(xiàn)在還沒(méi)有準(zhǔn)備好,而且對(duì)于了解和學(xué)習(xí)它們來(lái)說(shuō)有點(diǎn)龐大。
LINUX與Minix是最相似的,由于它很小而且不是非常復(fù)雜,因此易于理解(嗯…)。LINUX是基于Minix編寫(xiě)的,因此有相當(dāng)多的相同點(diǎn),任何Minix黑客在使用LINUX的時(shí)候都感覺(jué)非常熟悉。不過(guò),沒(méi)有在項(xiàng)目中使用Minix代碼,因此Minix版權(quán)沒(méi)有限制到這個(gè)新系統(tǒng)。它也是完全免費(fèi)的,而且它的版權(quán)非常寬松。因此不像使用Minix,它不需要幾兆字節(jié)大小的區(qū)別。
LINUX版權(quán)
雖然是免費(fèi)的發(fā)布版,我還是從以下幾個(gè)方面限制了LINUX的使用:
你可以自由復(fù)制和重新發(fā)布源碼和二進(jìn)制,只要是:
完全開(kāi)源。因此不能單獨(dú)發(fā)布二進(jìn)制,即使你只修改了一點(diǎn)。
你不能從發(fā)布版獲取利益。事實(shí)上甚至“裝卸費(fèi)用”都是不被接受的。
你要保持完整的適當(dāng)版權(quán)。
根據(jù)需要你可能會(huì)修改源碼,但是如果你發(fā)布了新系統(tǒng)的一部分(或者只有二進(jìn)制),必須將新的代碼包含進(jìn)去。
除了不包含版權(quán)的代碼之外,你可能會(huì)做一些小的修改。這由你來(lái)定,但是如果能將相關(guān)內(nèi)容或者代碼告訴我,將不勝感激。
對(duì)任何使用或者擴(kuò)展系統(tǒng)的人來(lái)說(shuō),這應(yīng)該足夠?qū)捤啥粫?huì)引起任何擔(dān)憂。如果你有朋友真的不想要源碼,只想要一個(gè)能運(yùn)行的二進(jìn)制,你當(dāng)然可以給他而不用擔(dān)心我會(huì)起訴你。不過(guò)最好只在朋友之間這么做。
LINUX運(yùn)行所需的硬件/軟件
LINUX是在一個(gè)運(yùn)行Minix的386-AT上開(kāi)發(fā)的。由于LINUX是一個(gè)真正的操作系統(tǒng),而且需要直接與硬件交互來(lái)做一些事情,你必須有一個(gè)非常相似的系統(tǒng)來(lái)讓他順利運(yùn)行:
386-AT(PS/2之類(lèi)是不同的,不能正常運(yùn)行)
VGA或者EGA屏幕硬件。
標(biāo)準(zhǔn)AT硬盤(pán)接口,IDE盤(pán)可以運(yùn)行(實(shí)際上我用的就是這個(gè))。
正常實(shí)模式BIOS。一些機(jī)器看起來(lái)是用虛-86模式運(yùn)行啟動(dòng)程序,而且在這樣的機(jī)器LINUX不會(huì)啟動(dòng)和正常運(yùn)行。
LINUX會(huì)發(fā)展成為一個(gè)自給自足的系統(tǒng),現(xiàn)在需要Minix-386才能正常運(yùn)行。你需要Minix讓初始化啟動(dòng)文件系統(tǒng),和編譯OS二進(jìn)制。在那之后LINUX是一個(gè)自給自足的系統(tǒng),但是為了做文件系統(tǒng)檢查(fsck)和修改之后重編譯系統(tǒng),推薦使用Minix。
獲取LINUX
LINUX現(xiàn)在可以使用匿名ftp從‘nic.funet.fi’的‘/pub/OS/Linux’目錄獲取。這個(gè)目錄包含操作系統(tǒng)的所有源碼,還有一些二進(jìn)制文件,因此你可以真正使用系統(tǒng)了。
注意!二進(jìn)制大多是GNU軟件,而且版權(quán)比LINUX的嚴(yán)格(GNU非盈利性版權(quán))。因此你不能在不發(fā)布他們?cè)创a的情況下重新發(fā)布他們,可以在/pub/GNU中找到。關(guān)于GNU非盈利性版權(quán),從任何GNU軟件包了解更多。
此目錄中各類(lèi)文件如下:
linux-0.03.tar.Z–系統(tǒng)的完全源碼,16位tar壓縮文件格式。
Linux.tex–這個(gè)文件的LATEX源碼。
bash.Z–在LINUX下運(yùn)行的bash二進(jìn)制文件。這個(gè)二進(jìn)制文件應(yīng)該放到預(yù)留給LINUX文件系統(tǒng)中的/bin/sh下(參見(jiàn)installation)。
update.Z–更新二進(jìn)制文件,要放到/bin/update。
gccbin.tar.Z–GNU cc二進(jìn)制文件需要由一個(gè)可運(yùn)行的編譯器。這個(gè)tar壓縮包含有編譯器,加載器,匯編程序和支持程序(nm,strip等)。它還包含一個(gè)小型的庫(kù),可用于大部分程序。
include.tar.Z–讓gcc運(yùn)行的必要include文件。
unistd.tar.Z–unistd庫(kù)程序的源碼(即系統(tǒng)調(diào)用接口)。通過(guò)這個(gè)你可以使用系統(tǒng)獨(dú)立庫(kù)源碼編譯一個(gè)大一些的庫(kù)。
utilbin.tar.Z–各種GNU工具的二進(jìn)制文件,包括GNU的fileutils,make和tar。也包含克隆emacs的uemacs。
README, RELNOTES-0.01, INSTALLATION–包含一些(有點(diǎn)過(guò)時(shí)的)LINUX相關(guān)的信息的ascii文件。
讓系統(tǒng)運(yùn)行的最少文件是OS源碼和bash和更新二進(jìn)制文件。不過(guò)只用這些,你做不了什么事。
安裝
在你拿到了必要LINUX文件之后,你需要編譯系統(tǒng)和創(chuàng)建root目錄。必要的二進(jìn)制文件需要放到root文件系統(tǒng)中。按如下操作:
1. 備份你的軟件。雖然LINUX從沒(méi)有毀壞過(guò)我的任何文件,但沒(méi)有什么是必然的。安全勝過(guò)遺憾。2. 選擇/創(chuàng)建一個(gè)標(biāo)準(zhǔn)MinixHD-分區(qū)作為新的LINUX root文件系統(tǒng)。3. 在新的root創(chuàng)建必要的設(shè)備節(jié)點(diǎn)。LINUX與Minix使用相同類(lèi)型的節(jié)點(diǎn),所以使用Minix的mknod命令創(chuàng)建下面的設(shè)備:節(jié)點(diǎn)號(hào)與在Minix中相同。
/dev/tty
/dev/tty[0-2]
/dev/hd[0-9]
4. 將必要文件放到新的root分區(qū)。文件應(yīng)該放在下面目錄中:希望你現(xiàn)在有一個(gè)功能正常的unix,而且你已經(jīng)root權(quán)限登錄。LINUX現(xiàn)在沒(méi)有‘init’過(guò)程,只要你注銷(xiāo),系統(tǒng)會(huì)同步并等待。使用三指鍵(Ctrl+Alt+Del)重啟機(jī)器。
gcc
添加鏈接到你選擇的/usr/local/lib中的文件。我將ld,as,nm,strip和size鏈接到他們相應(yīng)的 /usr/local/lib/gcc-XXX。
gccbin.tar.Z中的內(nèi)容,除了gcc
include.tar.Z的內(nèi)容
utilbin.tar.Z的內(nèi)容
sh,即bash.Z
update
/bin:
/usr/bin:
/usr/include:
/usr/local/lib:
/usr/local/bin:
編輯系統(tǒng)中的linux/include/linux/config.h。這個(gè)文件包含了針對(duì)于系統(tǒng)的信息:內(nèi)存空間,硬盤(pán)類(lèi)型,root分區(qū)號(hào)(同樣的與Minix中的編號(hào)相同),鍵盤(pán)類(lèi)型(現(xiàn)在只有US和Finnish)等。
編譯LINUX源碼。一個(gè)簡(jiǎn)單技巧就可以完成,在你編輯makefiles為適合你的系統(tǒng)之后(即,刪除-mstring-insnsflag,和修改適合你的路徑。)1.40之前版本gcc的用戶可能需要添加gnulib到makefile中‘LIBS=’一行。
復(fù)制產(chǎn)生的鏡像文件到軟盤(pán)(即,cp Image /dev/PS0 或者之類(lèi)的)。
使用新的軟盤(pán)重啟。啟動(dòng)界面應(yīng)該告訴你系統(tǒng)正在啟動(dòng)(加載系統(tǒng)…),然后是一些必要的文件系統(tǒng)信息(xxx/XXX inodes/blocks free),接下來(lái)是一個(gè)確定,還有bash提示(如果你沒(méi)有.bashrc文件,則初始化bash#)。
LINUX 缺失/不兼容的東西
LINUX 是打算作為一個(gè)全部自給自足的內(nèi)核,但現(xiàn)在并非如此。作為上面已經(jīng)提到的,你需要 Minix 來(lái)設(shè)置啟動(dòng)設(shè)備并且檢查文件系統(tǒng)當(dāng)它運(yùn)行起來(lái)的時(shí)候。這里有一些其它的不足之處:
硬件的不兼容。一些 AT 標(biāo)準(zhǔn)特性當(dāng)前還沒(méi)有支持。最值得注意的是軟盤(pán)驅(qū)動(dòng),利用 LINUX 進(jìn)行實(shí)際工作(備份 etc)當(dāng)前是不可能的[譯者:這個(gè)是 oldlinux,這個(gè)是 Linus Torvalds 1991 年 10 月寫(xiě)的文章,肯定當(dāng)時(shí)是不行的]。還有串行連接的一些特性沒(méi)有被實(shí)現(xiàn)(2400 bps 波特率的硬連接,沒(méi)有掛斷(hang-up)提示等等 )。
標(biāo)準(zhǔn) c 庫(kù)的不兼容。gcc 分發(fā)版的 libc.a 沒(méi)有完成,我對(duì)免費(fèi)可發(fā)布的庫(kù)功能很感興趣。
一些系統(tǒng)調(diào)用沒(méi)有完全實(shí)現(xiàn)。這些設(shè)計(jì)絕大多數(shù)“極少調(diào)用”的特性比如調(diào)試(誰(shuí)無(wú)論如何需要它的話,你的程序第一次是無(wú)法工作的:-))以及其它的特性。
如上所述,沒(méi)有登陸和初始化進(jìn)程。當(dāng)前 LINUX 啟動(dòng)在單用戶模式,以 root 作為控制臺(tái)用戶。對(duì)于一些移植工作足夠了,但不是實(shí)際可用的。
387支持[譯者:硬件浮點(diǎn),當(dāng)時(shí) Intel 發(fā)布了外接式 FPU] 沒(méi)有被實(shí)現(xiàn),即使已有一些基礎(chǔ)程序被提供出來(lái)。”nic.funet.fi” 的 gcc 二進(jìn)制包使用軟浮點(diǎn)(ie 仿真功能調(diào)用)來(lái)支持 4 個(gè)基礎(chǔ)數(shù)學(xué)運(yùn)算操作。387-支持將盡快實(shí)現(xiàn)當(dāng)我的電腦安裝了這個(gè)硬件。希望在一個(gè)月或者兩個(gè)月。
現(xiàn)在還沒(méi)有重要的系統(tǒng)管理命令實(shí)現(xiàn)在 LINUX 中。這些包括 mkfs, format, fsck, mknod 等。這些命令需要的內(nèi)核特性還沒(méi)有實(shí)現(xiàn)(format, mknod),一些命令只需要實(shí)現(xiàn)它。作為一個(gè)庫(kù),我歡迎任何免費(fèi)分發(fā)文件。
如您所見(jiàn),LINUX還不是一個(gè)完整的系統(tǒng)。 感謝您的幫助,使其變得更好。 我對(duì)為L(zhǎng)INUX重寫(xiě)的Minix命令不感興趣,除非你自己從頭開(kāi)始編寫(xiě)它們。 您當(dāng)然可以免費(fèi)(并鼓勵(lì))將您的Minix發(fā)行版中的所有內(nèi)容用于您自己的LINUX系統(tǒng),但由于Minix的版權(quán),它們無(wú)法分發(fā)給更廣泛的受眾。
這里提到的一些問(wèn)題將由我(即lines/387/floppy支持)盡快修復(fù),但我希望得到庫(kù)函數(shù)的支持。感謝你們提交的錯(cuò)誤報(bào)告及補(bǔ)丁還有愿望清單,如果你真的有針對(duì)問(wèn)題的補(bǔ)丁,我會(huì)立即嘗試去修復(fù)它。 小的更改將作為補(bǔ)丁形式發(fā)送到郵件列表,并在nic.funet.fi'上設(shè)置,如果經(jīng)過(guò)大量重寫(xiě),或者修復(fù)大的補(bǔ)丁,整個(gè)系統(tǒng)將在nic.funet.fi’更新。
LINUX移植軟件
LINUX被設(shè)計(jì)得讓移植相對(duì)容易。因此,就有了完整的termios實(shí)現(xiàn)和一些POSIX庫(kù)。我所移植的(誠(chéng)然相對(duì)較少)程序沒(méi)有任何問(wèn)題。
盡管LINUX與Minix非常相似,但Minix程序通常并不會(huì)比為其他nuix設(shè)計(jì)的程序更容易移植。因此,我不建議從一個(gè)特定程序的Minix版本開(kāi)始,而應(yīng)該嘗試從頭開(kāi)始移植‘’virgin‘’程序。比BSD更接近SYSV,這意味著當(dāng)給定一個(gè)-DUSG或者-DSYSV標(biāo)識(shí)時(shí),大多數(shù)程序很容易移植。
移植過(guò)程中最困難的一點(diǎn)就是缺少庫(kù)函數(shù)。這些必須由你來(lái)編寫(xiě),或者從其他的來(lái)源復(fù)制(Minix可能是個(gè)有緣人)。另外,一些程序(特別是GNU)有各種各樣的標(biāo)識(shí),這些標(biāo)識(shí)可以定義哪些函數(shù)不可用(一旦在Makefile中添加了足夠量的-DXXX_MISSING標(biāo)識(shí),GNU fileutils將編譯的很好)。
已經(jīng)移植的程序
下面這些程序已經(jīng)移植到LINUX:
GNU cc (gcc, cc1, cpp)
GNU assembler (as386)
GNU binutils (ld, ar, nm, size, strip, ranlib)
GNU compress (16-bit)
GNU tar
GNU make
GNU bash (Bourne Again SHell)
GNU sed
GNU bison (yacc-lookalike)
GNU awk
GNU fileutils (ls, cp, rm, mkdir, rmdir, tail etc)
less
uemacs
所有上述程序都能在‘nic.funet.fi’(主要在’/pub/gnu’)中找到,大多數(shù)LIINUX-binaries都可以在‘/pub/OS/Linux’目錄中找到。包括gcc(cc1)有一些我自己增強(qiáng)的功能,所有這些程序都在沒(méi)有變化的情況下編譯的。先嘗試自己編譯,遇到問(wèn)題可以將差異或者資源發(fā)郵件給我。
另外,我提起過(guò)明確地GNU差異編譯和運(yùn)行。
技術(shù)幫助
LINUX目前有一個(gè)郵件列表,您可以通過(guò)郵件發(fā)送到這個(gè)地址訂閱:[email protected],并要求包括在列表中。然后你可以通過(guò)這個(gè)郵箱:[email protected]提問(wèn)題,這將復(fù)制你的問(wèn)題/答案/無(wú)論什么,并發(fā)送給列表中其他所有人。
請(qǐng)注意Linux-activists和Linux0activists-request的不同——第一個(gè)用于給列表中的所有人發(fā)送郵件,第二個(gè)僅用于訂閱和取消訂閱。
當(dāng)然,您也可以直接發(fā)送郵件至[email protected]。我會(huì)盡量在一兩天內(nèi)回答所有的問(wèn)題。
盡管‘nic.funet.fi’可能會(huì)保持合理的更新?tīng)顟B(tài),但是它還有些問(wèn)題(即,我無(wú)法因?yàn)閭€(gè)人得到文件,但可以通過(guò)幾個(gè)人)。因此,如果郵件列表上的人想要補(bǔ)丁或二進(jìn)制文件,他們將會(huì)更快得到。
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42134 -
Linux
+關(guān)注
關(guān)注
87文章
11456瀏覽量
212750 -
硬盤(pán)接口
+關(guān)注
關(guān)注
0文章
21瀏覽量
14466
原文標(biāo)題:Linus 定義 Linux
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Linux 驅(qū)動(dòng) = 軟件框架 + 硬件操作
第8章 Linux軟件開(kāi)發(fā)平臺(tái)及軟件配置
在Linux運(yùn)行期間升級(jí)Linux系 統(tǒng)Uboot+kernel+Rootfs

Linux運(yùn)行級(jí)init詳解
linux教程入門(mén)教程之linux學(xué)習(xí)視頻
華為linux和windows的區(qū)別_華為linux系統(tǒng)好用嗎
linux下如何安裝虛擬機(jī)
最硬核的Linux內(nèi)核文章

快速理解什么是Linux內(nèi)核以及Linux內(nèi)核的內(nèi)容

Linux內(nèi)核的編譯與運(yùn)行
Linux基礎(chǔ)中的軟件管理
Linux內(nèi)核的編譯和運(yùn)行

Linux驅(qū)動(dòng)移植 Linux系統(tǒng)架構(gòu)優(yōu)點(diǎn)

評(píng)論