天天看點

debian9安裝busybox,并制作根檔案系統(1)

BusyBox 是很多标準 Linux 工具的一個單個可執行實作。BusyBox 包含了一些簡單的工具,例如 cat 和 echo,還包含了一些更大、更複雜的工具,例如 grep、find、mount 以及 telnet;有些人将 BusyBox 稱為 Linux 工具裡的“瑞士軍刀”。

BusyBox 揭露了這樣一個事實:很多标準 Linux 工具都可以共享很多共同的元素。例如,很多基于檔案的工具(比如 grep 和 find)都需要在目錄中搜尋檔案的代碼。當這些工具被合并到一個可執行程式中時,它們就可以共享這些相同的元素,這樣可以産生更小的可執行程式。實際上,BusyBox 可以将大約 3.5MB 的工具包裝成大約 200KB 大小。這就為可引導的磁盤和使用 Linux 的嵌入式裝置提供了更多功能。我們可以對 2.4 和 2.6 版本的 Linux 核心使用 BusyBox。

我們平時用的那些Linux指令就好比是分立式的電子元件,而BusyBox就好比是一個內建電路,把常用的工具和指令內建壓縮在一個可執行檔案裡,功能基本不變,而大小卻小很多倍,在嵌入式linux應用中,BusyBox有非常廣的應用。

1,建構根檔案目錄

##mkdir rootfs
##mkdir root home bin sbin etc dev usr lib tmp mnt sys proc
##mkdir usr/lib usr/bin      

2,安裝busybox

2.1,下載下傳busybox安裝包,​​https://busybox.net/downloads/​​,

2.2,解壓,

##tar -zxvf  busybox-1.29.3.tar.gz      

我這裡下載下傳下來,需要我提取,

2.3,修改makefile檔案,改成自己平台的交叉編譯器和硬體平台,

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-      

2.4,生成.config檔案,

##make distclean
##make defconfig
##make menuconfig      

說明,menuconfig是自己配置,使用defconfig 是預設配置,allyesconfig是最大配置,allnoconfig是最小配置,一般選擇預設配置恢複一下,然後使用menuconfig根據自己的需求配置。  這一步結束後,将生成.config.

2.5,修改.config檔案,

方法1,##make menuconfig

a,選擇将Busybox進行靜态編譯,

settings ---->build options裡,

[]build static binary (no shared libs),空格選*,即選中

說明,這個的意思是運作Busybox才動态連結庫,busybox需要的庫,要我們自己提供,選中之後,就可以把busybox編譯成靜态連結的可執行檔案,運作時才獨立于其他函數庫,否則必須要其他庫才能運作。

b,指定交叉編譯器為arm-linux-gcc,

在cross compiler prefix裡添加xxx/bin/arm-linux-,然後退出儲存。

這裡的xxx就為arm-linux-gcc的安裝路徑,我這裡是

(/home/guoyanzhang/practice/arm/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-)Cross Compiler prefix

c,選中[*] Don't use /usr,這個選項不選的話,make install後busybox将安裝在原系統的/usr下,這将覆寫系統原有的指令。選上這個選項後,make install後會在busybox目錄下生成一個叫_install的目錄,裡面有busybox和指向它的連結。

d,修改busybox的生成檔案的存放路徑,

在installtion options --->

修改busybox installation prefix(預設是./_install,我這裡是儲存在/home/guoyanzhang/rootfs下,如果不修改,之後需要單獨拷貝一次)

e,init utilities ---> init

這個選項最好選上,這樣Busybox就可以初始化腳本inittab,可以用來初始化Linux系統。(我1.29.3上沒有這個選項)

f,shells --->

如果要讓busybox包含一個可以用于解釋linux指令的shell,需要配置busybox的shell裡的内容。這裡可以選的shell有多種,包括ash,hush,lash,msh。最好使用ash,因為它是功能最全,也是類似于一般linux系統的bash的。(我1.29.3這項是預設的ash)

配置好,儲存退出。

方法2,##vi .config

修改CONFIG_CROSS_COMPILER_PREFIX="xxx/bin/arm-linux-"

這裡的xxx就為arm-linux-gcc的安裝路徑,我這裡是

(/home/guoyanzhang/practice/arm/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-)Cross Compiler prefix

2.6,配置好之後就是編譯,##make 

成功之後會有如下提示,

final link with :m resolv

DOC   busybox.pod

DOC   busybox.txt

DOC   busybox.1

DOC   busybox.html      

2.7,編譯之後就是安裝##make install.

2.8,使用##busybox ls 可以看到目前目錄下的檔案。

出現如下這個就表示安裝成功。

--------------------------------------------------

You will probably need to make your busybox binary

setuid root to ensure all configured applets will

work properly.

--------------------------------------------------      

繼續閱讀