資料介紹
BusyBox 的誕生
BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上創建一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。一張軟盤可以保存大約 1.4-1.7MB 的內容,因此這里沒有多少空間留給 Linux 內核以及相關的用戶應用程序使用。
BusyBox 許可證
BusyBox 是按照 GNU General Public License(GPL)許可證發行的。這意味著如果我們在一個項目中使用 BusyBox,就必須遵守這個許可證。我們可以在 BusyBox Web 站點(請參看本文后面參考資料一節的內容)上看到這個許可證的內容。BusyBox 團隊似乎正忙于監視違反這個許可證的情況。實際上,他們維護了一個 “Hall of Shame” 頁面來說明違反者的情況。
BusyBox 揭露了這樣一個事實:很多標準 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目錄中搜索文件的代碼。當這些工具被合并到一個可執行程序中時,它們就可以共享這些相同的元素,這樣可以產生更小的可執行程序。實際上, BusyBox 可以將大約 3.5MB 的工具包裝成大約 200KB 大小。這就為可引導的磁盤和使用 Linux 的嵌入式設備提供了更多功能。我們可以對 2.4 和 2.6 版本的 Linux 內核使用 BusyBox。
BusyBox 是如何工作的?
為了讓一個可執行程序看起來就像是很多可執行程序一樣,BusyBox 為傳遞給 C 的 main 函數的參數開發了一個很少使用的特性。回想一下 C 語言的 main 函數的定義如下:
POSIX 環境盡管 BusyBox 的目標是提供一個相當完整的 POSIX(可移植操作系統接口)環境,這是一個期望,而不是一種需求。這些工具雖然并不完整,但是它們提供了我們期望的主要功能。
清單 1. C 的 main 函數
int main( int argc, char *argv[] )
在這個定義中,argc是傳遞進來的參數的個數(參數數量),而argv是一個字符串數組,代表從命令行傳遞進來的參數(參數向量)。argv的索引 0 是從命令行調用的程序名。
清單 2 給出的這個簡單 C 程序展示了 BusyBox 的調用。它只簡單地打印argv向量的內容。
清單 2. BusyBox 使用 argv[0] 來確定調用哪個應用程序
// test.c
#include 《stdio.h》
int main( int argc, char *argv[] )
{
int i;
for (i = 0 ; i 《 argc ; i++) {
printf(“argv[%d] = %s\n”, i, argv[i]);
}
return 0;
}
調用這個程序會顯示所調用的第一個參數是該程序的名字。我們可以對這個可執行程序重新進行命名,此時再調用就會得到該程序的新名字。另外,我們可以創建一個到可執行程序的符號鏈接,在執行這個符號鏈接時,就可以看到這個符號鏈接的名字。
清單 3. 在使用新命令更新 BusyBox 之后的命令測試
$ gcc -Wall -o test test.c
$ 。/test arg1 arg2
argv[0] = 。/test
argv[1] = arg1
argv[2] = arg2
$ mv test newtest
$ 。/newtest arg1
argv[0] = 。/newtest
argv[1] = arg1
$ ln -s newtest linktest
$ 。/linktest arg
argv[0] = 。/linktest
argv[1] = arg
BusyBox 使用了符號鏈接以便使一個可執行程序看起來像很多程序一樣。對于 BusyBox 中包含的每個工具來說,都會這樣創建一個符號鏈接,這樣就可以使用這些符號鏈接來調用 BusyBox 了。BusyBox 然后可以通過argv[0]來調用內部工具。
配置并編譯 BusyBox
我們可以從 BusyBox 的 Web 站點上下載最新版本的 BusyBox(請參看參考資料一節的內容)。與大部分開放源碼程序一樣,它是以一個壓縮的 tarball 形式發布的,我們可以使用清單 4 給出的命令將其轉換成源代碼樹。(如果我們下載的版本不是 1.1.1,那就請在這個命令中使用適當的版本號以及特定于這個版本號的命令。)
清單 4. 展開 BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上創建一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。一張軟盤可以保存大約 1.4-1.7MB 的內容,因此這里沒有多少空間留給 Linux 內核以及相關的用戶應用程序使用。
BusyBox 是按照 GNU General Public License(GPL)許可證發行的。這意味著如果我們在一個項目中使用 BusyBox,就必須遵守這個許可證。我們可以在 BusyBox Web 站點(請參看本文后面參考資料一節的內容)上看到這個許可證的內容。BusyBox 團隊似乎正忙于監視違反這個許可證的情況。實際上,他們維護了一個 “Hall of Shame” 頁面來說明違反者的情況。
BusyBox 揭露了這樣一個事實:很多標準 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目錄中搜索文件的代碼。當這些工具被合并到一個可執行程序中時,它們就可以共享這些相同的元素,這樣可以產生更小的可執行程序。實際上, BusyBox 可以將大約 3.5MB 的工具包裝成大約 200KB 大小。這就為可引導的磁盤和使用 Linux 的嵌入式設備提供了更多功能。我們可以對 2.4 和 2.6 版本的 Linux 內核使用 BusyBox。
BusyBox 是如何工作的?
為了讓一個可執行程序看起來就像是很多可執行程序一樣,BusyBox 為傳遞給 C 的 main 函數的參數開發了一個很少使用的特性。回想一下 C 語言的 main 函數的定義如下:
清單 1. C 的 main 函數
int main( int argc, char *argv[] )
在這個定義中,argc是傳遞進來的參數的個數(參數數量),而argv是一個字符串數組,代表從命令行傳遞進來的參數(參數向量)。argv的索引 0 是從命令行調用的程序名。
清單 2 給出的這個簡單 C 程序展示了 BusyBox 的調用。它只簡單地打印argv向量的內容。
清單 2. BusyBox 使用 argv[0] 來確定調用哪個應用程序
// test.c
#include 《stdio.h》
int main( int argc, char *argv[] )
{
int i;
for (i = 0 ; i 《 argc ; i++) {
printf(“argv[%d] = %s\n”, i, argv[i]);
}
return 0;
}
調用這個程序會顯示所調用的第一個參數是該程序的名字。我們可以對這個可執行程序重新進行命名,此時再調用就會得到該程序的新名字。另外,我們可以創建一個到可執行程序的符號鏈接,在執行這個符號鏈接時,就可以看到這個符號鏈接的名字。
清單 3. 在使用新命令更新 BusyBox 之后的命令測試
$ gcc -Wall -o test test.c
$ 。/test arg1 arg2
argv[0] = 。/test
argv[1] = arg1
argv[2] = arg2
$ mv test newtest
$ 。/newtest arg1
argv[0] = 。/newtest
argv[1] = arg1
$ ln -s newtest linktest
$ 。/linktest arg
argv[0] = 。/linktest
argv[1] = arg
BusyBox 使用了符號鏈接以便使一個可執行程序看起來像很多程序一樣。對于 BusyBox 中包含的每個工具來說,都會這樣創建一個符號鏈接,這樣就可以使用這些符號鏈接來調用 BusyBox 了。BusyBox 然后可以通過argv[0]來調用內部工具。
配置并編譯 BusyBox
我們可以從 BusyBox 的 Web 站點上下載最新版本的 BusyBox(請參看參考資料一節的內容)。與大部分開放源碼程序一樣,它是以一個壓縮的 tarball 形式發布的,我們可以使用清單 4 給出的命令將其轉換成源代碼樹。(如果我們下載的版本不是 1.1.1,那就請在這個命令中使用適當的版本號以及特定于這個版本號的命令。)
清單 4. 展開 BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 如何把Linux工具里的“軍刀”BusyBox移植到RT-Thread Smart?
- 第六課 數控機床電路詳解 0次下載
- 詳解SUNLORD順絡LED照明 18次下載
- 開關電源的工作原理及電路組成詳解 285次下載
- 開關電源原理及輸入電路詳解 126次下載
- Linux系統中EXP命令詳解質量匯總 1次下載
- Power BI服務所包含的信息及數據詳解 0次下載
- BLE實驗詳解之藍牙溫度計設計方案 25次下載
- BLE實驗詳解之藍牙血壓計設計方案 39次下載
- 自動控制原理習題詳解第二版下載 0次下載
- 《Python開發技術詳解》-隨書附帶程序 0次下載
- 實驗五 基于busybox的根文件系統制作實驗-2016 10次下載
- 嵌入式MostaVistaLinux操作系統的BusyBox構建 0次下載
- busybox-1.23.2 1次下載
- 用Busybox制作嵌入式Linux根文件系統
- 詳解MySQL多實例部署 1.1k次閱讀
- 全志Tina Linux下busybox init簡介 1.9k次閱讀
- Linux輕量級工具集合Busybox的特點和使用 2.4k次閱讀
- kafka相關命令詳解 1.9k次閱讀
- BGA和CSP封裝技術詳解 4.7k次閱讀
- STM32庫函數SystemInit()詳解 5.7k次閱讀
- 無功補償原理基礎知識詳解 1.6k次閱讀
- WAT技術詳解 1.8k次閱讀
- 物理設計中的問題詳解 1.7k次閱讀
- LC振蕩電路原理詳解 4.1k次閱讀
- 積分與微分電路原理詳解 3.2k次閱讀
- 詳解String對象的內存分配 2.8k次閱讀
- 在QEMU上用Busybox模擬ARM文件系統的步驟 4.1k次閱讀
- Prelink的交叉編譯和使用詳解 4.5k次閱讀
- DNA螺旋臺燈制作詳解 4.4k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費
- 4丹佛斯2800系列變頻器說明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關型降壓3.5A單節鋰電池充電管理電路技術手冊
- 0.74 MB | 1次下載 | 免費
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測距模塊產品手冊
- 0.43 MB | 1次下載 | 免費
- 8SDFM 激光測距模塊模組手冊
- 0.54 MB | 1次下載 | 免費
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場分析及創新應用
- 3.11 MB | 43次下載 | 免費
- 3RV1126B系列開發板產品資料
- 4.19 MB | 18次下載 | 免費
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發板 四核異構、3路千兆網,賦能多元化工業場景
- 3.05 MB | 12次下載 | 免費
- 6【開源】60余套STM32單片機、嵌入式Linux、物聯網、人工智能項目案例及入門學習資源包
- 10.55 MB | 8次下載 | 免費
- 7冷柜-電氣控制系統講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191448次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論