1. 程式人生 > >Busybox的配置、編譯與安裝

Busybox的配置、編譯與安裝

BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上建立一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。一張軟盤可以儲存大約 1.4-1.7MB 的內容,因此這裡沒有多少空間留給 Linux 核心以及相關的使用者應用程式使用。

1.2      下載

編譯busybox-1.13.4需要GCC3.X以上版本。

下載連結:

解壓後為selfmake_cross-3.4.4.tar.gz,將其釋放到目錄 /usr/local/arm 目錄下,編輯 /etc/profile 加入如下內容:

PATH=$PATH:/usr/local/arm/3.4.4/bin

並執行:

# source /etc/profile

執行 arm-linux-gcc –v後,顯示gcc版本為3.4.4。

將busybox-1.13.4目錄下的配置檔案.config 中的交叉編譯目錄欄位改為:

CONFIG_CROSS_COMPILER_PREFIX="/usr/local/arm/3.4.4/bin/arm-linux-"

# make clean

# make menuconfig

Busybox ConfigurationàBuild Options中,將Build BusyBox as a static binary (no shared libs) 選中,並將Cross Compiler prefix 設定為:

 “ /usr/local/arm/3.4.4/bin/arm-linux- ”

# make

# make install

當命令執行完畢以後,會在當前目錄中會生成“_install”目錄,進入該目錄,可以看到其中有四個子目錄:bin、linuxrc、sbin和usr。

也可直接修改 busybox-1.13.4 目錄下的 “ .config ” 檔案。

在/home/work目錄下新建一個臨時目錄tmp,執行如下命令,將原有的ramdisk.gz解壓並掛載到該目錄下:

                   # gunzip ramdisk.gz

                   # mkdir tmp

                   # mount -o loop ramdisk tmp

        然後執行如下命令,將_isntall目錄中的檔案拷貝到tmp目錄,覆蓋ramdisk中的原有檔案:

                    # cp  -af  /home/work/busybox-1.00/_install/* /home/work/tmp

        拷貝完畢以後,使用系統提供的映像檔案製作工具mkfs.jffs2,生成jffs2映像檔案,命令如下:

                  # ./mkfs.jffs2  -d  ./tmp  -o  jffs2.img

然後執行如下命令,解除安裝並壓縮ramdisk.gz:

                 # umount /home/work/tmp

                 # gzip ramdisk

當以上操作全部完成以後,即可生成新的ramdisk.gz和jffs2.img檔案。

注意:以上的部分操作步驟可能需要超級使用者的許可權。

http://www.diybl.com/course/6_system/linux/Linuxjs/2008619/126715_2.html

我們也可以對 BusyBox 環境進行配置,例如包括對 NSA(美國國家安全代理)的安全增強 Linux(SELinux),指定要使用的編譯器(用來在嵌入式環境中進行交叉編譯)以及 BusyBox 應該靜態編譯還是動態編譯。圖 1 給出了menuconfig的主介面。在這裡我們應該可以看到可以為 BusyBox 配置的不同型別的應用程式(applet)。

要手工配置 BusyBox,請使用下面的命令:

$ make menuconfig

$ make

這為我們提供了可以呼叫的 BusyBox 的二進位制檔案。下一個步驟是圍繞 BusyBox 構建一個環境,包括將標準 Linux命令重定向到 BusyBox 二進位制檔案的符號連結。我們可以使用下面的命令簡單地完成這個過程:$ make install

使用installmake 目標建立的符號連結都來自於 busybox.links 檔案。這個檔案是在編譯 BusyBox 時建立的,它包含了已經配置的命令清單。在執行install時,就會檢查 busybox.links 檔案確定要建立的符號連結。

到 BusyBox 的命令列連結也可以使用 BusyBox 在執行時動態建立。CONFIG_FEATURE_INSTALLER選項就可以啟用這個特性,在執行時可以這樣執行:

清單 10. 在執行時建立命令連結

$ ./busybox --install -s

BusyBox 編譯選項

BusyBox 包括了幾個編譯選項,可以幫助為我們編譯和除錯正確的 BusyBox。

表 1. 為 BusyBox 提供的幾個 make 選項

make 目標    說明

help    顯示 make 選項的完整列表

defconfig   啟用預設的(通用)配置

allnoconfig 禁用所有的應用程式(空配置)

allyesconfig    啟用所有的應用程式(完整配置)

allbareconfig   啟用所有的應用程式,但是不包括子特性

config  基於文字的配置工具

menuconfig  N-curses(基於選單的)配置工具

all 編譯 BusyBox 二進位制檔案和文件(./docs)

busybox 編譯 BusyBox 二進位制檔案

clean   清除原始碼樹

distclean   徹底清除原始碼樹

sizes   顯示所啟用的應用程式的文字/資料大小

在定義配置時,我們只需要輸入make就可以真正編譯 BusyBox 二進位制檔案。例如,要為所有的應用程式編譯BusyBox,我們可以執行下面的命令:

$ make allyesconfig

$ make

壓縮 BusyBox

如果您非常關心對 BusyBox 映像的壓縮,就需要記住兩件事情:

   1. 永遠不要編譯為靜態二進位制檔案(這會將所有需要的庫都包含到映像檔案中)。相反,如果我們是編譯為一個共享映像,那麼它會使用其他應用程式使用的庫(例如/lib/libc.so.X)。

   2. 使用 uClibc 進行編譯,這是一個對大小進行過優化的 C 庫,它是為嵌入式系統開發的;而不要使用標準的 glibc(GNU C 庫)來編譯。

BusyBox 命令中支援的選項

BusyBox 中的命令並不支援所有可用選項,不過這些命令都包含了常用的選項。如果我們需要知道一個命令可以支援哪些選項,可以使用--help選項來呼叫這個命令,如清單 12 所示。

$ ./busybox wc --help BusyBox v1.1.1 (2006.04.09-15:27+0000) multi-call binary Usage: wc [OPTION]... [FILE]... Print line, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, read standard input. Options: -c print the byte counts -l print the newline counts -L print the length of the longest line -w print the word counts

這些特定的資料只有在啟用了CONFIG_FEATURE_VERBOSE_USAGE選項時才可以使用。如果沒有這個選項,我們就無法獲得這些詳細資料,但是這樣可以節省大約 13 KB 的空間。

BusyBox 是很多標準 Linux? 工具的一個單個可執行實現。BusyBox 包含了一些簡單的工具,例如 cat 和 echo,還包含了一些更大、更復雜的工具,例如 grep、find、mount 以及 telnet(不過它的選項比傳統的版本要少);有些人將 BusyBox稱為 Linux 工具裡的瑞士軍刀。本文將探索 BusyBox 的目標,它是如何工作的,以及為什麼它對於記憶體有限的環境來說是如此重要。

參考文獻

[1]          busybox 詳解.txt

[2]          BusyBox——嵌入式Linux中的瑞士軍刀.txt

[3]          ARM-Linux平臺的Busybox交叉編譯.txt

相關推薦

Busybox配置編譯安裝

BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上建立一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。一張軟盤可以儲存大約 1.4-1.7MB 的內容,因此這裡沒

CentOS 7核心配置編譯安裝

簡介 大部分時候,使用者並不需要編譯核心。編譯核心的一般目的:新功能的需求、原本的核心太過臃腫、不硬體搭配的穩定性、其他需求(如嵌入式系統)。 本文主要介紹瞭如何在CentOS 7環境下進行Linux核心的配置、編譯與安裝。 編譯前的準備 要成功建立一個核心,需要安裝下列元

Apache Tomcat安裝配置啟動後續操作步驟

文件解壓 相對 ref 自己的 控制臺 應用 為我 。。 start 1.第一,我們在安裝Apache Tomcat之前,我們首先安裝和配置好jdk; 2.第二,我們要清楚自己的jdk版本。因為我們Apache Tomcat配置的成功的前提是版本相對應。在這裏,博主是用下圖

ElasticSearch筆記整理(一):簡介REST安裝配置

大數據 ElasticSearch ELK [TOC] ElasticSearch簡介 ElasticSearch是一款基於Apache Lucene構建的開源搜索引擎,它采用Java編寫並使用Lucene構建索引、提供搜索功能,ElasticSearch的目標是讓全文搜索變得簡單,開發者可以通

嵌入式Linux核心配置裁剪編譯淺析(ARM版)

/*====================*/ 9、Device Drivers  --->  9.1、Generic Driver Options  --->  9.1.1、()  path to uevent helper  9.1.2、[ ] Maintain a devtmpfs fil

sphinx安裝配置索引檢索

0、官網下載:http://sphinxsearch.com/downloads/release/ 1、解壓縮:tar xzvf sphinx-2.1.8-release.tar.gz 2、執行configuration程式:./configure --prefix=/ho

ESP8266-SDK編譯環境安裝包的安裝編譯燒錄教程【windows】

SDK編譯環境安裝包的安裝、編譯與燒錄教程 【支援最新版AT、IOT及LUA原始碼編譯,附原始碼】 1、安裝包Fans_ESP8266_SDK_Make.exe 下載地址:http://pan.baidu.com/s/1pJ6w1tD 安裝後在C盤下生成三個資料夾

新版uboot配置編譯

size www target ref tle 移植 targe font mil 轉載文章來至於: http://www.linuxidc.com/Linux/2015-02/112934.htm新版uboot配置、編譯

編譯安裝 OpenSSL

linu http www sld .tar.gz 創建文件 logs ref pre 編譯與安裝 OpenSSL prefix 是安裝目錄,openssldir 是配置文件目錄,另外建議安裝兩次,shared 作用是生成動態連接庫。linux版的OpenSSL下載地址為:

Linux 環境下 PHP 擴展的變異編譯安裝

font spa mysql 所有 sqli 技術 php 操作 size (操作系統 Centos7, 已安裝 mysqli 為例) 1,進入到 PHP 解壓後的源碼包的的 ext 文件夾 2,查看是否存在 mysqli 擴展 => ls 3,這裏既是所有 PHP

選擇安裝——Linux學習筆記

部分 rtu ali 了解 使用 通用 一次 box 學習 A)為什麽要用Linux做服務器? 網絡理由: 1.linux本身是網絡操作系統,支持所有TCP/IP協議,網絡功能是內核中六大模塊之一 2.linux和unix兼容,unix是早期的服務器霸主,現在份額逐漸讓給l

VS配置編譯sqlite失敗的解決方法

       在VS上有需要使用到資料庫,選擇的資料庫是輕量級的資料庫—sqlite。這個資料庫的特點就是呼叫方便,且支援視覺化工具進行資料庫的編輯。但是,在VS2012上對sqlite進行配置的時候,一直無法除錯成功。      

深入淺出ESP32開發之二ESP-IDF下載編譯執行

一、ESP-IDF下載 ESP-IDF全稱Espressif IoT Development Framework是樂鑫基於ESP32推出的新一代SDK,基於FreeRTOS系統,在上一代SDK基礎上做了眾多更新和改進,集合了眾多元件。支援在Windows、Linux和MacOS下基於ESP-ID

FastDFS的配置部署API使用解讀(1)Get Started with FastDFS

版權宣告:本文為博主原創文章,未經博主允許不得轉載。合作請聯絡微信 sinosuperman。 https://blog.csdn.net/Poechant/article/details/6977407 轉載請註明來自:詩商·柳驚鴻CSDN部落格,原文連結:FastDFS的配置、部署

FastDFS的配置部署API使用解讀(8)FastDFS多種檔案上傳介面詳解

《Poechant的FastDFS的配置、部署與API使用教程》 FastDFS的配置、部署與API使用解讀——(1)入門使用教程 FastDFS的配置、部署與API使用解讀——(2)Java API:根據InputStream、檔名、檔案長度上傳檔案 FastDFS的配置、部署與API

Arcgis javascript那些事兒(二十)——dojo中djconfig配置dojorequirejs專案衝突

一、引言       由於專案一部分使用requirejs另一部分地圖是用dojo開發(因為arcgis javascript使用的dojo),兩個要和到一起,所以要求研究下如何把兩者和到一起,花了兩天時間看了看requirejs與dojo,終於搞定了,跟大家

qwt 6.1.2的編譯安裝

一、前提 已經安裝了Qt,並已配置好其環境變數;筆者安裝的Qt版本為Qt-4.8.6。 二、下載原始碼 地址:http://sourceforge.net/projects/qwt/files/qwt/6.1.2/ 對於windows環境下的安裝,下載zip檔案,解壓到自定義

Ogre原始碼編譯安裝

Ogre原始碼編譯與安裝 這學期的課程需要分析Ogre原始碼,所以打算編譯Ogre原始碼來滿足課程要求; Ogre版本我這裡使用的是1.10.11 需要提前安裝 Visual Studio (我使用的是VS2017) CMake https://cmake

2018/11/20 許可權修改本地yum源配置使用minimal安裝linux

許可權修改: chmod [{ugoa}{+-=}{rwx}] [檔名或目錄]   chmod [mode=421] [ 檔案或目錄] 引數:-R 下面的檔案和子目錄做相同許可權操作(Recursive遞迴的) 注意:root使用者是超級使用者,不管有沒有許可權,

sublime教程以及python環境的配置(一)下載安裝,常用快捷鍵和漢化教程

本文為我的sublime的筆記以及某些常用功能的介紹,還有基於sublime編輯器上python環境的配置。 我使用的該編輯器版本為為Sublime Text Build 3176版本,目前,python已更新到了3.7版本,歡迎大家下載最新版本並比較。 一:Su