如何向busybox添加自己的命令
2015-04-14 19:20
211 查看
在做嵌入式开的时候,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!
完!!!!!!
添加一个很简单的命令——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添加自己的命令 例如:tree
- 如何向busybox添加自己的命令
- 如何为自己写的控件自动添加单元引用
- 如何在django里面添加自定义命令
- (转载) 使用 Linux 系统调用的内核命令, 探究 SCI(systen call interface) 并添加自己的调用.
- 如何在Linux下添加自己的驱动
- 如何将自己的代码自动添加版权信息
- 如何来写自己的ls命令
- 如何向PPC-Boot中添加自定义命令
- 使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
- 酷播云的自定义视频广告功能如何添加自己的广告
- 嵌入式linux busybox 文件系统的移植 和 rz sz 命令的添加
- 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)
- Linux系统调用的内核命令 : 探究SCI并添加自己的调用
- mac上如何添加dpkg命令
- 如何在IOS开发中在自己的framework中添加.bunble文件
- iOS 中如何添加应用自己的字体
- Linux使用笔记4-添加用户变量(设置自己的命令,修改默认python版本等)