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配置、dojo與requirejs專案衝突
一、引言 由於專案一部分使用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