資料介紹
BusyBox 的誕生
BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤(pán)編寫(xiě)的。其目標(biāo)是在一張軟盤(pán)上創(chuàng)建一個(gè)可引導(dǎo)的 GNU/Linux 系統(tǒng),這可以用作安裝盤(pán)和急救盤(pán)。一張軟盤(pán)可以保存大約 1.4-1.7MB 的內(nèi)容,因此這里沒(méi)有多少空間留給 Linux 內(nèi)核以及相關(guān)的用戶應(yīng)用程序使用。
BusyBox 許可證
BusyBox 是按照 GNU General Public License(GPL)許可證發(fā)行的。這意味著如果我們?cè)谝粋€(gè)項(xiàng)目中使用 BusyBox,就必須遵守這個(gè)許可證。我們可以在 BusyBox Web 站點(diǎn)(請(qǐng)參看本文后面參考資料一節(jié)的內(nèi)容)上看到這個(gè)許可證的內(nèi)容。BusyBox 團(tuán)隊(duì)似乎正忙于監(jiān)視違反這個(gè)許可證的情況。實(shí)際上,他們維護(hù)了一個(gè) “Hall of Shame” 頁(yè)面來(lái)說(shuō)明違反者的情況。
BusyBox 揭露了這樣一個(gè)事實(shí):很多標(biāo)準(zhǔn) Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目錄中搜索文件的代碼。當(dāng)這些工具被合并到一個(gè)可執(zhí)行程序中時(shí),它們就可以共享這些相同的元素,這樣可以產(chǎn)生更小的可執(zhí)行程序。實(shí)際上, BusyBox 可以將大約 3.5MB 的工具包裝成大約 200KB 大小。這就為可引導(dǎo)的磁盤(pán)和使用 Linux 的嵌入式設(shè)備提供了更多功能。我們可以對(duì) 2.4 和 2.6 版本的 Linux 內(nèi)核使用 BusyBox。
BusyBox 是如何工作的?
為了讓一個(gè)可執(zhí)行程序看起來(lái)就像是很多可執(zhí)行程序一樣,BusyBox 為傳遞給 C 的 main 函數(shù)的參數(shù)開(kāi)發(fā)了一個(gè)很少使用的特性?;叵胍幌?C 語(yǔ)言的 main 函數(shù)的定義如下:
POSIX 環(huán)境盡管 BusyBox 的目標(biāo)是提供一個(gè)相當(dāng)完整的 POSIX(可移植操作系統(tǒng)接口)環(huán)境,這是一個(gè)期望,而不是一種需求。這些工具雖然并不完整,但是它們提供了我們期望的主要功能。
清單 1. C 的 main 函數(shù)
int main( int argc, char *argv[] )
在這個(gè)定義中,argc是傳遞進(jìn)來(lái)的參數(shù)的個(gè)數(shù)(參數(shù)數(shù)量),而argv是一個(gè)字符串?dāng)?shù)組,代表從命令行傳遞進(jìn)來(lái)的參數(shù)(參數(shù)向量)。argv的索引 0 是從命令行調(diào)用的程序名。
清單 2 給出的這個(gè)簡(jiǎn)單 C 程序展示了 BusyBox 的調(diào)用。它只簡(jiǎn)單地打印argv向量的內(nèi)容。
清單 2. BusyBox 使用 argv[0] 來(lái)確定調(diào)用哪個(gè)應(yīng)用程序
// 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;
}
調(diào)用這個(gè)程序會(huì)顯示所調(diào)用的第一個(gè)參數(shù)是該程序的名字。我們可以對(duì)這個(gè)可執(zhí)行程序重新進(jìn)行命名,此時(shí)再調(diào)用就會(huì)得到該程序的新名字。另外,我們可以創(chuàng)建一個(gè)到可執(zhí)行程序的符號(hào)鏈接,在執(zhí)行這個(gè)符號(hào)鏈接時(shí),就可以看到這個(gè)符號(hào)鏈接的名字。
清單 3. 在使用新命令更新 BusyBox 之后的命令測(cè)試
$ 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 使用了符號(hào)鏈接以便使一個(gè)可執(zhí)行程序看起來(lái)像很多程序一樣。對(duì)于 BusyBox 中包含的每個(gè)工具來(lái)說(shuō),都會(huì)這樣創(chuàng)建一個(gè)符號(hào)鏈接,這樣就可以使用這些符號(hào)鏈接來(lái)調(diào)用 BusyBox 了。BusyBox 然后可以通過(guò)argv[0]來(lái)調(diào)用內(nèi)部工具。
配置并編譯 BusyBox
我們可以從 BusyBox 的 Web 站點(diǎn)上下載最新版本的 BusyBox(請(qǐng)參看參考資料一節(jié)的內(nèi)容)。與大部分開(kāi)放源碼程序一樣,它是以一個(gè)壓縮的 tarball 形式發(fā)布的,我們可以使用清單 4 給出的命令將其轉(zhuǎn)換成源代碼樹(shù)。(如果我們下載的版本不是 1.1.1,那就請(qǐng)?jiān)谶@個(gè)命令中使用適當(dāng)?shù)陌姹咎?hào)以及特定于這個(gè)版本號(hào)的命令。)
清單 4. 展開(kāi) BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤(pán)編寫(xiě)的。其目標(biāo)是在一張軟盤(pán)上創(chuàng)建一個(gè)可引導(dǎo)的 GNU/Linux 系統(tǒng),這可以用作安裝盤(pán)和急救盤(pán)。一張軟盤(pán)可以保存大約 1.4-1.7MB 的內(nèi)容,因此這里沒(méi)有多少空間留給 Linux 內(nèi)核以及相關(guān)的用戶應(yīng)用程序使用。
![](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF233.tmp.png)
BusyBox 是按照 GNU General Public License(GPL)許可證發(fā)行的。這意味著如果我們?cè)谝粋€(gè)項(xiàng)目中使用 BusyBox,就必須遵守這個(gè)許可證。我們可以在 BusyBox Web 站點(diǎn)(請(qǐng)參看本文后面參考資料一節(jié)的內(nèi)容)上看到這個(gè)許可證的內(nèi)容。BusyBox 團(tuán)隊(duì)似乎正忙于監(jiān)視違反這個(gè)許可證的情況。實(shí)際上,他們維護(hù)了一個(gè) “Hall of Shame” 頁(yè)面來(lái)說(shuō)明違反者的情況。
BusyBox 揭露了這樣一個(gè)事實(shí):很多標(biāo)準(zhǔn) Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目錄中搜索文件的代碼。當(dāng)這些工具被合并到一個(gè)可執(zhí)行程序中時(shí),它們就可以共享這些相同的元素,這樣可以產(chǎn)生更小的可執(zhí)行程序。實(shí)際上, BusyBox 可以將大約 3.5MB 的工具包裝成大約 200KB 大小。這就為可引導(dǎo)的磁盤(pán)和使用 Linux 的嵌入式設(shè)備提供了更多功能。我們可以對(duì) 2.4 和 2.6 版本的 Linux 內(nèi)核使用 BusyBox。
BusyBox 是如何工作的?
為了讓一個(gè)可執(zhí)行程序看起來(lái)就像是很多可執(zhí)行程序一樣,BusyBox 為傳遞給 C 的 main 函數(shù)的參數(shù)開(kāi)發(fā)了一個(gè)很少使用的特性?;叵胍幌?C 語(yǔ)言的 main 函數(shù)的定義如下:
![](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF234.tmp.png)
清單 1. C 的 main 函數(shù)
int main( int argc, char *argv[] )
在這個(gè)定義中,argc是傳遞進(jìn)來(lái)的參數(shù)的個(gè)數(shù)(參數(shù)數(shù)量),而argv是一個(gè)字符串?dāng)?shù)組,代表從命令行傳遞進(jìn)來(lái)的參數(shù)(參數(shù)向量)。argv的索引 0 是從命令行調(diào)用的程序名。
清單 2 給出的這個(gè)簡(jiǎn)單 C 程序展示了 BusyBox 的調(diào)用。它只簡(jiǎn)單地打印argv向量的內(nèi)容。
清單 2. BusyBox 使用 argv[0] 來(lái)確定調(diào)用哪個(gè)應(yīng)用程序
// 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;
}
調(diào)用這個(gè)程序會(huì)顯示所調(diào)用的第一個(gè)參數(shù)是該程序的名字。我們可以對(duì)這個(gè)可執(zhí)行程序重新進(jìn)行命名,此時(shí)再調(diào)用就會(huì)得到該程序的新名字。另外,我們可以創(chuàng)建一個(gè)到可執(zhí)行程序的符號(hào)鏈接,在執(zhí)行這個(gè)符號(hào)鏈接時(shí),就可以看到這個(gè)符號(hào)鏈接的名字。
清單 3. 在使用新命令更新 BusyBox 之后的命令測(cè)試
$ 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 使用了符號(hào)鏈接以便使一個(gè)可執(zhí)行程序看起來(lái)像很多程序一樣。對(duì)于 BusyBox 中包含的每個(gè)工具來(lái)說(shuō),都會(huì)這樣創(chuàng)建一個(gè)符號(hào)鏈接,這樣就可以使用這些符號(hào)鏈接來(lái)調(diào)用 BusyBox 了。BusyBox 然后可以通過(guò)argv[0]來(lái)調(diào)用內(nèi)部工具。
配置并編譯 BusyBox
我們可以從 BusyBox 的 Web 站點(diǎn)上下載最新版本的 BusyBox(請(qǐng)參看參考資料一節(jié)的內(nèi)容)。與大部分開(kāi)放源碼程序一樣,它是以一個(gè)壓縮的 tarball 形式發(fā)布的,我們可以使用清單 4 給出的命令將其轉(zhuǎn)換成源代碼樹(shù)。(如果我們下載的版本不是 1.1.1,那就請(qǐng)?jiān)谶@個(gè)命令中使用適當(dāng)?shù)陌姹咎?hào)以及特定于這個(gè)版本號(hào)的命令。)
清單 4. 展開(kāi) BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 如何把Linux工具里的“軍刀”BusyBox移植到RT-Thread Smart?
- 第六課 數(shù)控機(jī)床電路詳解 0次下載
- 開(kāi)關(guān)電源的工作原理及電路組成詳解 267次下載
- 開(kāi)關(guān)電源原理及輸入電路詳解 122次下載
- Linux系統(tǒng)中EXP命令詳解質(zhì)量匯總 1次下載
- Power BI服務(wù)所包含的信息及數(shù)據(jù)詳解 0次下載
- BLE實(shí)驗(yàn)詳解之藍(lán)牙溫度計(jì)設(shè)計(jì)方案 25次下載
- BLE實(shí)驗(yàn)詳解之藍(lán)牙血壓計(jì)設(shè)計(jì)方案 37次下載
- 自動(dòng)控制原理習(xí)題詳解第二版下載 0次下載
- 蘋(píng)果iPhone 6SP相關(guān)線路詳解 20次下載
- 《Python開(kāi)發(fā)技術(shù)詳解》-隨書(shū)附帶程序 0次下載
- 實(shí)驗(yàn)五 基于busybox的根文件系統(tǒng)制作實(shí)驗(yàn)-2016 10次下載
- 嵌入式MostaVistaLinux操作系統(tǒng)的BusyBox構(gòu)建 0次下載
- busybox-1.23.2 1次下載
- 用Busybox制作嵌入式Linux根文件系統(tǒng)
- 詳解MySQL多實(shí)例部署 303次閱讀
- 全志Tina Linux下busybox init簡(jiǎn)介 986次閱讀
- Linux輕量級(jí)工具集合Busybox的特點(diǎn)和使用 1448次閱讀
- kafka相關(guān)命令詳解 973次閱讀
- BGA和CSP封裝技術(shù)詳解 2572次閱讀
- STM32庫(kù)函數(shù)SystemInit()詳解 4184次閱讀
- 無(wú)功補(bǔ)償原理基礎(chǔ)知識(shí)詳解 873次閱讀
- WAT技術(shù)詳解 1165次閱讀
- 物理設(shè)計(jì)中的問(wèn)題詳解 1027次閱讀
- LC振蕩電路原理詳解 3128次閱讀
- 積分與微分電路原理詳解 2349次閱讀
- 詳解String對(duì)象的內(nèi)存分配 2287次閱讀
- 在QEMU上用Busybox模擬ARM文件系統(tǒng)的步驟 3228次閱讀
- Prelink的交叉編譯和使用詳解 3575次閱讀
- DNA螺旋臺(tái)燈制作詳解 3776次閱讀
下載排行
本周
- 1IP6823 支持 qi 認(rèn)證的無(wú)線充電發(fā)射控制 SOC
- 1.01 MB | 1次下載 | 免費(fèi)
- 2IP6824? 全集成QI?無(wú)線充電發(fā)射控制SOC
- 1.22 MB | 1次下載 | 免費(fèi)
- 3GD32G5x3 FFT模塊用戶指南
- 920.15KB | 次下載 | 免費(fèi)
- 4GD32H73x/H75x的器件限制
- 774.05KB | 次下載 | 免費(fèi)
- 5PDTA115EU配備PNP電阻的晶體管規(guī)格書(shū)
- 189.74KB | 次下載 | 免費(fèi)
- 6帶注入電流控制的1.8V通用SP8T-Z和2個(gè)SP4T-Z模擬開(kāi)關(guān)
- 847.62KB | 次下載 | 免費(fèi)
- 7PESD18VY1BBIF保護(hù)二極管規(guī)格書(shū)
- 4.56MB | 次下載 | 免費(fèi)
- 8視頻處理器晶振應(yīng)用方案
- 515.02 KB | 次下載 | 免費(fèi)
本月
- 1A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 2零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 41次下載 | 1 積分
- 3PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 4PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 5dsPIC33EDV64MC205電機(jī)控制開(kāi)發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費(fèi)
- 6STC15系列常用寄存器匯總免費(fèi)下載
- 1.60 MB | 7次下載 | 5 積分
- 7AN-1267: 使用ADSP-CM408F ADC控制器的電機(jī)控制反饋采樣時(shí)序
- 1.41MB | 5次下載 | 免費(fèi)
- 8LP9962集成 PFC 和 和的 高壓半橋驅(qū)動(dòng)的 LLC 諧振
- 3.30 MB | 4次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935124次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73813次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論