如何向busybox添加自己的命令

原创 2015年04月14日 19:20:56

在做嵌入式开的时候,busybox无疑是非常好用的命令集,所以很多时候都喜欢把busybox移植到我们的系统里面,移植过程网上也有很多相关的文档,今天这篇文档主要介绍如何在busybox中添加我们自己的命令,过程如下:

添加一个很简单的命令——hello_busybox,输出“Hello Husybox!”。busybox解压出来有很多目录,每个目录几乎是一类命令,比如网络,shell等等。我就把hello_busybox这个命令添加到miscutils目录下。

1)、在miscutils目录下添加.c文件,函数名要与其它.c文件里面的函数名的格式保持一致,即命令名_main()。
[kernel@localhost miscutils]$ cat hello_busybox.c

1 /*********************************************************************************
  2  *      Copyright:  (C) 2015 Yang Zheng<yz2012ww@gmail.com>  
  3  *                  All rights reserved.
  4  *
  5  *       Filename:  hello_busybox.c
  6  *    Description:  This file 
  7  *                 
  8  *        Version:  1.0.0(04/14/2015~)
  9  *         Author:  Yang Zheng <yz2012ww@gmail.com>
 10  *      ChangeLog:  1, Release initial version on "04/14/2015 05:42:09 PM"
 11  *                 
 12  ********************************************************************************/
 13 
 14 #include "busybox.h"                                                                                                             
 15 
 16 
 17 int hello_busybox_main(int argc, char *argv[])
 18 {
 19     printf("hello Busybox!\n");
 20 
 21     return 0;
 22 }

2)、修改编译文件,因为仅添加.c源文件,busybox编译系统不知道有新的代码添加进来,make的时候也不会编译hello_busybox.c文件,所以要修改Config.src文件(添加命令的整个过程跟添加内核驱动类似--内核是Kconfig):
[kernel@localhost miscutils]$ cat Config.src 
config HELLO_BUSYBOX
        bool "say hello to busybox"
        default y
        select PLATFORM_LINUX
        help
                say hello to busybox
修改这里主要是使得执行“make menuconfig”命令的时候,配置界面可以出现我们新增的命令,让用户对该命令可以配置,第一行是表示该命令的一个环境变量;第二行是出现在配置界面上的文字,是一个布尔量,取值为“Y”或者“N”;第三行是这个选项的默认值,这里默认是选中,后面两行是在配置界面的帮助信息。

注:修改上面的文件只是让配置界面出现我们的这个命令,以及根据是否选择配置环境变量“HELLO_BUSYBOX”为“Y"或”N",到目前为止,busybox还是不能编译到我们的源文件,甚至到现在为止都还不知道我们的这个源文件叫啥。所以

3)、修改编译文件Kbuild.src
[kernel@localhost miscutils]$ cat Kbuild.src 
lib-$(CONFIG_HELLO_BUSYBOX)    += hello_busybox.o


注:移植郭busybox的人都知道在bin,sbin目录下生产的都是符号链接,我们自己的命令要最终当然也是符号链接,那么要把保存到哪个目录下呢?

4)、修改/include/applets.src.h文件
[kernel@localhost include]$ vim applets.src.h
IF_HELLO_BUSYBOX(APPLET(hello_busybox, BB_DIR_SBIN, BB_SUID_DROP))
第一个参数:命令的名字;第二个参数:存放的路径:第三个参数:权限


5)、为命令添加帮助信息,以便使用--help的时候查阅
[kernel@localhost include]$ vim usage.src.h 
22 #define hello_busybox_trivial_usage "None"
23 #define hello_busybox_full_usage "None


命令成功添加,使用make menuconfig即可看到,还有在make之前可以查看到include/autoconf.h里面有:

4751 #define CONFIG_HELLO_BUSYBOX 1                                                                                                  
4752 #define ENABLE_HELLO_BUSYBOX 1

make 之后在include/config/下生成/hello/busybox.h文件:
#define CONFIG_HELLO_BUSYBOX 1


后面就是测试:
[root@hi3518c ~]# hello_busybox --h
hello Busybox!
[root@hi3518c ~]# hello_busybox 
hello Busybox!


完!!!!!!



                     

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

向busybox中添加命令

注意: 个人使用的busybox 是1.21.0 其中 Kbuild Config.in usage.h applets.h 均是由 Kbuild.src Config.src 等gen 的,所以修改...

如何向busybox添加自己的命令 例如:tree

make make install 1;下载tree命令的源代码 http://mama.indstate.edu/users/ice/tree/,我使用的版本是busybox-1.17....
  • Cupid99
  • Cupid99
  • 2016年12月28日 17:00
  • 502

busybox里环境变量设置的问题

方法一[来自网上文章]: busybox里环境变量设置的问题在busybox带的ash shell下。如果你手动敲入export 来设置环境变量,是没问题的。但如果在shell 脚本里设置环境变量的话...

安装busybox步骤

详细介绍busybox的配置和安装
  • hao507
  • hao507
  • 2010年09月02日 10:58
  • 8480

如何向busybox添加自己的命令

转自: http://blog.csdn.net/yangzheng_yz/article/details/45046591 在做嵌入式开的时候,busybox无疑是非常好用的命令集...

busybox详解

根文件系统及Busybox详解之一 根文件系统及Busybox简介 目录 1.根文件系统简介…2 2.Busybox简介…2 2.1Busybox简介…2 2.2Busybox目录...

如何制作LINUX的patch文件及如何打patch

如何制作LINUX的patch文件及如何打patch 对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。 patch文件也叫补丁,就是一个...

向busybox中添加命令

向 BusyBox添加一个新命令非常简单,这是因为它具有良好定义的体系结构。第一个步骤是为新命令的源代码选择一个位置。我们要根据命令的类型(网络,shell等)来选择位置,并与其他命令保持一致。这一点...

busybox添加新命令

BusyBox 命令中支持的选项     BusyBox 中的命令并不支持所有可用选项,不过这些命令都包含了常用的选项。如果我们需要知道一个命令可以支持哪些选项,可以使用 --help 选项来调...
  • hushup
  • hushup
  • 2013年12月16日 11:34
  • 955

BusyBox 中添加新命令

BusyBox 中添加新命令
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何向busybox添加自己的命令
举报原因:
原因补充:

(最多只允许输入30个字)