当前位置: 代码迷 >> 综合 >> busybox -1.26.0移植以及碰到的问题
  详细解决方案

busybox -1.26.0移植以及碰到的问题

热度:75   发布时间:2023-12-12 10:34:05.0

1、busybox源码下载

BusyBox 的官方网站是:http://www.busybox.net/
下面以busybox-1.26.0.tar.bz2为例来讲解一下 BusyBox 的编译安装过程。

2、 同步拷贝、解压到ubuntu

我的根文件系统目录是:/root/porting_x210/rootfs/rootfs1
在/rootfs目录下创建bill_rootfs目录,将该压缩包解压到这,代码如下:

cp /root/windows_share/s5pv210/rootfs/busybox-1.26.0.tar.bz2 ./
tar jxvf busybox-1.26.0.tar.bz2

3、修改vi Makefile

(1) ARCH = arm
(2) CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
在这里插入图片描述

4、配置make menuconfig

Busybox Settings--->Build Options--->[*]Build BusyBox as a static binary(no shared libs)Busybox Library Tuning--->[*]vi-style line editing commands[*]Fancy shell promptsLinux Module Utilities--->[ ]Simplified modutils[*]depmod[*]insmod[*]lsmod[*]modprobe[*]rmmodLinux System Utilities--->[*]mdev[*]Support /etc/mdev.conf[*]Support subdirs/symlinks[*]Support regular expressions substitutions when renaming dev[*]Support command execution at device addition/removal[*]Support loading of firmwares

5、编译make -j6 报错:

5.1、出错1: 宏未声明MTD_FILE_MODE_RAW

在这里插入图片描述

解决思路:

??上网查这个宏发现mtd/mtd-abi.h里面有定义,于是定位到工具链的该文件:sudo locate mtd-abi.h
在这里插入图片描述
??vi /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/usr/include/mtd/mtd-abi.h
??打开后在里面搜/MTD_FILE_MODE找不到,再搜MTD_MODE
在这里插入图片描述

有三种方法可以解决——

??方案1是修改busybox中(最方便,但函数中的宏被修改了)
在这里插入图片描述
??方案2是修改工具链mtd-abi.h,将enum中的MTD_MOD_RAW改为MTD_FILE_MODE_RAW

??方案3是在vi miscutils/nandwrite.c中添加头文件(略微麻烦)
(要先grep “MTD_FILE_MODE_RAW” * -nR搜MTD_FILE_MODE_RAW,结果发现在本机的/usr/include/mtd/mtd-abi.h中有)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
??还是报错,找不到mtd-abi.h,需要将/usr/include/mtd/mtd-abi.h拷贝到busybox的include文件中再包含!
在这里插入图片描述
??上述修改完后再次编译,成功解决,但出现新错误——

5.2、出错2: 未声明BLKDISCARD

在这里插入图片描述

解决思路:在make menuconfig中搜索/ BLKDISCARD

在这里插入图片描述
在这里插入图片描述
??关掉后再次编译问题解决,但还是有别的错误——

5.3、出错3:其他未定义问题(stens、syncfs)

在这里插入图片描述

解决思路同上:在make menuconfig中找nsenter、sync

??由于这些文件与主功能无关,就选择不编译这两个模块(=N)
在这里插入图片描述在这里插入图片描述
??再次编译,成功了!ls查看结果如下:
在这里插入图片描述

6、make install安装

默认安装目录是:./_install

安装到自己的根文件系统目录:

??<make menuconfig查看make install时配置的位置:busybox settings—>Installation Options
在这里插入图片描述
??<进入后填写自己的rootfs目录:/root/porting_x210/rootfs/rootfs1,保存退出
在这里插入图片描述
??make install后,根文件系统目录中已经生成了这四个文件
在这里插入图片描述

7、后面的nfs挂载部分就不赘述了