Arch-Linux

所有 linux 發行版都有哪些共同的軟體?

  • September 22, 2013

一點背景:

我最近通過一個奇怪的 hack 在 chromebook 上安裝了 Arch Linux,我使用安裝腳本安裝 Ubuntu,然後用 Arch rootfs 覆蓋了 Ubuntu rootfs。我不確定這背後的機制是什麼(例如:https ://wiki.archlinux.org/index.php/Acer_C7_Chromebook )。

在 chroot 進入 rootfs 之前執行的 Linux 部分是否對所有 Linux 發行版都通用(這就是為什麼初始引導對 Arch 和 Ubuntu 都有效的原因)?或者,更籠統地說,哪些軟體在所有 Linux 發行版中是通用的,即定義一個 Linux 發行版?

Q#1:或者,更籠統地說,哪些軟體在所有 Linux 發行版中是通用的,即定義一個 Linux 發行版?

如果我們談論的是 GNU/Linux 發行版,我可以肯定地猜到發行版之間的使用者空間幾乎相同。

如果不使用 GNU Coreutils、GNU Binutils、GNU Bash、GNU Compiler Collection 等,我想不出有什麼辦法。

現在,如果您想要的只是定義 Linux 發行版的組成部分,那麼一句話就是 Linux 核心和使用者空間,即您在該核心之上執行以使其對您有用的一組軟體.

大多數 Linux 發行版還使用某種軟體管理系統,以簡化軟體安裝和配置,例如(通過 Debian 之類的二進制包管理,或 Gentoo 之類的源包管理),偶爾還會使用一些發行版特定的軟體,例如管理工具(我可以想到debconfDebian 或yastOpenSuse)。如果你想要一個更明確的答案,你絕對應該看看Linux From Scratch

Q#2:在 chroot 進入 rootfs 之前執行的 Linux 部分是否對所有 Linux 發行版都通用(這就是為什麼初始啟動對 Arch 和 Ubuntu 都有效的原因)?

是和不是。大多數發行版使用以下步驟的略微修改版本,但不同部分的技術選擇可能不同。例如,不同的引導載入程序(GRUB、Lilo 等)。

摘自 Wikipedia 文章,標題為:Linux 啟動過程

  1. BIOS 執行特定於硬體平台的啟動任務
  2. 一旦硬體被辨識並正確啟動,BIOS 就會從指定的引導設備載入並執行分區引導程式碼,其中包含 Linux 引導載入程序的階段 1。階段 1 載入階段 2(大部分引導載入程式碼)。一些載入器可能會使用中間階段(稱為階段 1.5)來實現這一點,因為如果沒有進一步的程式碼,現代大型磁碟可能無法完全讀取。
  3. 引導載入程序通常會為使用者提供一個可能的引導選項菜單。然後它載入作業系統,解壓到記憶體中,並在呼叫 start_kernel() 之前設置系統功能,例如基本硬體和記憶體分頁。
  4. start_kernel() 然後執行大部分系統設置(中斷、記憶體管理的其餘部分、設備初始化、驅動程序等),然後分別生成空閒程序和調度程序以及 Init 程序(在使用者空間中執行)。
  5. Init 程序根據需要執行設置所有非作業系統服務和結構的腳本,以便創建使用者環境,然後向使用者顯示登錄螢幕。

更多細節

大部分看似複雜的事情(第一階段引導載入程序呼叫第二階段)與 PC 成長的歷史有關,隨著 IBM 和其他公司對各種子系統的設計以及它們如何協同工作的標準化,事情被固定下來。

另一個複雜性來自 Linux 的性質,其中各種組件都是模組化和可互換的。這種模組化設計是有代價的,你在這裡看到的是架構的過度設計。請記住,Linux 可以在多種硬體平台上啟動並支持多種文件系統,因此這部分是所有這些選擇的結果。

引用自:https://unix.stackexchange.com/questions/88620