Learning Objectives
- 說出 Unix、GNU、MINIX 與 Linux 核心的關係,以及 Linux 誕生的經過
- 分辨「Linux 核心」與「Linux 發行版本」,用 uname 與 /etc/os-release 分別查看
- 說明 GPL 的 Copyleft 精神、三個版本的差異,並和 MIT、BSD、Apache 等授權比較
- 列出 Linux 的特性、優點與缺點,並和 macOS、Windows 比較
你其實每天都在用 Linux
Linux 是一套開放原始碼的作業系統核心。你可能沒有在電腦上裝過它,但每天都會用到:
| 領域 | 例子 |
|---|---|
| 網際網路服務 | 網站、電子郵件、DNS、檔案伺服器;大型網站的伺服器多半跑 Linux |
| 公司與學校內網 | NFS 檔案伺服器、身分認證伺服器、防火牆、入侵偵測系統 |
| 嵌入式系統 | 無線網路路由器、智慧電視、物聯網裝置;Android 手機的核心也是 Linux |
| 雲端與資料分析 | 雲端虛擬機、容器、大數據叢集(例如 Hadoop)、AI 訓練用的運算主機 |
這一課先回答三個問題:Linux 從哪裡來?它的授權(GPL)是什麼意思?為什麼這麼多地方選擇 Linux?
Linux 的由來:從 Unix 到 Linux
Linux 不是憑空出現的,它站在幾個前人的成果上:
| 年份 | 事件 |
|---|---|
| 1969 | Ken Thompson 與 Dennis Ritchie 在 AT&T 貝爾實驗室開發 Unix,後來成為許多作業系統的共同祖先 |
| 1983 | Richard Stallman 發起 GNU 計畫,目標是寫出一套自由的類 Unix 作業系統;編譯器 GCC、Shell 程式 bash 等工具都來自這個計畫 |
| 1987 | Andrew S. Tanenbaum 發表 MINIX,一套給教學用的類 Unix 系統 |
| 1991 年 8 月 25 日 | 芬蘭赫爾辛基大學的學生 Linus Torvalds 在 Usenet 的 comp.os.minix 討論群發文,說自己正在為 386/486 電腦寫一套「只是興趣、不會像 GNU 那麼大、那麼專業」的免費作業系統 |
| 1991 年 9 月 | 第一個版本 0.01 放上赫爾辛基理工大學的 FTP 伺服器 |
| 1992 年 1 月 | 0.12 版的發行說明宣布改用 GNU GPL 授權 |
| 1994 年 3 月 | Linux 1.0 發布 |
| 1996 年 | 企鵝 Tux 成為 Linux 的吉祥物,由 Larry Ewing 繪製 |
名字的由來:Torvalds 原本想取名 Freax(free+freak+Unix 的 x)。負責 FTP 伺服器的 Ari Lemmke 沒有問過他,
就把放程式的目錄命名為 linux,Torvalds 後來也接受了這個名字。
核心與發行版本
嚴格來說,Linux 指的是核心(kernel):管理 CPU、記憶體、硬碟與各種裝置的那一層,是作業系統與硬體溝通的橋樑。 你實際使用的系統還需要 Shell、指令工具、套件管理程式、安裝程式與桌面環境,其中很多來自 GNU 計畫。 把核心和這些軟體組合在一起、測試好、讓人可以安裝的成品,叫做發行版本(distribution),例如 Ubuntu、Debian、Fedora。 下一課會詳細介紹發行版本。
從輸出看出核心與發行版本
剛才的指令分成兩類:
| 指令 | 查什麼 | 範例輸出 |
|---|---|---|
uname -r |
核心版本 | 6.8.0-45-generic |
uname -a |
核心的完整資訊:核心名稱、主機名稱、版本、硬體架構 | Linux ubuntu 6.8.0-45-generic … x86_64 GNU/Linux |
cat /etc/os-release |
發行版本資訊(每個發行版本都有這個檔案) | PRETTY_NAME="Ubuntu 24.04.1 LTS"、VERSION_CODENAME=noble |
lsb_release -a |
發行版本資訊 | Description: Ubuntu 24.04.1 LTS |
hostnamectl |
主機名稱,加上作業系統、核心與是否在虛擬機裡 | Operating System: Ubuntu 24.04.1 LTS |
核心版本 6.8 和發行版本 24.04 是兩組不同的數字:同一個核心版本可以被不同的發行版本採用,同一個發行版本在更新後也會換成較新的核心。
ls --version 顯示 GNU coreutils,dpkg -l coreutils 的說明是 GNU core utilities:ls、cp、mv 這些每天用的指令,來自 GNU 計畫。
uname -a 結尾的 GNU/Linux 就是在說這件事:GNU 的工具加上 Linux 核心。
GPL:GNU 通用公共授權條款
GPL(GNU General Public License,GNU 通用公共授權條款)由 Richard Stallman 撰寫,用著作權法來保障使用者的四項自由:
- 依自己的意願執行軟體
- 研究並修改軟體,讓它符合自己的需求(所以必須能取得原始碼)
- 複製軟體分享給需要的人
- 散布自己修改過的版本
這種「用著作權確保軟體永遠保持自由」的做法叫做 Copyleft(相對於 Copyright):任何人散布 GPL 軟體或它的修改版, 都必須同樣以 GPL 授權並提供原始碼,不能把它變成封閉的軟體。
| 版本 | 發布時間 | 重點 |
|---|---|---|
| GPL v1 | 1989 年 2 月 | 散布軟體時必須提供人看得懂的原始碼 |
| GPL v2 | 1991 年 6 月 | 加入條款,防止有人用專利限制使用者在 GPL 下的自由;可加上「v2 或之後的任何版本」聲明,允許改用新版 |
| GPL v3 | 2007 年 6 月 29 日 | 處理數位版權管理(DRM)與硬體鎖住修改版軟體的問題,並提高和其他開放原始碼授權的相容性 |
Linux 核心採用 GPL v2,而且沒有加上「或之後的版本」,所以不會自動改成 v3。
常見的開放原始碼授權
| 授權 | 類型 | 特點 |
|---|---|---|
| GPL | Copyleft | 修改後散布必須同樣用 GPL 並公開原始碼 |
| LGPL | 較寬鬆的 Copyleft | 多用於函式庫:其他程式只是連結使用時,不必整個改用 GPL |
| MIT License | 寬鬆授權 | 保留著作權聲明即可自由使用、修改、商用,也可以不公開原始碼 |
| BSD License | 寬鬆授權 | 與 MIT 類似,FreeBSD 就是採用這類授權 |
| Apache License 2.0 | 寬鬆授權 | 與 MIT 類似,另外明文處理專利授權 |
寬鬆授權(permissive)讓別人可以把程式碼用在封閉的商業軟體裡;Copyleft 則要求衍生作品維持開放。 兩種做法各有支持者,選擇授權時要看你希望程式碼被怎麼使用。
想一想:Linux 的由來與授權
嚴格來說,「Linux」這個名稱指的是什麼?
執行 uname -r 得到 6.8.0-45-generic,這個數字代表什麼?
你修改了一個 GPL 授權的程式並散布給別人,依照 GPL 你必須怎麼做?
為什麼選 Linux:特性、優點與缺點
特性
- 支援 x86、ARM 等多種硬體架構,從伺服器到樹莓派、手機都能執行
- 多人多工:多位使用者可以同時登入,各自執行多個程式
- 大多數發行版本可以免費取得;需要商業支援時,可以向 Red Hat、Canonical 等公司付費購買
- 套件持續更新維護,文件與網路資源豐富
優點
- 伺服器版可以直接用於商業環境,不需要另外購買作業系統授權(付費的企業版除外)
- 社群活躍,問題多半查得到前人的解法
- 核心與套件升級方便,可以依需求挑選合適的發行版本
- 舊電腦裝上輕量的發行版本,也能繼續使用
缺點
- 部分商業軟體(例如某些設計軟體、遊戲)沒有 Linux 版
- 遇到問題常要自己查資料除錯
- 發行版本眾多,初學者不容易選擇
- 部分硬體的驅動程式由社群自行開發,支援程度不一
投影片提到「Linux 沒有病毒」,比較精確的說法是:針對桌面 Linux 的惡意程式比 Windows 少,加上權限設計嚴格, 一般使用者不容易不小心破壞系統。但 Linux 伺服器仍然是攻擊目標,照樣要更新系統、設定防火牆、使用強密碼或 SSH 金鑰。
macOS、Windows、Linux 比較
| macOS | Windows | Linux | |
|---|---|---|---|
| 硬體 | 只能裝在 Apple 的電腦上 | 多數個人電腦 | 從大型伺服器到老舊電腦、樹莓派都能裝 |
| 作業系統授權 | 隨 Apple 電腦提供 | 多數需要購買授權 | 多數免費(企業版付費) |
| 應用程式 | 部分需付費 | 部分需付費,選擇最多 | 多數免費,商業軟體較少 |
| 介面自訂 | 中等 | 較低 | 很高,可以換整個桌面環境 |
| 技術支援 | 官方付費支援 | 官方付費支援 | 社群免費支援;企業版有付費支援 |
微軟現在也大量使用 Linux:Azure 雲端提供各種 Linux 虛擬機,Windows 內建的 WSL 可以直接執行 Linux(第 00 課介紹過)。
想一想:授權與 Linux 的特性
下列哪一種授權允許別人把你的程式碼用在不公開原始碼的商業軟體裡?
關於 Linux 核心的授權,下列何者正確?
uname -a 的輸出結尾是 GNU/Linux,這反映了什麼?
重點精華回顧
- Unix(1969)→ GNU 計畫(1983)→ MINIX(1987)→ Linux(1991 年 Linus Torvalds 發文、9 月發布 0.01)→ 1994 年 1.0。
- 名字來自 FTP 管理員 Ari Lemmke 取的目錄名稱;吉祥物是企鵝 Tux。
- Linux 是核心;核心加上 GNU 工具、套件管理與安裝程式,才是 Ubuntu 這樣的發行版本。
uname -r看核心版本;cat /etc/os-release、lsb_release -a、hostnamectl看發行版本。- GPL 以 Copyleft 保障執行、修改、複製、散布四項自由;v1 1989、v2 1991、v3 2007;Linux 核心是 GPL v2。
- MIT、BSD、Apache 屬寬鬆授權,衍生作品可以不公開原始碼;LGPL 多用於函式庫。
- Linux 硬體相容性高、多人多工、多數免費、社群資源多;缺點是部分商業軟體沒有 Linux 版、問題常要自己除錯。