淺談Linux與Unix之間的關(guān)系
這篇文章將介紹Linux的發(fā)展歷史以及Linux與著名操作系統(tǒng)Unix之間的關(guān)系。不會(huì)深入探討Linux的技術(shù)問(wèn)題。
Unix和BSD
說(shuō)到Linux,我們首先要了解Unix。
Unix是一種在AT&T貝爾實(shí)驗(yàn)室已經(jīng)存在很長(zhǎng)時(shí)間的操作系統(tǒng)。該項(xiàng)目由兩位著名的計(jì)算機(jī)科學(xué)家Ken Thompson和Dennis Ritchie領(lǐng)導(dǎo)。
Unix的正式開發(fā)始于1969年的夏天,Unix的第一個(gè)版本于1971年3月發(fā)布,隨后的第二個(gè)版本于1972年發(fā)布。
如果你在Linux機(jī)器上或MacOS上輸入date命令,你會(huì)得到一個(gè)名為Unix時(shí)間戳的數(shù)字。這個(gè)數(shù)字是自1970年1月1日00:00:00起的秒數(shù)。為什么是1970年1月1日呢?現(xiàn)在你應(yīng)該知道答案了,那時(shí)Unix正處于開發(fā)過(guò)程中。
Ken Thompson和Dennis Ritchie創(chuàng)建了B語(yǔ)言,這是Unix早期版本中支持的編程語(yǔ)言。然后,在1972年,里奇(Ritchie)重寫了B語(yǔ)言,對(duì)它進(jìn)行了更好的改進(jìn),成為了C語(yǔ)言,這種語(yǔ)言在今天仍然非常流行。后來(lái)的大多數(shù)Unix組件都是用C編寫的。
在20世紀(jì)70年代后期,AT&T與教育機(jī)構(gòu)和外部商業(yè)組織共享了Unix,從而導(dǎo)致了許多不同版本Unix的誕生。其中最突出的是由加州大學(xué)伯克利分校的計(jì)算機(jī)系統(tǒng)研究小組構(gòu)建的教育版本。此版本被廣泛稱為Berkeley Software Distribution,即BSD。
最初,BSD是建立在Unix設(shè)計(jì)和代碼庫(kù)的基礎(chǔ)上,但是后來(lái),Unix和BSD的版本變得越來(lái)越有特色,導(dǎo)致了Unix BSD版本和AT&T代號(hào)為System V的Unix版本之間的“標(biāo)準(zhǔn)競(jìng)爭(zhēng)”。最終,勝利屬于SystemV。后來(lái)的BSD版本使System V更接近于學(xué)習(xí),并納入了公認(rèn)的普遍接受的標(biāo)準(zhǔn)。
隨著FreeBSD、NetBSD和OpenBSD等開源項(xiàng)目的出現(xiàn),BSD分支的歷史發(fā)展告一段落。BSD的最終版本于1995年推出。Unix的最終版本是1989年發(fā)布的Unix 10版本,是由Bell Laps開發(fā)的。
盡管作為Unix的官方版本和BSD很久以前就停止了開發(fā),但是目前許多操作系統(tǒng)(從閉源到開源)都是基于這兩個(gè)分支開發(fā)的。
比較著名和成功的商業(yè)版本可能是蘋果的MacOS。目前iOS、watchOS和tvOS系統(tǒng)以及其他蘋果操作系統(tǒng)都基于BSD平臺(tái)。MacOS也是少數(shù)幾個(gè)被認(rèn)為是類UNIX的操作系統(tǒng)之一。
GNU
在Unix的發(fā)展過(guò)程中,1983年發(fā)生了一件重要的事情,這是后來(lái)發(fā)生劇變的前提。
1983年9月,Richard Stallman宣布引入GNU計(jì)劃(GNU代表的是GNU,不是Unix)。
GNU項(xiàng)目的目標(biāo)是創(chuàng)建一個(gè)自由的、類unix的操作系統(tǒng),在這個(gè)系統(tǒng)中,人們?nèi)藗兛梢宰杂傻貜?fù)制,開發(fā),修改和分發(fā)軟件,并且不受限制。
請(qǐng)記住,Unix和Unix的派生版本最初是封閉源的,并擁有版權(quán)。
1985年,理查德(Richard)建立了自由軟件基金會(huì)(FSF),這是一個(gè)非營(yíng)利性組織,旨在促進(jìn)軟件開發(fā)的自由。
GNU項(xiàng)目創(chuàng)建了許多重要的產(chǎn)品,如GNU Compiler Collection (gcc)、GNU Debugger、GNU Emacs text editor (Emacs)、GNU build automator (make)等,還有今天使用最廣泛的:GNU通用公共許可證(GPL)。
GNU項(xiàng)目取得了許多偉大的成就,創(chuàng)造了許多與Unix相似的工具。然而,GNU仍然缺少一個(gè)重要的組成部分:內(nèi)核(用于處理與硬件設(shè)備(CPU、RAM、設(shè)備等)的控制和通信的部分)。
Linux
1991年8月25日,一位名叫Linus Torvalds的芬蘭學(xué)生介紹了一種個(gè)人產(chǎn)品,后來(lái)成為L(zhǎng)inux內(nèi)核。
Linus的項(xiàng)目很快受到了許多個(gè)人和組織的關(guān)注。
Linux內(nèi)核和GNU軟件的結(jié)合創(chuàng)造了第一個(gè)完全免費(fèi)的操作系統(tǒng)。它的名字是GNU/Linux。
注意:
Linux本身只是一個(gè)內(nèi)核,它不是一個(gè)完整的操作系統(tǒng)。電腦上使用的操作系統(tǒng)叫做GNU / Linux,人們簡(jiǎn)單地稱它為L(zhǎng)inux。
Linux操作系統(tǒng)不使用或共享Unix或BSD代碼的任何部分。它由Linus和GNU Project全新構(gòu)建,成為Unix的克隆版本。這就是為什么Linux和當(dāng)前的Unix后代操作系統(tǒng)(例如MacOS)有很多共同點(diǎn)的原因。
普遍認(rèn)為,無(wú)論是在MacOS上還是Linux上運(yùn)行像ls、cat、grep這樣的命令,其本質(zhì)是相同的。但它們其實(shí)是兩種不同的工具。在Ubuntu上運(yùn)行g(shù)rep——help或man grepon可以得到GNU版本的介紹,在Mac上可以得到BSD版本的介紹。當(dāng)然,大多數(shù)GNU和BSD (Unix)工具對(duì)于每個(gè)選項(xiàng)都是相同的,但是也有例外。
您可以在Mac上安裝GNU版本,而不是默認(rèn)版本,這就可以像Linux一樣使用相同的命令。
Linux只是內(nèi)核部分,GNU提供了在該內(nèi)核上運(yùn)行的必要工具。但是,我們可以自由決定內(nèi)核配置。
一些組織和公司通過(guò)將Linux內(nèi)核與實(shí)用程序或程序包管理器相結(jié)合來(lái)創(chuàng)建完整的操作系統(tǒng)發(fā)行版,這些稱為L(zhǎng)inux發(fā)行版。
今天,有無(wú)數(shù)的Linux發(fā)行版,其中許多都是非常熟悉和流行的。一些最常用的發(fā)行版包括:Ubuntu, Debian, CentOS, Fedora, Redhat, Linux Mint等。
發(fā)行版可以構(gòu)建在另一個(gè)發(fā)行版之上。事實(shí)上,我上面提到的發(fā)行版彼此之間有許多密切的關(guān)系。最古老的兩個(gè)發(fā)行版(現(xiàn)在仍然在使用)是Slackware和Debian。它們創(chuàng)建于1993年。
Debian的后代分支也可能是比較大的發(fā)行版。除了Debian本身之外,這個(gè)分支的主要代表還有Ubuntu(構(gòu)建在Debian之上)、Linux Mint(構(gòu)建在Ubuntu之上)和Kali Linux。
另一個(gè)著名的發(fā)行版是Redhat,主要發(fā)行版是Red Hat Enterprise Linux (RHEL),這是一個(gè)針對(duì)Redhat的企業(yè)客戶的發(fā)行版。除了提供RHEL作為付費(fèi)發(fā)行版之外,Redhat還向社區(qū)提供另一個(gè)免費(fèi)發(fā)行版,即Fedora。
實(shí)際上,通常首先對(duì)Fedora版本進(jìn)行測(cè)試以獲取反饋和錯(cuò)誤修復(fù),然后在穩(wěn)定的Fedora版本上構(gòu)建RHEL。此外,Redhat還為RHEL的幾乎所有組件提供了免費(fèi)的源代碼,并且社區(qū)可以構(gòu)建發(fā)行版(類似于 RHEL)。CentOS是一個(gè)社區(qū)版本(不受Redhat支持),完全免費(fèi),是一個(gè)與RHEL類似的企業(yè)級(jí)質(zhì)量的發(fā)行版。
學(xué)習(xí)和熟悉Linux,在我個(gè)人看來(lái)Ubuntu(或Debian)和CentOS將是你應(yīng)該熟悉的組合。
還有其他完全基于Linux內(nèi)核的操作系統(tǒng)。其中最突出的就是Android。Android可能是使用Linux內(nèi)核的比較流行的操作系統(tǒng)。
Linux內(nèi)核版本
您可以在項(xiàng)目主頁(yè)上的https://www.kernel.org/上查看Linux內(nèi)核版本的列表。
要檢查正在使用的發(fā)行版上的內(nèi)核版本,可以使用uname -r命令。
使用uname -a命令將打印出整個(gè)系統(tǒng)信息,uname -o將打印出操作系統(tǒng)名稱。您將得到的結(jié)果是:操作系統(tǒng)名稱是GNU / Linux,而不僅僅是Linux。
類Unix
MacOS是少數(shù)通過(guò)Single UNIX Specification(SUS)認(rèn)證的操作系統(tǒng)之一,并且被認(rèn)為是類Unix的操作系統(tǒng)。
當(dāng)前,UNIX商標(biāo)版權(quán)歸Open Group所有(請(qǐng)注意,UNIX商標(biāo)名稱中的字母均大寫,而對(duì)于操作系統(tǒng),我們可以寫成Unix或UNIX)。
“類Unix(Unix-like”)”用于表示具有SUS認(rèn)證的操作系統(tǒng),并且可以使用UNIX品牌。
問(wèn)題是:按照上述定義,Linux是“類Unix”操作系統(tǒng)嗎?答案是否定的。現(xiàn)在Linux發(fā)行版不允許使用UNIX商標(biāo)。
除了將“Unix-like”解釋為SUS的一個(gè)組成部分之外,還有人建議應(yīng)該在更廣泛的意義上使用“Unix-like”這個(gè)詞。具體來(lái)說(shuō),它可分為三類:
Genetic UNIX:僅與Bell Labs Unix版本的代碼庫(kù)直接相關(guān)的操作系統(tǒng)。
Trademark UNIX:操作系統(tǒng)符合SUS要求,可以使用UNIX商標(biāo)。
Functional UNIX:“類似于Unix”的操作系統(tǒng),Linux可以歸為此類。
下面是一個(gè)簡(jiǎn)圖,描述了Unix的形成和開發(fā)過(guò)程以及與Unix密切相關(guān)的操作系統(tǒng)。
本文簡(jiǎn)要介紹了Linux領(lǐng)域中的一些要點(diǎn),還簡(jiǎn)介了Linux與Unix之間的歷史關(guān)系。相信大家也有一定的了解了。