1. 程式人生 > 實用技巧 >跟光磊學Linux運維-Unix/Linux起源與哲學思想

跟光磊學Linux運維-Unix/Linux起源與哲學思想

跟光磊學Linux運維-Unix/Linux起源與哲學思想

跟光磊學Linux運維

Unix概述

Unix發展歷史

  • 1969年,貝爾實驗室的Ken Thompson使用匯編語言和B語言開發和改進了UNICS
  • 1973年,貝爾實驗室的Dennis Ritchie使用C語言重新編寫實現,並正式命名Unix
  • 1977年,伯克利大學開發基於Unix的BSD系統,自此以後各大公司針對自身硬體架構開發了互不相容的各種版本的Unix,例如SUN公司的Solaris,HP公司的HP UNIX以及IBM公司的AIX
  • 1979年貝爾實驗室發表了System V架構 版權宣告,HP UNIX,IBM AIX宣佈“不對學生提供原始碼” 並且收回版權
  • 1984年 Andrew S. Tanenbaum荷蘭阿姆斯特丹自由大學電腦科學的教授開發了可執行在x86 PC平臺的Minix作業系統用於教學。

Unix是現代作業系統的鼻祖,Linux,macOS,iOS都是基於Unix發展而來的

Unix的發展路線以及各個分支

Unix系統的特點

  • 技術成熟、可靠性高:通常超大型銀行、金融公司等可靠性要求性極高的公司會採用Unix作為伺服器作業系統,但是Unix通常是隨著硬體捆綁銷售的,例如IBM的小型機。
  • 支援主流CPU的架構:Intel/AMD,PowerPC,UltraSPARC
  • 支援主流的資料庫:Oracle,DB2,Informix
  • 強大的開發功能:Unix促使C語言的誕生,而TCP/IP,XML,WWW都是誕生在Unix之上

GUN與開源軟體

GUN概述

由於Unix面臨商業化版權制約以及原始碼面臨閉源的問題,1984年Ritchard Stallman發起了開發自由軟體的運動,併成立自由軟體基金會(Free Software Foundation)和GNU(GUN is Not Unix)專案以及GPL(GNU General Public License)協議,目標是編寫大量兼容於Unix系統的自由軟體。GNU專案最終產出了Linux系統的重要元件:包括GCC編譯器,Emacs編輯器,bash命令解釋程式和程式語言shell以及gawk。

GPL協議的軟體二次開發增加功能之後也必須開源(即公開原始碼)


GNU官網
自由不代表免費,例如RedHat的RHEL是自由但是不免費的作業系統,提供的服務收費。
GPL(GNU General Public License)是保證任何人有共享和修改自由軟體的自由,任何人有權獲取、修改、釋出自由軟體的原始碼的權利,但同時給出具體的修改的原始碼。LGPL(Lesser General Public License)相對於GPL較為寬鬆,允許不公開全部原始碼。

開源軟體

開源指的是軟體和原始碼提供給所有人,同時能夠自由分發軟體和原始碼,能夠自由的修改和建立其衍生品,開源指的是自由,並不等於免費

而目前軟體型別可以分為商業軟體,共享軟體以及自由軟體。

  • 商業軟體就是使用收費,例如Windows 10企業版,Office2019,Edraw Max等等都是商業軟體,其特點就是收費並且不開放原始碼
  • 共享軟體就是免費使用,但是不開放原始碼,功能會有所侷限,相當於免費版
  • 自由軟體是開放原始碼,並且能夠自由修改、分發,但是自由不一定意味著免費,典型的RedHat公司發行的REHL就是自由,但是提供的服務是收費的。

開源協議

目前世界上開源軟體有不同的開源許可證,常見的有Apache,MIT,LGPL等等。

其中Apache協議指的是他人修改原始碼後能夠閉源,但是每一個修改過的檔案,必須要放置版權說明。
MIT協議在Apache協議的基礎之上,每個修改的檔案不需要放置版權說明,並且衍生軟體的廣告,還可以用你的名字促銷,應該是最寬鬆的開源許可協議。
LGPL協議指的是他人修改軟體的原始碼之後不能閉源,同時新增的程式碼也不能採用同樣的許可證,但是修改原始碼的地方不需要提供說明文件,而Mozila協議是需要提供說明文件。

CentOS系列都是遵守GPLv2協議,可以使用rpm -qi kernel命令檢視

CentOS8.2的版權宣告

[root@centos8 ~]# rpm -qi kernel
Name        : kernel
Version     : 4.18.0
Release     : 193.el8
Architecture: x86_64
Install Date: Mon 24 Aug 2020 08:04:37 AM CST
Group       : System Environment/Kernel
Size        : 0
License     : GPLv2 and Redistributable, no modification permitted
Signature   : RSA/SHA256, Fri 29 May 2020 11:40:04 PM CST, Key ID 05b555b38483c65d
Source RPM  : kernel-4.18.0-193.el8.src.rpm
Build Date  : Fri 08 May 2020 07:16:21 PM CST
Build Host  : kbuilder.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.kernel.org/
Summary     : The Linux kernel, based on version 4.18.0, heavily modified with backports
Description :
This is the package which provides the Linux kernel for CentOS
Linux. It is based on upstream Linux at version 4.18.0 and maintains kABI
compatibility of a set of approved symbols, however it is heavily modified with
backports and fixes pulled from newer upstream Linux kernel releases. This means
this is not a 4.18.0 kernel anymore: it includes several components which come
from newer upstream linux versions, while maintaining a well tested and stable
core. Some of the components/backports that may be pulled in are: changes like
updates to the core kernel (eg.: scheduler, cgroups, memory management, security
fixes and features), updates to block layer, supported filesystems, major driver
updates for supported hardware in CentOS Linux, enhancements for
enterprise customers, etc.

Linux概述

Linux發展歷史以及組成

我們通常所說的Linux通常指的是核心(kernel),目前(2020/10/18)最新的Linux核心版本是5.9.1

使用命令uname -r檢視操作Linux主流髮型版的核心版本資訊

CentOS7.8系統核心版本檢視

CentOS7.8依賴的核心是3.10.0-1127.el7.x86_64,即3.10.0的核心版本。

[root@ittimeline ~]# uname -r #檢視CentOS7核心版本
3.10.0-1127.el7.x86_64

Linux版本由主版本號、次版本號、末版本號以及打包版本號和廠商版本號組成

  • 3表示主版本號
  • 10表示次版本號
  • 0表示末版本號
  • 1127表示打包版本號
  • el7表示廠商版本號,這裡表示RHEL 7版本

CentOS8.2系統核心版本檢視

CentOS8.2系統依賴的核心版本是4.18.0

[root@centos8 ~]# uname -a #檢視CentOS8.2的核心版本
Linux centos8.ittimeline.net 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu Server 20.04 系統核心版本檢視

Ubuntu Server 20.04系統使用的核心版本是5.4

guanglei@ubuntu20:~$ uname -a #檢視Ubuntu Server 20.04的核心版本
Linux ubuntu20 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu 相對於CentOS而言,選擇的Linux核心版本更高,如果想要更高版本的核心特性,可以選用Ubuntu Server作為伺服器的作業系統。

只有核心,就不是一個完整的作業系統,還需要許多能夠解決實際問題的應用程式。

最早期的Linux核心是由Linus Torvalds在大學教授Andrew Tanenbaum開發的Minix基礎之上開發的

1991年年底釋出了Linux核心的0.02版本,自那以後全世界的開源愛好者們共同推進著Linux系統的發展,使其在服務端,嵌入式和PC桌面得到了廣泛的運用。

Linux系統=Linux核心+GNU專案元件+各種應用程式(Firefox,Nginx,Zabbix,MySQL)

Linux系統架構

  • 核心主要是實現系統記憶體管理,軟體程式管理,硬體裝置管理,檔案系統管理、安全管理等通用功能
  • GNU元件主要包含處理檔案(gawk)、操作文字、管理程序的工具以及shell,gcc編譯器等等
  • 常見的應用程式包含不同的圖形化介面(KDE,GNOME,XFCE),運行於桌面端的Firefox,Chrome和運行於服務端Nginx,MySQL等等。

Linux系統的特點

Linux系統的特點(繼承Unix之外的)

  • 開放原始碼、自由傳播的類Unix
  • 基於Intel X86系列CPU
  • 支援多工、多執行緒、多CPU、多使用者
  • 完善的圖形使用者介面:GNOME,KDE
  • 完善的開發平臺:Java/C/C++/Python/Go
  • 支援主流資料庫:MySQL,Oracle,PostgreSQL
  • 完善的網路服務:HTTP、WWW,SFTP,DNS,SSH2等等

Linux主流發行版

為了便於Linux系統的安裝和使用,誕生了諸如RedHat公司的Linux發行商,將Linux核心和各種系統元件以及應用元件組合成一個完整的作業系統。

目前主流的Linux發行版主要有三大分支,分別是RedHat,Debian和Slackware,後續主流的RHEL,Ubuntu,Open SUSE都是基於前面三個分支演進而來的。

  • Debian
    • Ubuntu 20.0.4
    • Mint
    • 深度(deepin)
  • Slackware
    • SUSE Linux Enterprise Server
    • Open SUSE
  • RedHat
    • RHEL
    • CentOS8.2
    • 中標麒麟

關於RHEL和CentOS的關係:CentOS是基於RHEL原始碼編譯而來,僅僅去除了RHEL原始碼的商標以及非自由軟體部分。而Fedora中包含了最新的特性,相當於RHEL測試版,待穩定後會整合到RHEL。

面對如此多的發行版該如何選擇呢?

如果你想從事Linux系統運維與架構設計的工作,推薦使用CentOS7.8以及Ubuntu Server18.04。

CentOS7.8 桌面

如果是想嘗試下Linux的桌面版,推薦可以使用Open SUSE LEAP 15.2或者Ubuntu18.04。
Ubuntu18.04 桌面版

如果以上的發行版無法滿足你的需求,可以訪問下面的連結,獲取所有的Linux發行版資訊
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

跟光磊學Linux運維繫列主要會使用CentOS7系列、CentOS8系列以及Ubuntu Server 18.04和Ubuntu Server 20.04

Linux哲學思想

  • 一切皆檔案
    普通的檔案,目錄、字元裝置、塊裝置、 套接字等在 Unix/Linux 中都是以檔案被對待;它們雖然型別不同,但是對其提供的卻是同一套操作介面。
  • 小型,單一用途的程式
    程式和可執行檔案不要太複雜,這樣才能保證了linux核心的高效執行。
  • 連結程式,共同完成複雜的任務
    複雜的任務可以通過連線多個簡單的程式實現複雜的功能。對於複雜的功能linux通過許多簡單程式的組合等方式實現,在保證簡單功能的高效性的同時,複雜的程式也必然是高效性的。
  • 避免令人困惑的使用者介面
    如Windows那樣出了問題一般人選擇的會是重啟,實在是不行的話就是重新安裝系統了,因為對於Windows那樣不是開源的,並且使用者介面比較複雜,當作業系統出了問題,一般的人是根本沒有辦法解決的。但是linux就不一樣了,第一linux是開源的,無論什麼問題都可以通過簡潔的命令列實現排錯,修改系統的配置,一切都是簡潔明瞭為基礎。
  • 配置資料儲存在文字中
    Linux所有的配置檔案都存放在文字配置檔案當中,無論什麼配置修改都只需修改其配置檔案即可,配置檔案時文字形式的只需任意一款文字編輯器修改即可而不是類似於Windows那樣將儲存在登錄檔中,並且Windows的登錄檔需要專門的二進位制或十六進位制的編輯器才可編輯,修改比較複雜。

Linux系統的應用場景

Linux系統目前在伺服器、桌面、移動嵌入式以及雲端計算、大資料領域大放異彩。

  • 淘寶、天貓、京東、順豐、支付寶等電商、物流站點的應用都部署在基於Linux系統的PC伺服器上
  • Ubuntu Desktop, Open SUSE,Deepin可以滿足日常辦公的基本使用
  • Android 是基於Linux核心發展而來
  • 網際網路公司的雲端計算、大資料平臺都是基於Linux系統構建
  • 阿里雲、騰訊雲、百度雲、華為雲等雲伺服器的作業系統絕大部分都是Linux