Linux

我可以在機器上沒有安裝作業系統的情況下執行 Busybox 嗎?

  • February 12, 2020

我知道 Busybox 是一個包含一組 unix 命令/實用程序的單個執行檔。

我的問題是我們是否需要一個底層作業系統來執行它,或者它可以直接在沒有核心的機器上執行。如果它可以在沒有顯式作業系統的情況下執行,誰來處理 CPU 調度、使用者和角色管理等事情。如果它需要一個底層作業系統,它怎麼能與平台無關?

請幫助我了解我在這裡缺少什麼?

編輯:

所以混淆的根源是,我讀到它安裝在小型嵌入式設備上。我的結論是這些設備應該安裝一些輕量級作業系統,在這些作業系統上我們可以使用busybox添加基本的unix功能。

同樣,上面的平台無關,我的意思是底層作業系統無關。例如,我可以在 Windows 上執行 BusyBox,如果可以,那怎麼可能?

如果它可以在沒有顯式作業系統的情況下執行,誰將處理 CPU 調度、使用者和角色管理等內容。

那應該已經回答了您的第一個問題:這些是核心所做的事情,沒有核心,依賴這些功能的程序就無法執行,包括busybox。

至於與平台無關的核心,說起來容易做起來難。我假設平台是指處理器架構,這意味著您想要一個執行檔,該執行檔在任何處理器上執行時都沒有任何虛擬機,這是不可能的。

最接近您想要的東西可能是一些極簡的 linux 發行版,例如 core linux(只有 11 MB)。

如果您在啟動後不想進行任何使用者互動,您甚至可以從作業系統中扔掉更多東西,但我假設您至少需要一個終端,以便您可以與系統進行互動。


所以混淆的根源是,我讀到它安裝在小型嵌入式設備上。我的結論是這些設備應該安裝一些輕量級作業系統,在這些作業系統上我們可以使用busybox添加基本的unix功能。

這個問題有幾個方面:

  • 什麼是嵌入式設備?如今,您可以輕鬆地在樹莓派上執行完整的 linux 發行版,從技術上講,它仍然是一個“小型嵌入式設備”,您顯然可以在其上執行 busybox 以使其更輕量級。我懷疑這就是那句話所指的。
  • 您可能會修改busybox以在沒有核心的情況下執行;一項任務的難度取決於它對核心呼叫的依賴程度以及您是否希望它的所有功能都可以使用,或者只是其中的一部分。
  • 它甚至有多大意義?Busybox 實現了 POSIX 標準中描述的幾個程序,這些程序旨在與類 unix 核心結合使用。例如,chroot當您甚至沒有文件系統,更不用說根目錄時,有什麼意義呢?

同樣,上面的平台無關,我的意思是底層作業系統無關。例如,我可以在 Windows 上執行 BusyBox,如果可以,那怎麼可能?

是但不是;Windows 為程序與核心互動提供了不同的 API。它還對執行檔使用不同的二進制格式。如果沒有某種兼容層,就無法在 Windows 上執行busybox。

通常你會為此使用類似 mingw 的東西,它本質上以這樣一種方式實現 linux API,即它們被重定向到引擎蓋下的相應 Windows API。這允許您編譯和執行簡單的 linux 程序,而無需對原始碼進行任何重大修改。

從 Windows 10 開始,微軟自己也提供了一個這樣的兼容層,即適用於 Linux 的 Windows 子系統,afaik。現在在 Windows中執行整個虛擬化 linux 核心以“本地”執行 linux 應用程序。

這取決於作業系統的定義:

它需要核心,但不需要作業系統的其餘部分。核心(Linux)是作業系統的較小部分(Gnu/Linux,在大多數使用 Linux 的類 Unix 系統中)。您可以使用busybox/Linux:這只是busybox 和Linux(沒有Gnu,什麼都沒有)。

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