跳至內容

Unix/BSD 指南/簡介

來自華夏公益教科書

本頁概述了 *BSD 核心和系統的關鍵特性,尤其是與其他類 Unix 系統的比較。目前,本頁涵蓋了 *BSD 的免費變體,尤其是 DragonFly BSD、FreeBSD、NetBSD 和 OpenBSD。也存在非免費變體。

華夏公益教科書,作業系統中立視角,在其伯克利軟體發行版章節中概述了 BSD。

  • *BSD 系統是 AT&T Unix 的後代(儘管非免費的 Unix 程式碼已被移除),因此它們比 GNU/Linux 更像 Unix。AT&T 以低廉的價格將程式碼授權給了大學,包括伯克利,並在那裡開發了 TCP/IP 等重大增強功能。伯克利釋出的最後一個 BSD 版本移除了非免費程式碼,以便更多人可以使用它。如今,*BSD 專案保留了它們的血統,在名稱末尾加上 BSD。
  • 四大 *BSD 系統是自由軟體開源軟體。雖然 *BSD 使用了一些受版權保護的 GNU 程式,但大部分 *BSD不使用版權保護,這使每個人都可以自由地建立 *BSD 的非免費版本,並分發不含原始碼的二進位制檔案。然而,*BSD 的某些部分在許可證中包含額外的條款,這些條款讓一些人感到困擾,並且在 GNU 許可證中不存在。特別是,對“廣告條款”(要求在某些廣告上標記)的厭惡程度很高,以至於加州大學理事會將其從他們的許可證中刪除;其他一些 *BSD 版權持有者仍然使用該條款。
  • 核心系統,包括核心和使用者空間,在一個 CVS 樹中維護。這與 OpenSolaris 和 OpenDarwin 類似,但 GNU/Linux 程式和核心位於不同的樹中,並且非免費類 Unix 系統的開發樹通常不公開。比較
  • *BSD 原始碼儲存在/usr/src/中,核心儲存在/usr/src/sys/中。*BSD 核心和系統程式高度整合,因此必須一起升級。
  • 回想一下,核心是程式和硬體之間的介面。類 Unix 核心提供裝置驅動程式和網路支援,並允許多個使用者和程式共享系統。
  • *BSD 核心(通常安裝在“/bsd/”中)是單片核心,這意味著它是一個程式,位於一個記憶體定址空間中。因此,核心避免在自身各個部分之間形成和傳送訊息。
    • DragonFly BSD 正在改變其中的一些部分。
    • 原始的 AT&T Unix 和 Linux 也是單片核心,而 mkLinux 和 Mac OS X 的核心是模組化的。
  • 核心實際上是原始的 AT&T Unix,其所有檔案都被替換。BSD 大學專案新增或替換了如此多的東西(VAX 移植、網路功能、快速檔案系統等),以至於 *BSD 專案可以獲取免費的部分並生成完全免費的核心,而無需 Unix 許可證。這帶來的一個後果是,BSD 核心的結構與也源自 AT&T Unix 的商業 Unix 核心類似。
  • 核心包含一個“安全級別”功能,該功能試圖在引導過程中的某個時刻永久限制所有使用者(包括 root,超級使用者)可以執行的操作。
  • 核心引導訊息(在所有 Unix 系統上使用dmesg也可以看到)是組織化的,並顯示每個裝置在哪裡被檢測到。
    • 相反,Linux 驅動程式似乎會輸出任何它們喜歡的引導訊息。在 Linux 上,安裝和檢查“/proc”和“/sys”,或者使用“lspci”等工具,是一種更好的策略。

使用者空間

[編輯 | 編輯原始碼]
  • 回想一下,使用者空間包含所有位於核心之上的軟體。本節描述基本系統中包含的使用者空間。
  • 程式在/bin//sbin/是靜態連結的。
    • 這是因為/usr/可能沒有掛載,因此無法使用共享庫/usr/lib/libc.so
    • 靜態連結是指每個程式都位於一個檔案中,無需其他檔案(共享庫)包含程式共享的程式碼。庫程式碼被複制到程式中。
  • 基本系統中的主要文字編輯器是“vi”。這是與 BSD 一起提供的 nvi,最終是原始的 vi,而不是其他 vi 實現,例如 vim。實際上,nvi 是原始 vi 的克隆。克隆是必要的,以移除一些非免費的 Unix 程式碼。
    • OpenBSD 還包含“mg”,一個類似於 Emacs 17 的編輯器,但沒有使用任何免費但受版權保護的 GNU 程式碼。FreeBSD 包含“ee”,即“easy editor”,與nanopico(兩者都在埠樹中,儘管 nano 是自由軟體,而 pico 不是)有一些相似之處。
  • 存在一個埠樹或軟體包樹,最初來自 FreeBSD。它包含 Makefiles,可以自動執行 *BSD 軟體的下載、提取、修補和構建。這是安裝不在基本系統中的軟體的主要方式。
    • 在 NetBSD 上,它被稱為pkgsrc。pkgsrc 樹的一個獨特功能是它也可以在其他作業系統上執行。DragonFly BSD 也使用 pkgsrc。
    • 因此,安裝程式通常只需兩個簡單的步驟。首先,輸入一個“cd”命令,進入包含埠的目錄(例如,/usr/ports/games/nethack/)。然後,輸入一個“make install”命令,等待一切完成。
    • 構建軟體需要很長時間,因此許多人更喜歡使用二進位制軟體包,而不是“make install”。
  • 系統編譯器是 GNU 編譯器集合 (GCC),包含 C、C++、Objective C 和 Fortran 77。
    • 預設情況下,gcc 不會在/usr/local/中查詢標頭檔案和庫;它只會查詢基本系統。
    • 基本系統可以使用 gcc 自行重建。
華夏公益教科書