在嵌入式系統中,由於裝置的資源限制,需要開發人員尋找一種輕量、小型且使用廣泛的工具集。而 BusyBox 就是這樣一個在嵌入式系統中非常實用的工具集。本文將介紹如何在 Ubuntu 22.04 平臺上使用交叉編譯器編譯 BusyBox,並將其整合到嵌入式系統中。
什麼是 BusyBox 工具集?
BusyBox 是一個嵌入式 Linux 工具集,它可以在嵌入式裝置上執行,並提供大量常見命令和實用工具,例如 ls、awk、sed、find、tar 等。BusyBox 被設計成一個小型且高度可定製的工具集,具有極小的二進位制檔案大小和最小的記憶體佔用,適合嵌入式裝置使用。大多數情況下,嵌入式系統都將 BusyBox 作為可執行檔案,以避免動態連結的負載。
編譯 BusyBox
在 Ubuntu 22.04 平臺上,您需要使用交叉編譯器來編譯 BusyBox。交叉編譯器與目標系統的 CPU 架構無關。以下是有關如何在 Ubuntu 22.04 平臺上安裝交叉編譯器的步驟:
- 在終端中輸入以下命令,以安裝交叉編譯器:
sudo apt-get update && sudo apt-get install build-essential gcc-arm-linux-gnueabi
- 獲取 BusyBox 的原始碼,並解壓:
wget https://busybox.net/downloads/busybox-x.yy.z.tar.bz2
tar xvf busybox-x.yy.z.tar.bz2
- 在解壓後的 BusyBox 原始檔目錄中,輸入以下命令:
make menuconfig
-
按照提示,在 BusyBox 的配置選單中選擇需要啟用的命令、去除不需要的命令、配置靜態或動態連結等選項。
-
儲存配置並退出,輸入以下命令進行編譯:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
- 編譯完後,在 BusyBox 原始碼目錄中會生成一個
busybox
可執行檔案。
將 BusyBox 整合到嵌入式系統中
完成 BusyBox 的編譯之後,就可以將其整合到目標嵌入式系統中了。具體步驟如下:
-
將編譯好的
busybox
可執行檔案從 Ubuntu 系統中複製到目標嵌入式系統的根檔案系統中。 -
建立 BusyBox 備用目錄:
mkdir -pv /opt/busybox
cd /opt/busybox
- 建立 BusyBox 必要的目錄和連結:
mkdir -pv bin etc proc sys usr/bin usr/sbin usr/share/udhcpc
ln -sv usr/bin bin
-
將
busybox
可執行檔案複製到/opt/busybox/bin
目錄。 -
然後,在
/opt/busybox
目錄中執行以下命令:
cd /opt/busybox
cp -v /opt/busybox/bin/busybox .
ln -sv busybox init
- 接下來,在目標嵌入式系統的啟動指令碼中新增以下語句:
export PATH=$PATH:/opt/busybox/bin
這樣,重啟嵌入式裝置後,就可以在其中訪問 BusyBox 所有的命令和工具。
結論
本文介紹了 BusyBox 工具集的基本概念和編譯 Busybox 的方法。在瞭解了編譯後的可執行檔案的位置,即如何將其整合到嵌入式系統之後,開發人員可以更好地使用 BusyBox 以及嵌入式裝置上其他的工具。希望本文內容能夠對讀者有所幫助。