[Linux] 認識Linux作業系統

2024 年 2 月 3 日
文章摘要
FakeGPT
加載中...
此內容由人工不智慧生成。

開放原始碼、自由軟體與 GNU

在講到這部分之前,我們首先需要明白幾個基本的概念:

  • 自由軟體(Free Software):根据自由软件基金会对其的定义,是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。
  • 開放原始碼(Open Source):開放原始碼是一種在電腦程式出品前和開發中提供其內部程式碼的做法。Open Source 是一種行爲,而不是一個結果。
  • GNU:GNU 是一個自由的作業系統,其內容軟體完全以 GPL 方式釋出。這個作業系統是 GNU 計劃的主要目標,名稱來自 GNU's Not Unix! 的遞迴縮寫,因為 GNU 的設計類似 Unix,但它不包含具著作權的 Unix 代碼。GNU 的創始人,理查·馬修·斯托曼,將 GNU 視為「達成社會目的技術方法」。
  • GNU 軟體:即被設計爲可以在 GNU 上運行的自由軟體。在 GNU 尚未完成的情況下,GNU 軟體一般代指開源軟體或自由軟體。
  • GPL:GNU 通用公共授權條款。即自由軟體的官方法律文書。任何軟體,如果採用該授權條款發佈,即代表該軟體爲自由軟體,在釋出軟體本身的同時,也必須釋出軟體的原始碼,並將原始碼的修改、發佈、獲利等一系列權限同時開放出去。

自由軟體發展簡史

  1. 在 1950~1960年代,幾乎所有軟體都是由從事學術的研究人員寫作開發的,並通常公有領域軟體釋出。由於軟體需要經常性的進行修改,如:為了適配新的作業系統或硬體、修正錯誤及增加新功能,軟體的原始碼一般都會與軟體一起提供。

  2. 1960年代末,出現了一些變化,作業系統和編譯器出現的同時,軟體生產費用相對於硬體大幅增加。 正在發展的軟體產業開始和硬體製造商的捆綁軟體進行競爭;因為後者的開發費用被包含於硬體費用中,所以租借的機器在沒有支付軟體費用的時候依舊需要軟體的支援,而一些能夠更好的滿足自己需要的使用者不希望因為硬體商開發捆綁軟體導致硬體費用上升。在 1969年1月17日的美利堅合眾國對 IBM 的反壟斷訴訟中,美國政府指控捆綁軟體是反競爭的。與此同時,雖然有一些軟體依舊免費提供,但越來越多的軟體只在限制性的授權條款下銷售。

  3. 1980年代,UNIX 的使用變得更加廣泛,而 AT&T 在此時停止了 UNIX 的免費分發,並且開始為系統修補程式收費。因為切換到一個新的構架相當困難,大多數研究人員只得選擇支付商業授權條款。

  4. 1983年,理察·斯托曼 發起了GNU計劃以編寫一可以不受限制使用原始碼的作業系統。標誌着自由軟體運動的正式開始。在啟動這項運動後,斯托曼使用了已經存在的術語「free software」(自由軟體)。在 1986年,為了推廣《自由軟體定義》,他建立了自由軟體基金會。

Richard Matthew Stallman

  1. 1989年,該基金會釋出了第一版的GNU通用公眾授權條款(GPL),並在 1991年釋出了進行了少量更新的第二版。GPL的出現標誌着自由軟體運動開始擁有了法律意義上的支持。

GPL

自由軟體之討論

如果簡單來講,所謂自由軟體,就是“著作權屬左”(Copyleft)或“放棄著作權”的一類軟體的統稱。該類軟體在獲得軟體本身拷貝的同時,也會同時獲得軟體的原始碼的拷貝。

根據 GPL 的規定,對於採用 GPL 授權條款發佈的自由軟體,任何人均可獲得該軟體的原始碼,並有權對原始碼進行任意的修改、發佈和獲利。但是,經過修改之後重新發佈的自由軟體,也必須採用 GPL 授權條款釋出,即自由軟體的下游軟體必須是自由軟體,以將自由軟體的精神傳遞下去。

應當明白的是,自由軟體並不反對軟體的商業化,也並不反對軟體作者透過自由軟體獲利。自由不等於免費。自由軟體運動僅反對將軟體原始碼和著作權壟斷的行爲。因爲“自由權利歸衆生”。

自由軟體運動是領域內最偉大的運動,它推動了整個行業的發展。開放原始碼的自由軟體,能夠獲得全世界龐大的程式設計師羣體的幫助,羣策羣力,以使得該軟體獲得更好的發展,達到更大的高度。這遠遠不是一個公司、一個團體的力量所能夠做到的。

同時,自由軟體運動所包含的開放、共享、合作、共贏的精神,是整個行業生生不息的重要精神內核,也是行業的魅力所在。

自由萬歲!

Linux作業系統

作爲一個作業系統,GNU 的核心 Hurd 至今仍然未能夠被開發完成,但是圍繞 Hurd 的一系列 GNU 軟體,例如 GNU 編譯器等則早已經開發完成。因此,這些自由軟體早期依然只能夠運行在專有和封閉的 Unix 作業系統上。

但是在 1991年(民國80年),林納斯·托瓦茲釋出了 Linux 核心,並且允許其他人自由地修改原始碼。當時的協定並非自由軟體協定,但在 1992年2月,托瓦茲使用了 GPL 協定重新釋出了 Linux 的 0.12 版本。

Linus Benedict Torvalds

Linux 核心的出現,補足了 GNU 計劃的最後一塊拼圖,整個自由軟體世界由此變得完整且生機勃勃。

Tux

由於 Linux 核心的開放特性,使得這個核心獲得了來自全球程式設計師的青睞和鼎力相助。而其“版權屬左”的特性,則使得任何人都可以不受限制地獲得、修改、分發、銷售 Linux 的原始碼及其衍生產品。

透過修改 Linux 核心及其衍生產品而發布的作業系統,本質上也是使用 Linux 核心的 Linux 衍生產品,這嚴的作業系統就被稱之為“Linux 發行版”。

例如,著名的 Linux 發行版 Debian 就是基於 Linux 核心修改而來的,而更加著名的發行版 Ubuntu 則是基於 Debian 修改而來。

全世界的 Linux 發行版有非常非常多,有的是直接基於 Linux 核心開發而來,有的則是基於其他發行版。但其最原始的程式碼一直都是開放原始碼的 Linux 核心。

一般情況下,我們習慣將直接基於 Linux 核心的發行版稱為“根發行版”,而根據不同的根發行版,可以將一眾發行版歸類。目前全世界比較流行的發行版大致有如下幾類:

  1. RHEL 系:以 Fedora 為根發行版,基於 Fedora 的發行版有承擔企業級穩定工作的發行版 RedHat Enterprise Linux 和承擔測試工作的 CentOS Stream。這個系列主要由 RedHat 公司所運營。同時民間基於 Fedora 的發行版亦不少見,比較知名的例如從 CentOS 團隊分裂而來的 Rocky Linux,基於 RedHat 開發。該系列的主要特點是由大公司運營,穩定性、安全性都有極大保障,在服務器和專業工作領域大受青睞。

RHEL

  1. Debian 系:以 Debian 為根發行版,基於 Debian 最著名的發行版當數 Ubuntu。自從 CentOS 轉變開發方向,Ubuntu 已經成為新手入門 Linux 的不二之選。基於 Debian 和 Ubuntu 發行的發行版則不計其數,其中不乏甚為優秀者,例如 Hackers 最喜歡的 Kali Linux。中國所謂的“國產作業系統”大多數其實就是 Debian 系的 Linux 發行版,例如著名的 deepin/UOS 和 Kylin 系列。該系列的特點是極致的穩定性。雖然是社區運營,但是由於其軟體測試和迭代的速度十分緩慢,因此極大保證了系統的穩定性。同時該系列發行版非常適合入門,因此有廣泛而龐大的用戶群體。

Debian

  1. Archlinux 系:以 Archlinux 為根發行版,基於 Archlinux 的發行版比較少,比如 manjaro 和 garuda linux 等。該發行版的特點和 Debian 系正好相反,其策略極為激進,預設策略下所有的軟體均保持最新狀態,任何軟體的更新都將在這個系列上第一時間可用。同時,得益於其所運營的用戶導向軟體倉庫 AUR,這個系列的 Linux 發行版可以傻瓜式開箱使用的軟體遠非其他發行版所能比擬。

ArchLinux

  1. SUSE 系:以 OpenSUSE 為根發行版,這個系列的發行版就比較少見了,由德國的 SUSE 公司運營。但是其一些特性確實讓其收穫了一大批擁護者。筆者對這個系列不甚熟悉,不予置評。

SUSE

  1. 其餘 Linux 發行版:其餘直接基於 Linux 核心的 Linux 發行版系列。

本系列入門部落格課程使用的發行版是 Ubuntu。

指令列 or XWindow?

在正式進入 Linux 的世界之前,我們需要明白一件基本的事情。

或許我的讀者們已經習慣了 Windows 或 macOS 下的圖形作業環境。使用滑鼠點點這裡點點那裏就可以完成一些工作。

或許讀者們從未想過,這些圖形究竟來自哪裡。的確,Windows 等已經將“圖形”放到了作業系統的核心中,如果圖形介面崩潰了,它們將跟著崩潰掉。

然而 Linux 作業系統卻不是這樣。

Linux 的核心中是沒有“圖形”這個概念的,其最本質的操作方式就是像上個世紀的電腦那樣,使用鍵盤向電腦裡輸入指令,然後電腦給到操作者反饋。也就是典型的“指令列”。黑底白字,清清楚楚。

然而,如果讀者預先對於不同的 Linux 發行版有所了解,你可能會發現,許多 Linux 發行版似乎是有圖形作業介面的,也一樣可以像 Windows 那樣用滑鼠點來點去。這是為什麼呢?

原來,Linux 的“圖形”環境,事實上可以將其看做一個軟體,就像我們常用的 WhatsApp、Line、TikTok 等等一樣,只是應用軟體而已。當然不可能這樣簡單,整個圖形環境是由非常多的軟體構成的,但它們終究——只是應用軟體,而不是核心,是App,不是Kernel。

一般情況下,我們將圖形環境稱為“XWindow System”。你可以將其看做一系列的軟體。比如顯示協議 X11 和 Wayland,窗口管理器 Mutter、KWin 和 Hyprland 等,以及更大的“桌面環境” Gnome、KDE Plasma 等,它們共同構成了 XWindow System。你可以使用不同的顯示協議、窗口管理器和桌面環境來組裝一套完全不同的 XWindow System,運行在你的發行版上,為你的作業系統提供圖形介面。

那麼回到主線上來,Windows 失掉了圖形環境能否運行?不能,因為之於 Windows,圖形環境是核心的一部分。但是 Linux 失掉了圖形環境能否運行?可以,因為之於 Linux,圖形環境只不過是一系列的應用軟體,就像你的電腦裡安裝的其他應用軟體一樣。刪除掉這些軟體,操作系統沒有理由會崩潰掉。

因此,之於 Linux,我們絕不能夠透過看它“長什麼樣子”就判斷它是哪一個發行版。Linux 有不同的圖形 XWindow 軟體,這些軟體還大多都可以客製化,因此你的圖形作業環境可以長成任何樣子。比如,一個 Ubuntu 和一個 Archlinux 都安裝 Gnome 桌面環境,預設情況下,看起來長得幾乎一模一樣,但仍然否認不了它們是兩個完全不同的發行版的事實。相同的,一個 Ubuntu 安裝 Gnome 和 KDE Plasma 兩種不同的桌面環境,預設情況下長得完全不同,但是顯然它們就是相同的發行版。

對於我們來說,我們要遵守一個基本的原則,“Give up XWindow System.”首先,我們學習使用 Linux,是要學習 Linux 最根本的使用,而不是學習那些我們從小就爛熟於心的東西。其次,由於指令列才是 Linux 真正的操作核心,因此指令列可以解決任何問題,許多圖形環境沒有可能解決的問題,在指令列都可以得到解決。

因此,本課程除了在安裝的時候用到圖形環境,後續的教學都不會涉及任何圖形環境。還請讀者注意。

[Linux] 認識Linux作業系統
https://blog.kynix.tw/posts/1731032889122/
作者
Adrian Chen
建檔時間
2024 年 2 月 3 日
協議
BY-NC-SA 4.0
姓名標示-非商業性-相同方式分享 4.0 國際