linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂]

(29) 2023-03-26 18:58

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂],希望能够帮助你!!!。
linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂]_https://bianchenghao6.com/blog__第1张

busybox是什么?

http://www.busybox.net/,在这里你可以找到与busybox相关的所有资料。

busybox编译和移植

(2)make menuconfig

busybox的使用

busybox的安装

========================================================

BusyBox制作根文件系统(rootfs)

一、系统环境:

1、操作系统:Ubuntu12.04

2、交叉编译工具:arm-linux-gcc4.4.3

3、busybox源码包:busybox-1.25.0.tar.bz2

二、制作rootfs

1、建立rootfs目录

本人在/home/zxx下建立rootfs目录

#mkdir rootfs

#cd rootfs

#mkdir usr/lib usr/bin

#pwd

/home/zxx/rootfs

2、解压源码包:

#tar -jxvf busybox-1.25.0.tar.bz2

3、修改Makefile配置

进入busybox-1.25.0目录,修改Makefile文件如下:

ARCH ?= arm

4、编译BusyBox

linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂]_https://bianchenghao6.com/blog__第2张

选择Busybox Settings ---> Installation Options --->BusyBox installation prefix(在里面输入BusyBox的安装目录,我是保存在/home/zxx/rootfs下)

linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂]_https://bianchenghao6.com/blog__第3张

linux怎么编译并安装busybox,busybox的编译使用及安装[通俗易懂]_https://bianchenghao6.com/blog__第4张

保存并退出

5、编译安装

#make

#make install

6、把busybox源码目录下的etc的内容拷贝到rootfs目录下的etc下

# cd /home/zxx/rootfs/etc

# cp -a /home/zxx/Downloads/busybox-1.25.0/examples/bootfloppy/etc/* ./

7、从本机拷贝passwd、shadow、group文件

# cp /etc/passwd .

# cp /etc/shadow .

# cp /etc/group .

修改passwd文件,把第一行和最后一行的bash修改成ash。

8、修改初始化文件inittab和fstab

9、rootfs下lib的制作

将交叉编译环境下lib库拷贝到/rootfs/lib

#cd /home/zxx/rootfs/lib

#cp /usr/local/arm/4.4.3/arm-none-linux-gnueabi/sys-root/lib./

三、编译错误解决参考

1、make出现如下错误:

miscutils/nandwrite.c: In function 'nandwrite_main':

miscutils/nandwrite.c:151: error: 'MTD_FILE_MODE_RAW' undeclared (first use in this?function)

miscutils/nandwrite.c:151: error: (Each undeclared identifier is reported only once

miscutils/nandwrite.c:151: error: for each function it appears in.)

scripts/Makefile.build:197: recipe for target 'miscutils/nandwrite.o' failed

make[1]: *** [miscutils/nandwrite.o] Error 1

Makefile:742: recipe for target 'miscutils' failed

make: *** [miscutils] Error 2

解决办法:

MTD_FILE_MODE_RAW在/usr/include/mtd/mtd-abi.h中定义。将/usr/include/mtd/mtd-abi.h拷贝到busybox的include文件中。

修改头文件如下:

#include "mtd-abi.h"

#include

编译可以通过。

2、继续make,出现如下错误:

util-linux/blkdiscard.c: In function 'blkdiscard_main':

util-linux/blkdiscard.c:72: error: 'BLKSECDISCARD' undeclared (first use in this function)

util-linux/blkdiscard.c:72: error: (Each undeclared identifier is reported only once

util-linux/blkdiscard.c:72: error: for each function it appears in.)

scripts/Makefile.build:197: recipe for target 'util-linux/blkdiscard.o' failed

make[1]: *** [util-linux/blkdiscard.o] Error 1

Makefile:742: recipe for target 'util-linux' failed

make: *** [util-linux] Error 2

解决办法:

BLKSECDISCARD在/usr/include/linux/fs.h中定义,方法如上所述,将/usr/include/linux/fs.h拷贝到busybox的include文件中linux下。

#gedit util-linux/blkdiscard.c

修改内容如下:

#include

编译通过。

到这里rootfs基本上已经制作出来,有些内容需要的,可根据自己rootfs的需要进行自己增加。最后将rootfs目录制作成镜像后,就可以烧写到开发板上了。

=========================================================

传统的嵌入式系统都是uboot+kernel+rootfs。其中最简单的rootfs就是ramfs+busybox+/dev + /etc + /lib。至于etc目录中的inittab和init.d/rcS这两个都是busybox中init程序分析的内容。如果本身没有busybox,其实也无所谓这两个脚本。

1、busybox就是普通的用户程序

2、所有的命令都指向busybox

3、第一个用户程序就是busybox

4、返回用户侧后,第一个c函数不是init_main

5、调试busybox

6、过分夸大的busybox

上一篇

已是最后文章

下一篇

已是最新文章

发表回复