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#),

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~
——【值得關注】我的 C/C++編程學習交流俱樂部!——
涉及:C語言、C++、windows編程、網路編程、QT界面開發、Linux編程、游戲編程、黑客等等......
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/235163.html
標籤:Linux
