標簽:數據 ted 頻繁 lin linux系統 混合 接口 安裝程序 解決
古人云,知其然知其所以然。馬哲思想指導著我們,任何事物、問題,離不開:為什么(Why,事物從哪里來?)、是什么(What,事物的定位?)、怎么做(How,到哪里去?)的哲學3問。
繼上個月算是相對徹底地弄懂了2個對于大部分從業者在今天看來的可能相當‘常識‘的底層概念問題:云計算————[云計算]概念辨析:云計算 [IaaS/PaaS/SaaS & 公有云/私有云/混合云]、底層計算機硬件——CPU架構與計算機芯片的問題:[Linux]CPU架構/指令集:RISC / CISC | arm | amd | X86/i386 | aarch64的時候,便對日日接觸的服務器底層的CENTOS操作系統的內核Linux的發展、由來產生了莫大興趣。(雖說在學校的時候,已經專門開過4門的操作系統、Linux的理論與實操課程,奈何人的記憶力總是有限,只能再從頭開始自個兒來理一理了)
因此可見,這篇文章是憋了許久的,回答自個兒想要搞明白的一個問題的記敘性筆記。除了反復閱讀鳥哥的書籍外,也廣泛閱讀了各網站的相對權威、可信的敘述。
好了,咱開門見山:
1964 Multics (分時操作系統 / 交互式操作系統)
開發者: 貝爾實驗室(Bell Lab) / 麻省理工學院(MIT) / 美國通用電氣公司(GE)
備注:因資金超支及貝爾實驗室的退出而廢棄
1969 Unics/Unix (分時操作系統 / 交互式操作系統)
開發者: 貝爾實驗室-Ken Thompson
編程語言: B語言(匯編語言)
備注:
①Ken Thompson 利用匯編語言(B語言)開發了 File Server System(Unics,即 UNIX 的原型)。
1973 Unics/Unix
開發者: 貝爾實驗室-Ken Thompson(C語言之父) + Ritchie
編程語言: C語言
備注:
①1971年,Thompson聯合Ritchie,利用匯編語言共同發明了C語言。
由于B語言進行系統編程時不夠強大,故二人對其改造
②1973年,Thompson和Ritchie用C語言重寫了UNIX
③自此到20世紀90年代,UNIX已成為大學中的主流操作系統。與此同時,UNIX 轉向商業化,價格昂貴。?④1979 年,UNIX 發布 System V,用于個人計算機
1977 BSD(Berkeley Software Distribution)(類Unix的OS)
開發者: Bill Joy(UC Berkeley大學,SUN公司的創始人)
編程語言: C語言
備注:
①1977 年, 大學的 ( Sun 公司的創始人)針對他的機器修改了 UNIX V7版本的源碼,稱為BSD(Berkeley Software Distribution)操作系統。
?②后來很多商業廠家意識到Unix的價值也紛紛以Bell Lab的System V OS或BSD OS為基礎來開發自己的Unix,較著名的有Sun OS,AIX,VMS。
1984 GNU(GNU’s Not Unix)項目 → 自由軟件運動
FSF(Free Software Foundation)基金會
創始者: Richard Stallman
備注:
①1984 年,Richard Stallman 開始 GNU[GNU’s Not Unix]項目,創辦 FSF[Free Software Foundation]基金會?②該組織倡導“自由軟件”,開發了非常重要的幾個軟件:
GCC(GNU C Compiler/GNU Compiler Collection)、GLIBC(GNU C Library)、G++(GCC的c++編譯器)、? Bash Shell、Emacs等產品;? GNU 的軟件缺乏一個開放的平臺運行,只能在 UNIX 上運行;
自由軟件指用戶可以對軟件做任何修改,甚至再發行,但要遵守GPL 的版權規定;
自由軟件是可以賣的,但是不能只賣軟件,而是賣服務、手冊等。?③GCC全稱是 GNU C Compiler, 最早的時候就是一個c編譯器。但是后來因為這個項目里邊集成了更多其他不同語言的編譯器,GCC就代表 the GNU Compiler Collection。故現在 GCC 表示一堆編譯器的合集。)?④1985 年,為了避免 GNU 開發的自由軟件被其他人用作專利軟件,因此創建 GPL(General Public License)版權聲明。
1987 Minix(類Unix的OS)
開發者: Andrew S. Tanenbaum
編程語言: C語言
備注:
①1984 年,因UNIX 規定“不能對學生提供源碼”,作為老師的 Andrew Tanenbaum 編寫兼容于 UNIX 的 Minix,用于教學。
①Minix是一個兼容Unix的類UNIX操作系統。
②Minix價格低廉,它的誕生就是為了解決在高校、科研院所里Unix昂貴的授權費,不利于OS教學使用。
③Minix的初衷:操作系統的教學,故強調代碼的可讀性與簡潔性;UNIX用于商業,注重代碼的高效率。
1989 POSIX標準/可移植操作系統接口 → OS系統調用接口標準
(Portable Operating System Interface for Computing Systems)
創始者:
IEEE(Institute of Electrical and Electronics Engineers 電氣和電子工程師協會)
ISO/IEC
備注:
①IEEE最初開發 POSIX 標準,是為了提高 UNIX OS環境及類Unix OS環境下應用程序的可移植性
(即 POSIX 標準并不限于Unix)?②支持其標準的OS包括但不限于:
Linux(start from V0.0.1 to now) / DEC OpenVMS / Microsoft Windows NT / ?③POSIX.1 已被國際標準化組織(International Standards Organization / ISO)所接受,被命名為 :
ISO/IEC 9945-1:1990 標準?④該標準是基于現有的UNIX 實踐和經驗,描述了操作系統的調用服務接口。
用于保證編制的應用程序可以在源代碼一級上在多種操作系統上移植和運行?⑤【POSIX與Linux結緣】90 年代初,POSIX 標準的制定正處在最后投票敲定的時候,那是1991-1993 年間。
此時正是Linux剛剛起步的時候,這個UNIX 標準為Linux 提供了極為重要的信息。
使得Linux 能夠在標準的指導下進行開發,并能夠與絕大多數UNIX 操作系統兼容。
在最初的Linux 內核源代碼中(0.01 版、0.11 版)就已為Linux 系統與POSIX 標準的兼容做好了準備工作。
在Linux 0.01 版內核的/include/unistd.h 文件中就已定義了幾個有關POSXI 標準要求的符號常數,
且Linus 在注釋中已寫道:“OK,這也許是個玩笑,但我正在著手研究它呢”。?⑥第一個POSIX正式標準是在1988 年9 月份批準的(IEEE 1003.1-1988),也既以后經常提到的POSIX.1 標準。? 1989 年POSIX 的工作被轉移至ISO/IEC 社團,并由15 工作組繼續將其制定成ISO 標準。
到1990 年,POSIX.1 與已通過的C 語言標準聯合,正式批準為:
IEEE 1003.1-1990(即 ANSI 標準)和ISO/IEC 9945-1:1990 標準。
1991.10 Linux | GNU/Linux[OS內核](類Unix、類Minix的OS)
開發者: Linus Torvalds
編程語言: C語言
備注:
①1991年初,芬蘭赫爾辛基大學的研究生 Linus Torvalds 基于 gcc、bash 開發了針對 386 機器的 Linux 內核。Linus Torvalds接觸到UNIX操作系統,通過學習 MINIX成功地將自己開發的bash移植到了minix 上,并于1991年10月正式向外宣布Linux內核(Linux 0.0.1)的誕生。? 1994 年,Torvalds 發布 Linux-v1.0。
1996 年,Torvalds 發布 Linux-v2.0,確定了 Linux 的吉祥物:企鵝(Tux)。? 因為Torvalds在小時候被企鵝咬過,故印象非常深刻。
②Linux是一個采用GNU GPL授權模式的、參考POSIX標準的、兼容Unix的類Minix、類UNIX操作系統。
③同年,GNU計劃已開發出了許多工具軟件,最受期盼的【GNU C編譯器】已出現。
但GNU的操作系統核心HURD一直處于實驗階段,沒有任何可用性。
實質上也沒能開發出完整的GNU操作系統,但是【GNU】奠定了Linux用戶基礎和開發環境。
④Linux 本身只是操作系統的內核,而不是一個操作系統。內核是使其它程序能夠運行的基礎。
它實現了多任務和硬件管理,用戶或者系統管理員交互運行的所有程序實際上都運行在內核之上。? 因此,我們平常說的“操作系統用的是Windows、Mac還是Linux???”是錯誤的;
Ubuntu、Fedora等才是操作系統的名字,他們都使用Linux內核;? 內核負責控制硬件資源分配,而如果只有內核,則只能讓計算機硬件運行,而不能有任何功能。
因此,需要【系統調用】提供給開發者使用,從而開發應用程序;
內核能夠控制硬件,比如:讓CPU可以運算、讓硬盤可以讀寫數據等;? 只有內核的話,只能讓計算機運行,但是我們不能控制計算機;
而系統調用是操作系統提供給開發者的調用接口;
任何硬件都不會默認就被操作系統控制,而需要開發商根據操作系統提供的接口開發驅動程序,只有安裝了驅動程序才能夠控制硬件設備。
⑤Linux 其中有些程序是必需的,比如說,命令行解釋器(shell),它用于用戶交互和編寫 shell 腳本。
Linux 沒有自己去開發這些應用程序,而是使用已有的自由軟件。
許多重要的軟件,包括 C 編譯器,都來自于自由軟件基金 GNU 項目。因此,把 Linux 也稱為 GNU/Linux。?⑥Linux核心理念:萬物皆文件;?⑦Unix和Linux的代碼是由90%的C語言和10%的匯編組成,因此只需要稍加修改,就能移植到其他硬件上;
Linux 內核版
①Linux內核(版)編號:
主版本.次版本.發布版本-修改版本? 3.10.0-123.el7.x84_64? 【注】雖然編號就是如上方式來編的,但依據Linux內核的發展離場,內核版本的定義有點不太相同。?
[1] 奇數、偶數版本分類
在2.6.x版本以前,Torvalds將內核的發展方向分為2類,并根據這2類內核的發展分別給予不同的編號:
A. 主、次版本為奇數:開發中版本(development)?
如2.5.xx,這種內核版本主要用于測試與發展新功能,所以通常這種版本僅有內核開發工程師會使用。如果有新增的內核程序代碼,會加入到這種版本當中,等到眾多工程師測試沒有問題后,才加入下一版的穩定內核中。
B.主、次版本為偶數:穩定版本(stable)
? 如2.6.xx,等到內核功能發展成熟后會加入到這類的版本中,主要用在一般家庭計算機以及企業版本中,重點在于提供用戶一個相對穩定的Linux操作環境平臺。
[2] 主線版本、長期維護版本(longterm version)
不過,這種奇數、偶數的編號格式在3.0版推出之后就不再使用了。從3.0版開始,內核主要依靠主線版本(MainLine)來開發,開發完畢后會往下一個主線版本進行。例如 3.10 就是在3.9的架構下繼續開發出來的新的主線版本,通常新一版的主線版本在2~3個月會被提出。
之所以會有新的主線版本,是因為加入新功能之故?,F在(2021/07/26)最新的主線版本已經是5.13版了。
https://www.kernel.org/
而舊的版本在新的主線版本出現之后,會有兩種機制來處理。一種機制為結束開發(End of Live, EoL),亦即該程序代碼已結束,不會有繼續維護的狀態。另一種機制為保持該版本的持續維護,亦即為長期維護版本(Longterm)。例如 3.10 即為一個長期維護版本,這個版本的程序代碼會被持續更長的時間,若程序代碼有bug或其他問題,內核維護者會持續進行程序代碼的更新維護。兩種機制結合,即:
所有的長期維護版本均會有終結(停止維護)的那一天;已停止維護的版本將不再被視為長期維護版。
所以,若你想要使用Linux內核來開發你的系統,那么當然要選擇長期支持的版本才行。要判斷你的Linux內核是否為長期支持的版本,可以使用`uname -r`來查看內核版本,然后對照下列鏈接來了解其對應值。
https://www.kernel.org/releases.html
Linux 內核版 與 Linux 發行版
Linux內核版本與發行版(distribution)的版本并不相同,很多朋友常常上網問到:“我的Linux是7.x版,請問...”之類的留言。這是不對的提問方式,因為所謂的Linux版本指的應該是內核版本,而目前最新的內核版本應該是5.13.5(2021/07/26)才對,并不會有7.x的版本出現。
你常用的Linux系統應該說明為發行版。因此,如果以CENTOS這個發行版來說,你應該說:“我用的Linux是CENOTS這個發行版,版本為7.x,請問...”才對。
CENTOS 7.4.1708 à 3.10.0-693.el7.x86_64
Linux發行版(可完全安裝的Linux發行版)
[1] 小結:Linux 與 Unix(類Unix)、GNU、POSIX
由此,我們可知:
Linux其實就是一個操作系統最底層的內核,及其提供的內核工具。
它是GNU GPL授權模式。所以,任何人均可獲得源代碼與可執行的這個內核程序,并且可以修改。
此外,因為Linux參考POSIX設計規范,于是兼容Unix操作系統,故可稱之為“Unix-Like”(類Unix)的一種。
[2] 可完全安裝的Linux發行版
Linux的出現讓GNU計劃放下了心里的一塊大石頭,因為GNU一直以來就是缺乏內核程序,導致它們的GNU自由軟件只能在其他的UNIX上面運行,既然目前有Linux出現,且Linux也用了很多的GNU相關軟件,所以斯托曼認為Linux的全名應該稱之為GNU/Linux。不管怎么說,Linux實在很不錯,讓GNU軟件大多以Linux 為主要操作系統來進行開發。此外,很多其他的自由軟件團隊,例如 postfix.vsftpd、apache等也都有以Linux為開發測試平臺的計劃出現。如此一來,Linux 除了主要的內核程序外,可以在Linux 上面運行的軟件也越來越多,如果有心,就能夠將一個完整的 Linux操作系統搞定。
雖然由托瓦茲負責開發的Linux僅具有內核與內核所提供的工具。不過,如上所述,很多的軟件已經
可以在Linux上面運行,因此,“Linux+各種軟件”就是一個相當完整的操作系統。不過,要完成這樣的
操作系統還真難,因為Linux早期都是由黑客工程師所開發維護,他們并沒有考慮到一般用戶的能力。
為了讓用戶能夠接觸到Linux,于是很多的商業公司或非營利團體,就將Linux內核(及其工具)與可運行的軟件整合起來,加上自己具有創意的工具程序,這個工具程序可以讓用戶以CD/DVD或通過網絡直接安裝/管理 Linux 系統。這個“內核+軟件+工具+可完全安裝程序”的東西,我們稱之為 Linux distribution,一般中文翻譯成Linux發行版,或Linux發布商套件等。
由于GNU的GPL授權并非不能從事商業行為,于是很多商業公司便專門來銷售Linux發行版。而由于Linux的GPL版權聲明,因此,商業公司所銷售的Linux發行版通常也都可以從互聯網上面來下載。此外,如果你想要其他商業公司的服務,那么直接向該公司購買光盤來安裝,也是一個很不錯的方式。
[3] 各大Linux發行版的主要異同;支持標準
不過,由于發展Linux 發行版的社區與公司實在太多,例如有名的 Red Hat、SUSE、Ubuntu、 Fedora、 Debian 等,所以很多人都很擔心,如此一來每個發行版是否都不相同呢?這就不需要擔心了,因為每個Linux發行版使用的內核都由https://www.kernel.org網站所發布,而它們所選擇的軟件,幾乎都是目前很知名的軟件,重復性相當的高,例如網頁服務器的 Apache,電子郵件服務器的
Postfix/sendmail,文件服務器的Samba等。
此外,為了讓所有的Linux發行版開發不致于差異太大,且讓這些開發商在開發的時候有所依據,
還有 Linux Standard Base(LSB)等標準來規范開發者,以及目錄結構的File system Hierarchy Standard(FHS)標準規范。唯一的差別,可能就是該廠商所開發出來的管理工具,以及套件管理的模式。
所以說,基本上,每個Linux發行版除了架構的嚴謹度與選擇的套件內容外,其實差異并不大,大家可以選擇自己喜好的發行版來安裝即可。
FHS:http://www.pathname.com/fhs/
LSB:https://wiki.linuxfoundation.org/lsb/start
# 包管理模式 #
事實上鳥哥認為發行版主要分為兩大家族:
一種是使用RPM方式安裝軟件的系統,包括Red Hat、Fedora、SUSE等都是這類;
一種則是使用Debian的dpkg方式安裝軟件的系統,包括Debian、Ubuntu、B2D等。
若是加上商業公司或網絡社區的分類,那么我們可以簡單的用下表來做個說明。
下面列出幾個主要的Linux發行版官方網址:
Red Hat:https://www.redhat.com/
SUSE:https://www.suse.com/
Fedora:https://getfedora.org/
CentOS:https://www.centos.org/
Debian:http://www.debian.org/
Ubuntu:http://www.ubuntu.com/
Gentoo:https://www.gentoo.org/
2004 Ubuntu(Linux發行版之一,基于Debian)
開發者: Andrew S. Tanenbaum
編程語言: C語言
備注:
?①Ubuntu基于Debian為開發藍本,由馬克·舍特爾沃斯 創立,其首個版本于2004年 10月20日 發布。?②其以每六個月發布一次新版本為目標,使得人們得以更頻繁地獲取新軟件。? 而其開發目的是為了使個人電腦變得簡單易用,但亦有提供服務器版本。?③Ubuntu的每個新版本均包含了最新版本的GNOME桌面環境,且會在GNOME發布新版本后一個月內發行。?④Ubuntu的運作主要依靠Canonical有限公司的支持,但亦有來自Linux社區的熱心人士提供協助。在2005年 7月8日 ,馬克·舍特爾沃斯與Canonical有限公司宣布成立Ubuntu基金會,并對其提供1千萬美元 作為啟始營運資金。?⑤Ubuntu不僅僅使用與Debian 相同的deb 軟件包格式,還和Debian社區有著密切聯系,其會直接和實時地向Debian社區作出貢獻,而不是只在發布時宣布一下。許多Ubuntu的開發者也負責為Debian的關鍵軟件包作出維護。?⑥Ubuntu的軟件管理系統與Debian的相同,俱使用apt-get這個指令,而同時亦有圖形使用者接口的Synaptic(新立得軟件包管理器)可供使用。
⑦其將所有軟件分為4類,稱為“組件(component)”,以反映不同的許可證和可用的支持級別。? 官方支持 + 自由軟件: Main? 非官方支持 + 自由軟件: Universe? 官方支持 + 非自由軟件: Restricted
非官方支持 + 非自由軟件: Multiverse?⑧Ubuntu均支持主流的CPU指令集架構:i386、AMD64、PowerPC等?⑨Ubuntu的新版本在發行后,該版本的套件庫便會被凍結,只提供安全性更新。
標簽:數據 ted 頻繁 lin linux系統 混合 接口 安裝程序 解決
原文地址:https://www.cnblogs.com/johnnyzen/p/15063926.html