0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LINUX是什么?LINUX運行所需的硬件/軟件

Linux愛好者 ? 來源:未知 ? 作者:李倩 ? 2018-07-11 15:32 ? 次閱讀

LINUX是什么?

LINUX是一個免費類unix內(nèi)核,適用于386-AT計算機,附帶完整源代碼。主要讓黑客、計算機科學(xué)學(xué)生使用,學(xué)習(xí)和享受。它大部分用C編寫,但是一小部分是用gnu格式匯編,而且引導(dǎo)序列用的是因特爾086匯編語言。C代碼是相對ANSI的,使用一些GNU增強特性(大多為 __asm__ 和 inline)。

然而有很多可用于386電腦的unices,他們大部分要花很多錢,而且不附帶源碼。因此他們是使用計算機的理想選擇,但是如果你想了解他們?nèi)绾喂ぷ鳎鞘遣豢赡艿摹?/p>

也有一些 Unix 是附帶源碼的。Minix,Andrew S. Tanenbaum編寫的學(xué)習(xí)工具,已經(jīng)在大學(xué)中作為教學(xué)工具使用了很多年了。BSD-386系統(tǒng)是附帶源碼的,但是有版權(quán)限制,而且要花很多錢(我記得起始價格為$995)。GNU內(nèi)核(Hurd)將會是免費的,但是現(xiàn)在還沒有準(zhǔn)備好,而且對于了解和學(xué)習(xí)它們來說有點龐大。

LINUX與Minix是最相似的,由于它很小而且不是非常復(fù)雜,因此易于理解(嗯…)。LINUX是基于Minix編寫的,因此有相當(dāng)多的相同點,任何Minix黑客在使用LINUX的時候都感覺非常熟悉。不過,沒有在項目中使用Minix代碼,因此Minix版權(quán)沒有限制到這個新系統(tǒng)。它也是完全免費的,而且它的版權(quán)非常寬松。因此不像使用Minix,它不需要幾兆字節(jié)大小的區(qū)別。

LINUX版權(quán)

雖然是免費的發(fā)布版,我還是從以下幾個方面限制了LINUX的使用:

你可以自由復(fù)制和重新發(fā)布源碼和二進(jìn)制,只要是:

完全開源。因此不能單獨發(fā)布二進(jìn)制,即使你只修改了一點。

你不能從發(fā)布版獲取利益。事實上甚至“裝卸費用”都是不被接受的。

你要保持完整的適當(dāng)版權(quán)。

根據(jù)需要你可能會修改源碼,但是如果你發(fā)布了新系統(tǒng)的一部分(或者只有二進(jìn)制),必須將新的代碼包含進(jìn)去。

除了不包含版權(quán)的代碼之外,你可能會做一些小的修改。這由你來定,但是如果能將相關(guān)內(nèi)容或者代碼告訴我,將不勝感激。

對任何使用或者擴展系統(tǒng)的人來說,這應(yīng)該足夠?qū)捤啥粫鹑魏螕?dān)憂。如果你有朋友真的不想要源碼,只想要一個能運行的二進(jìn)制,你當(dāng)然可以給他而不用擔(dān)心我會起訴你。不過最好只在朋友之間這么做。

LINUX運行所需的硬件/軟件

LINUX是在一個運行Minix的386-AT上開發(fā)的。由于LINUX是一個真正的操作系統(tǒng),而且需要直接與硬件交互來做一些事情,你必須有一個非常相似的系統(tǒng)來讓他順利運行:

386-AT(PS/2之類是不同的,不能正常運行)

VGA或者EGA屏幕硬件。

標(biāo)準(zhǔn)AT硬盤接口,IDE盤可以運行(實際上我用的就是這個)。

正常實模式BIOS。一些機器看起來是用虛-86模式運行啟動程序,而且在這樣的機器LINUX不會啟動和正常運行。

LINUX會發(fā)展成為一個自給自足的系統(tǒng),現(xiàn)在需要Minix-386才能正常運行。你需要Minix讓初始化啟動文件系統(tǒng),和編譯OS二進(jìn)制。在那之后LINUX是一個自給自足的系統(tǒng),但是為了做文件系統(tǒng)檢查(fsck)和修改之后重編譯系統(tǒng),推薦使用Minix。

獲取LINUX

LINUX現(xiàn)在可以使用匿名ftp從‘nic.funet.fi’的‘/pub/OS/Linux’目錄獲取。這個目錄包含操作系統(tǒng)的所有源碼,還有一些二進(jìn)制文件,因此你可以真正使用系統(tǒng)了。

注意!二進(jìn)制大多是GNU軟件,而且版權(quán)比LINUX的嚴(yán)格(GNU非盈利性版權(quán))。因此你不能在不發(fā)布他們源碼的情況下重新發(fā)布他們,可以在/pub/GNU中找到。關(guān)于GNU非盈利性版權(quán),從任何GNU軟件包了解更多。

此目錄中各類文件如下:

linux-0.03.tar.Z–系統(tǒng)的完全源碼,16位tar壓縮文件格式。

Linux.tex–這個文件的LATEX源碼。

bash.Z–在LINUX下運行的bash二進(jìn)制文件。這個二進(jìn)制文件應(yīng)該放到預(yù)留給LINUX文件系統(tǒng)中的/bin/sh下(參見installation)。

update.Z–更新二進(jìn)制文件,要放到/bin/update。

gccbin.tar.Z–GNU cc二進(jìn)制文件需要由一個可運行的編譯器。這個tar壓縮包含有編譯器,加載器,匯編程序和支持程序(nm,strip等)。它還包含一個小型的庫,可用于大部分程序。

include.tar.Z–讓gcc運行的必要include文件。

unistd.tar.Z–unistd庫程序的源碼(即系統(tǒng)調(diào)用接口)。通過這個你可以使用系統(tǒng)獨立庫源碼編譯一個大一些的庫。

utilbin.tar.Z–各種GNU工具的二進(jìn)制文件,包括GNU的fileutils,make和tar。也包含克隆emacs的uemacs。

README, RELNOTES-0.01, INSTALLATION–包含一些(有點過時的)LINUX相關(guān)的信息的ascii文件。

讓系統(tǒng)運行的最少文件是OS源碼和bash和更新二進(jìn)制文件。不過只用這些,你做不了什么事。

安裝

在你拿到了必要LINUX文件之后,你需要編譯系統(tǒng)和創(chuàng)建root目錄。必要的二進(jìn)制文件需要放到root文件系統(tǒng)中。按如下操作:

1. 備份你的軟件。雖然LINUX從沒有毀壞過我的任何文件,但沒有什么是必然的。安全勝過遺憾。2. 選擇/創(chuàng)建一個標(biāo)準(zhǔn)MinixHD-分區(qū)作為新的LINUX root文件系統(tǒng)。3. 在新的root創(chuàng)建必要的設(shè)備節(jié)點。LINUX與Minix使用相同類型的節(jié)點,所以使用Minix的mknod命令創(chuàng)建下面的設(shè)備:節(jié)點號與在Minix中相同。

/dev/tty

/dev/tty[0-2]

/dev/hd[0-9]

4. 將必要文件放到新的root分區(qū)。文件應(yīng)該放在下面目錄中:希望你現(xiàn)在有一個功能正常的unix,而且你已經(jīng)root權(quán)限登錄。LINUX現(xiàn)在沒有‘init’過程,只要你注銷,系統(tǒng)會同步并等待。使用三指鍵(Ctrl+Alt+Del)重啟機器。

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。這個文件包含了針對于系統(tǒng)的信息:內(nèi)存空間,硬盤類型,root分區(qū)號(同樣的與Minix中的編號相同),鍵盤類型(現(xiàn)在只有US和Finnish)等。

編譯LINUX源碼。一個簡單技巧就可以完成,在你編輯makefiles為適合你的系統(tǒng)之后(即,刪除-mstring-insnsflag,和修改適合你的路徑。)1.40之前版本gcc的用戶可能需要添加gnulib到makefile中‘LIBS=’一行。

復(fù)制產(chǎn)生的鏡像文件到軟盤(即,cp Image /dev/PS0 或者之類的)。

使用新的軟盤重啟。啟動界面應(yīng)該告訴你系統(tǒng)正在啟動(加載系統(tǒng)…),然后是一些必要的文件系統(tǒng)信息(xxx/XXX inodes/blocks free),接下來是一個確定,還有bash提示(如果你沒有.bashrc文件,則初始化bash#)。

LINUX 缺失/不兼容的東西

LINUX 是打算作為一個全部自給自足的內(nèi)核,但現(xiàn)在并非如此。作為上面已經(jīng)提到的,你需要 Minix 來設(shè)置啟動設(shè)備并且檢查文件系統(tǒng)當(dāng)它運行起來的時候。這里有一些其它的不足之處:

硬件的不兼容。一些 AT 標(biāo)準(zhǔn)特性當(dāng)前還沒有支持。最值得注意的是軟盤驅(qū)動,利用 LINUX 進(jìn)行實際工作(備份 etc)當(dāng)前是不可能的[譯者:這個是 oldlinux,這個是 Linus Torvalds 1991 年 10 月寫的文章,肯定當(dāng)時是不行的]。還有串行連接的一些特性沒有被實現(xiàn)(2400 bps 波特率的硬連接,沒有掛斷(hang-up)提示等等 )。

標(biāo)準(zhǔn) c 庫的不兼容。gcc 分發(fā)版的 libc.a 沒有完成,我對免費可發(fā)布的庫功能很感興趣。

一些系統(tǒng)調(diào)用沒有完全實現(xiàn)。這些設(shè)計絕大多數(shù)“極少調(diào)用”的特性比如調(diào)試(誰無論如何需要它的話,你的程序第一次是無法工作的:-))以及其它的特性。

如上所述,沒有登陸和初始化進(jìn)程。當(dāng)前 LINUX 啟動在單用戶模式,以 root 作為控制臺用戶。對于一些移植工作足夠了,但不是實際可用的。

387支持[譯者:硬件浮點,當(dāng)時 Intel 發(fā)布了外接式 FPU] 沒有被實現(xiàn),即使已有一些基礎(chǔ)程序被提供出來?!眓ic.funet.fi” 的 gcc 二進(jìn)制包使用軟浮點(ie 仿真功能調(diào)用)來支持 4 個基礎(chǔ)數(shù)學(xué)運算操作。387-支持將盡快實現(xiàn)當(dāng)我的電腦安裝了這個硬件。希望在一個月或者兩個月。

現(xiàn)在還沒有重要的系統(tǒng)管理命令實現(xiàn)在 LINUX 中。這些包括 mkfs, format, fsck, mknod 等。這些命令需要的內(nèi)核特性還沒有實現(xiàn)(format, mknod),一些命令只需要實現(xiàn)它。作為一個庫,我歡迎任何免費分發(fā)文件。

如您所見,LINUX還不是一個完整的系統(tǒng)。 感謝您的幫助,使其變得更好。 我對為LINUX重寫的Minix命令不感興趣,除非你自己從頭開始編寫它們。 您當(dāng)然可以免費(并鼓勵)將您的Minix發(fā)行版中的所有內(nèi)容用于您自己的LINUX系統(tǒng),但由于Minix的版權(quán),它們無法分發(fā)給更廣泛的受眾。

這里提到的一些問題將由我(即lines/387/floppy支持)盡快修復(fù),但我希望得到庫函數(shù)的支持。感謝你們提交的錯誤報告及補丁還有愿望清單,如果你真的有針對問題的補丁,我會立即嘗試去修復(fù)它。 小的更改將作為補丁形式發(fā)送到郵件列表,并在nic.funet.fi'上設(shè)置,如果經(jīng)過大量重寫,或者修復(fù)大的補丁,整個系統(tǒng)將在nic.funet.fi’更新。

LINUX移植軟件

LINUX被設(shè)計得讓移植相對容易。因此,就有了完整的termios實現(xiàn)和一些POSIX庫。我所移植的(誠然相對較少)程序沒有任何問題。

盡管LINUX與Minix非常相似,但Minix程序通常并不會比為其他nuix設(shè)計的程序更容易移植。因此,我不建議從一個特定程序的Minix版本開始,而應(yīng)該嘗試從頭開始移植‘’virgin‘’程序。比BSD更接近SYSV,這意味著當(dāng)給定一個-DUSG或者-DSYSV標(biāo)識時,大多數(shù)程序很容易移植。

移植過程中最困難的一點就是缺少庫函數(shù)。這些必須由你來編寫,或者從其他的來源復(fù)制(Minix可能是個有緣人)。另外,一些程序(特別是GNU)有各種各樣的標(biāo)識,這些標(biāo)識可以定義哪些函數(shù)不可用(一旦在Makefile中添加了足夠量的-DXXX_MISSING標(biāo)識,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)有一些我自己增強的功能,所有這些程序都在沒有變化的情況下編譯的。先嘗試自己編譯,遇到問題可以將差異或者資源發(fā)郵件給我。

另外,我提起過明確地GNU差異編譯和運行。

技術(shù)幫助

LINUX目前有一個郵件列表,您可以通過郵件發(fā)送到這個地址訂閱:Linux-activists-request@niksula.hut.fi,并要求包括在列表中。然后你可以通過這個郵箱:Linux-activists@niksula.hut.fi提問題,這將復(fù)制你的問題/答案/無論什么,并發(fā)送給列表中其他所有人。

請注意Linux-activists和Linux0activists-request的不同——第一個用于給列表中的所有人發(fā)送郵件,第二個僅用于訂閱和取消訂閱。

當(dāng)然,您也可以直接發(fā)送郵件至torvalds@kruuna.helsinki.fi。我會盡量在一兩天內(nèi)回答所有的問題。

盡管‘nic.funet.fi’可能會保持合理的更新狀態(tài),但是它還有些問題(即,我無法因為個人得到文件,但可以通過幾個人)。因此,如果郵件列表上的人想要補丁或二進(jìn)制文件,他們將會更快得到。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    761

    瀏覽量

    41475
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207900
  • 硬盤接口
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    14206

原文標(biāo)題:Linus 定義 Linux

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux 驅(qū)動 = 軟件框架 + 硬件操作

    ??Linux 驅(qū)動 = 軟件框架 + 硬件操作??驅(qū)動程序依賴于 Linux 內(nèi)核,你為開發(fā)板 A 開發(fā)驅(qū)動,那就先在 Ubuntu 中得到、 配置、編譯開發(fā)板 A 所使用的
    發(fā)表于 12-17 07:11

    第8章 Linux軟件開發(fā)平臺及軟件配置

    Linux軟件開發(fā)平臺及軟件配置 8.1 Linux 體系結(jié)構(gòu) 8.2 Linux開發(fā)基礎(chǔ) 8.2 
    發(fā)表于 04-11 14:38 ?3次下載

    Linux運行期間升級Linux系 統(tǒng)Uboot+kernel+Rootfs

    Linux運行期間升級Linux系 統(tǒng)Uboot+kernel+Rootfs
    發(fā)表于 10-30 08:43 ?5次下載
    在<b class='flag-5'>Linux</b><b class='flag-5'>運行</b>期間升級<b class='flag-5'>Linux</b>系 統(tǒng)Uboot+kernel+Rootfs

    Linux運行級init詳解

    Linux 啟動時需要哪些步驟呢?本文將詳細(xì)描述不同的運行級在啟動中的作用。 對于那些在DOS/Win9x/NT 平臺下的高級用戶而言,Linux 似乎是一個怪物。沒有confi g.sys ,沒有
    發(fā)表于 11-07 10:59 ?0次下載

    linux教程入門教程之linux學(xué)習(xí)視頻

    、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)
    發(fā)表于 08-28 14:40 ?13次下載

    linux的程序如何運行

     運行linux程序有三種方法
    發(fā)表于 05-17 09:40 ?3428次閱讀
    <b class='flag-5'>linux</b>的程序如何<b class='flag-5'>運行</b>

    華為linux和windows的區(qū)別_華為linux系統(tǒng)好用嗎

    華為linux和windows的區(qū)別如下:軟件與支持。windows 下可以運行絕大部分軟件、玩大部分的游戲、硬件廠商近乎100%的支持。
    發(fā)表于 08-26 10:11 ?5626次閱讀

    linux下如何安裝虛擬機

    如今,越來越多的人正在使用Linux系統(tǒng),現(xiàn)在許多國家的操作系統(tǒng)都基于Linux內(nèi)核。 盡管有很多軟件可以在Linux系統(tǒng)上運行。 但是,對
    發(fā)表于 09-18 16:54 ?1769次閱讀

    最硬核的Linux內(nèi)核文章

    內(nèi)核。 擁有超過1300萬行的代碼,Linux內(nèi)核是世界上最大的開源項目之一,但是內(nèi)核是什么,它用于什么? 02 什么是內(nèi)核 內(nèi)核是與計算機硬件接口的易替換軟件的最低級別。它負(fù)責(zé)將所有以用戶模式
    的頭像 發(fā)表于 10-19 17:46 ?2021次閱讀
    最硬核的<b class='flag-5'>Linux</b>內(nèi)核文章

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

    內(nèi)核是世界上最大的開源項目之一,但是內(nèi)核是什么,它用于什么? 02 什么是內(nèi)核 內(nèi)核是與計算機硬件接口的易替換軟件的最低級別。它負(fù)責(zé)將所有以用戶模式運行的應(yīng)用程序連接到物理硬件,并允許
    的頭像 發(fā)表于 10-21 12:02 ?4143次閱讀
    快速理解什么是<b class='flag-5'>Linux</b>內(nèi)核以及<b class='flag-5'>Linux</b>內(nèi)核的內(nèi)容

    Linux內(nèi)核的編譯與運行

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核的編譯與運行免費下載。
    發(fā)表于 03-25 13:48 ?11次下載

    Linux基礎(chǔ)中的軟件管理

    Linux是一個開源的操作系統(tǒng),幾乎每半年都會發(fā)布新的版本,基于Linux軟件更新頻率會更加頻繁。
    的頭像 發(fā)表于 02-15 11:01 ?666次閱讀

    Linux內(nèi)核的編譯和運行

    想讓Linux內(nèi)核代碼跑起來,得先搭建編譯和運行代碼的環(huán)境。
    發(fā)表于 06-23 11:56 ?1003次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核的編譯和<b class='flag-5'>運行</b>

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

    系統(tǒng)移植 linux 驅(qū)動移植 移植是說同樣的一個 linux 操作系統(tǒng),我們可以跑到不同的硬件上面,我們把操作系統(tǒng)移植到不同的硬件上面,這個過程叫做移植。設(shè)備驅(qū)動移植步驟,如下圖所示
    的頭像 發(fā)表于 07-27 17:06 ?728次閱讀
    <b class='flag-5'>Linux</b>驅(qū)動移植 <b class='flag-5'>Linux</b>系統(tǒng)架構(gòu)優(yōu)點

    linux虛擬機怎么運行代碼

    運行代碼是Linux虛擬機中的常見操作,本文將詳細(xì)介紹如何運行代碼。 首先,要運行代碼,你需要先安裝好Linux虛擬機,并確保能夠順利
    的頭像 發(fā)表于 11-17 10:12 ?3910次閱讀