debian9安裝busybox,並製作根檔案系統(1)
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.
--------------------------------------------------
如果上面進行順利,就可以跳過了下面這:幾個參考了,下面這幾個參考是安裝遇到的各種問題。不過裡面取消了很多項才編譯成功,但是沒有具體詳細的解釋,我在懷疑方法的正確性。
參考1:http://blog.sina.com.cn/s/blog_8043547601013v65.html
參考2:https://www.cnblogs.com/baiduboy/p/6228003.html
參考3:https://blog.csdn.net/liuhu1919/article/details/47910545
參考4:https://blog.csdn.net/wujiangguizhen/article/details/11785007
限於篇幅,還有對以上解決方法的懷疑,留點空間,進行修正,另起一文debian9安裝busybox,並製作根檔案系統(2)。