配置busybox

首先将busybox的压缩包放入服务器进行解压缩;

busybox集合了几百个命令,在一般的系统中并不需要全部使用。可以通过配置busybox来选择这些命令、定制某些命令的功能(选项)、指定busybox的连接方法(动态连接还是静态连接)

在解压之后的INSTALL文件里,有这样的提示:

The BusyBox build process is similar to the Linux kernel build:

make menuconfig    # This creates a file called ".config"
make          # This creates the "busybox" executable
make install       # or make CONFIG_PREFIX=/path/from/root install

首先,执行make menuconfig。

HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/split-include
scripts/basic/split-include.c: 在函数‘main’中:
scripts/basic/split-include.c:133:11: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
HOSTCC scripts/basic/docproc
HOSTCC scripts/kconfig/conf.o
scripts/kconfig/conf.c: 在函数‘conf_string’中:
scripts/kconfig/conf.c:174:20: 警告: 变量‘help’被设定但未被使用 [-Wunused-but-set-variable]
scripts/kconfig/conf.c: 在函数‘conf_sym’中:
scripts/kconfig/conf.c:208:6: 警告: 变量‘type’被设定但未被使用 [-Wunused-but-set-variable]
scripts/kconfig/conf.c: 在函数‘conf_choice’中:
scripts/kconfig/conf.c:283:6: 警告: 变量‘type’被设定但未被使用 [-Wunused-but-set-variable]
scripts/kconfig/conf.c:359:9: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
scripts/kconfig/conf.c: 在函数‘conf_askvalue’中:
scripts/kconfig/conf.c:104:8: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
HOSTCC scripts/kconfig/kxgettext.o
HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c: 在函数‘show_textbox’中:
scripts/kconfig/mconf.c:836:7: 警告: 忽略声明有 warn_unused_result 属性的‘write’的返回值 [-Wunused-result]
scripts/kconfig/mconf.c: 在函数‘exec_conf’中:
scripts/kconfig/mconf.c:470:6: 警告: 忽略声明有 warn_unused_result 属性的‘pipe’的返回值 [-Wunused-result]
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
scripts/kconfig/lex.zconf.c:1606:16: 警告: ‘input’定义后未使用 [-Wunused-function]
HOSTLD scripts/kconfig/mconf
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:0:
scripts/kconfig/lxdialog/dialog.h:31:20: 致命错误: curses.h:没有那个文件或目录
编译中断。
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make[1]: *** [menuconfig] 错误 2
make: *** [menuconfig] 错误 2

如果执行make menuconfig时,出现上面的这一坨东西,说明Ubuntu系统中缺少一个套件ncurses devel,只需要把这个套件按上即可。

sudo apt-get install libncurses5-dev

再次执行make menuconfig,你会看到下面这东东:

(1)busybox的性能微调

  设置TAB键补全,需要进行如下配置:(不是必须的,为了开发方便)
  busybox  setting   --->

    busybox  library  tuning  --->

      [*]  tab  completion

其余的使用默认配置即可,保存、退出。

编译busybox,注意:一定要切换为root权限,否则在执行安装时,会出现找不到arm-linux-gcc的命令。在这里废了好多事,一定要注意。

编译之前,先修改busybox根目录的Makefile,使用交叉编译器。

修改前:

ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=

修改后:

ARCH ?= arm
CROSS_COMPILE ?=arm-linux-

先运行source /etc/profile,使改过的makefile生效

执行make命令,编译busybox。这时会让你感到崩溃,又会出现问题,如下所示:

CC ipsvd/tcpudp.o
In file included from /home/glb/armtoolchain/usr/local/arm/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter_ipv4.h:8,
from ipsvd/tcpudp.c:33:
/home/glb/armtoolchain/usr/local/arm/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:44: error: field 'in' has incomplete type
/home/glb/armtoolchain/usr/local/arm/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:45: error: field 'in6' has incomplete type
ipsvd/tcpudp.c: In function 'tcpudpsvd_main':
ipsvd/tcpudp.c:314: warning: ignoring return value of 'write', declared with attribute warn_unused_result
make[1]: *** [ipsvd/tcpudp.o] 错误 1
make: *** [ipsvd] 错误 2

解决办法:arm-linux交叉编译工具链

进入~/armtoolchain/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux目录

打开netfilter.h这个文件,添加#include <netinet/in.h>,保存,退出。

然后再进如busybox目录下,执行make,你会看到

AR util-linux/lib.a
LINK busybox_unstripped
Trying libraries: crypt m
Library crypt is needed
Library m is needed
Final link with: crypt m

这说明编译成功了。

安装busybox

注意注意注意!!!!千万不要直接make  install,你如果这样做的话,就将它安装到pc机上了。把pc机给破坏掉

创建一个文件:

mkdir /work/nfs_root/first_fs

make  CONFIG_PREFIX=/work/nfs_root/first_fs  install

安装完成后,在该目录下生成了如下文件和目录

drwxr-xr-x 2 root root 4096 6月 27 11:27 bin
lrwxrwxrwx 1 root root 11 6月 27 11:27 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 6月 27 11:27 sbin

其中,linuxrc和/sbin/init程序功能完全一样,其他目录下是各种命令,不过他们都是/bin/busybox的符号链接。

转载于:https://www.cnblogs.com/-glb/p/7084385.html

构建根文件系统之busybox相关推荐

  1. 构建根文件系统之busybox(三)最小根文件系统

    目录 busybox(三)最小根文件系统 引入 构建终端 构造inittab 配置应用程序 构建C库 制作映像文件yaffs busybox(三)最小根文件系统 引入 在busybox(一)浅析中,得 ...

  2. 构建根文件系统之busybox(四)完善

    目录 busybox(四)完善 proc挂载 手动挂载 proc解析 使用脚本自动挂载 使用mount-a挂载 udev/mdev 挂载 使用jffs2 文件系统格式 安装zlib 安装jffs2 生 ...

  3. 构建根文件系统之busybox(一)浅析

    目录 busybox(一)浅析 引入 读取inittab 创建执行脚本链表 执行脚本 小结 busybox(一)浅析 源码包在busybox-1.7.0.tar.bz2,一个命令对应着一个c文件,执行 ...

  4. 构建根文件系统(2)Busybox init 进程

    讲init进程的启动过程从/etc/inittab出发. 内核启动init进程时已经打开/dev/console设备作为控制台,一般情况下Busybox init程序就使用/dev/console, ...

  5. 构建根文件系统之busybox(二)编译

    目录 busybox(二)编译 busybox(二)编译 1.解压,源码包在busybox-1.7.0.tar.bz2, tar xjf busybox-1.7.0.tar.bz2 cd busybo ...

  6. 韦东山衔接班——4.3_构建根文件系统之busybox

    作者:GWD 时间:2019.8.26 注:Linux中交叉编译用CROSS开头 配置编译busybox 1.解压busybox 2.make menuconfig出现配置菜单 在readme或者in ...

  7. 2.3【Linux系统移植之三】:使用BusyBox构建根文件系统(rootfs)

    文章目录 一.搭建NFS服务器 二.使用BusyBox构建跟文件系统 2.1 修改顶层Makefile 2.2 busybox中文支持 2.3 配置busybox 2.4 编译busybox 2.5 ...

  8. 【ARM】使用Busybox构建根文件系统

    Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...

  9. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  10. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

最新文章

  1. centos7 安装 Mysql 5.7.28,详细完整教程
  2. Java项目:干活管理系统(java+SSM+Jsp+Mysql)
  3. 网络基础相关知识内容
  4. 人工智能 | 自然语言处理研究报告(概念篇)
  5. c java python html_如何通俗地解释 C、C++、C#、Java、JavaScript、HTML、Python的用处
  6. ElasticSearch Java Api(二) -检索索引库
  7. Origin null is not allowed by Access-Control-Allow-Origin 解决方法
  8. 2018 疯狂微服务之死
  9. 深入理解java虚拟机 (一) 第二版
  10. (13)ISE14.7bit文件生成mcs文件(FPGA不积跬步101)
  11. 多目录Makefile(库及分层目录)
  12. TCP 粘包和拆包及解决方案
  13. 7.1 pdo 宝塔面板php_运维干货分享:centos7下源码编译安装php-7.1.5(脚本)
  14. python编程技术总结_大数据技术学习之Spark技术总结
  15. 网络调试助手连接mysql_网络调试助手模拟MQTT协议连接百度物联网并操作时序数据库...
  16. 爬虫小练(刷访问量)(python+requests(headers+proxy)+Queue+threading)
  17. 在工程图中如何进行虚拟相交点标注
  18. 计算机输入法切换用户登录,在电脑上如何设置输入法全局切换的功能
  19. post 防篡改_如何防止http请求数据被篡改
  20. html图片轮播放大,jquery+CSS3实现轮播图、js实现轮播图片自适应等比显示、图片旋转、图片拖拽、鼠标滚动放大缩小...

热门文章

  1. centos 5开机出现PCI错误:Not using MMCONFIG
  2. Jasmine基础API
  3. java spring 下载文件_springboot下载文件(使用流)
  4. do...while(); 语句在宏定义中的应用。
  5. 前端笔试能查吗_微软前端社招笔试详解
  6. servlet的url-pattern匹配规则详细描述
  7. Nginx源码分析 - 主流程篇 - 多进程实现(14)
  8. 再谈UDP协议—浅入理解深度记忆
  9. parallel(parallelStream)并发问题
  10. qtqpixmap不出现图片_亚马逊对产品图片有哪些基本要求