那要很厉害的黑客才能做得到。
busybox怎么用_busybox功能
busybox怎么用_busybox功能
请文明上网,不要为利用干违法的事情。
知道也不能教你,不然个倒霉的,就#include "busybox.h"可能是自己
Android是基于Linux系统的,在学习和使用Android系统时,清单 17. 向 usage.h 添加帮助信息不可避免的要和Terminal打交道。但是Android自带的Terminal emulator实在是简陋,连一些基本的命令都不具备。有没有什么解决方法呢?有的,这便是被称为“嵌入式Linux中的瑞士”的Busybox。
BusyBox 命令中支持的选项
BusyBox 中的命令并不支持所有可用选项,不过这些命令都包含了常用的选项。如果我们需要知道一个命令可以支持哪些选项,可以使用 -- 选项来调用这个命令,如清单 12 所示。
清单 12. 使用 -- 选项调用命令
$ ./busybox wc --
Usage: wc [OPTION]... [FILE]...
Print line, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, read standard input.
Options:
-c print the byte counts
-l print the newline counts
-L print the length of the longest line
-w print the word counts
$这些特定的数据只有在启用了 CONFIG_FEATURE_VERBOSE_USAGE 选项时才可以使用。如果没有这个选项,我们就无法获得这些详细数据,但是这样可以节省大约 13 KB 的空间。
向 BusyBox 添加一个新命令非常简单,这是因为它具有良好定义的体系结构。个步骤是为新命令的源代码选择一个位置。我们要根据命令的类型(网络,shell 等)来选择位置,并与其他命令保持一致。这一点非常重要,因为这个新命令最终会在 menuconfig 的配置菜单中出现(在下面的例子中,是 Miscellaneous Utilities 菜单)。
对于这个例子来说,我将这个新命令称为 newcmd,并将它放到了 ./miscutils 目录中。这个新命令的源代码如清单 13 USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))所示。
清单 13. 集成到 BusyBox 中的新命令的源代码
int newcmd_main( int argc, char argv[] )
{int i;
printf("newcmd called:n");
for (i = 0 ; i < argc ; i++) {
printf("arg[%d] = %sn", i, argv[i]);
}return 0;
}接下来,我们要将这个新命令的源代码添加到所选子目录中的 Makefile.in 中。在本例中,我更新了 ./miscutils/Makefile.in 文件。请按照字母顺序来添加新命令,以便维持与现有命令的一致性:
清单 14. 将命令添加到 Makefile.in 中
MISCUTILS-$(CONFIG_NEWCMD) += newcmd.o
MISCUTILS-$(CONFIG_RUNLEVEL) += runll.o
接下来再次更新 ./miscutils 目录中的配置文件,以便让新命令在配置过程中是可见的。这个文件名为 Config.in,新命令是按照字母顺序添加的:
清单 15. 将命令添加到 Config.in 中
config CONFIG_NEWCMD
bool "newcmd"
default n
这个结构定义了一个新配置项(通过 config 关键字)以及一个配置选项(CONFIG_NEWCMD)。新命令可以启用,也可以禁用,因此我们对配置的菜单属性使用了 bool (Boolean)值。这个命令默认是禁用的(n 表示 No),我们可以放上一个简短的 Help 描述。在源代码树的 ./scripts/config/Kconfig-language.txt 文件中,我们可以看到配置语法的完整文法。
接下来需要更新 ./include/applets.h 文件,使其包含这个新命令。将下面这行内容添加到这个文件中,记住要按照字母顺序。维护这个次序非常重要,否则我们的命令就会找不到。
这定义了命令名(newcmd),它在 Busybox 源代码中的函数名(newcmd_main),应该在哪里会为这个新命令创建链接(在这种情况中,它在 /usr/bin 目录中),这个命令是否有权设置用户 id(在本例中是 no)。
#define newcmd_full_usage "None"
一个步骤是启用新命令(通过 make menuconfig,然后在 Miscellaneous Utilities 菜单中启用这个选项)然后使用 make 来编译 BusyBox。
使用新的 BusyBox,我们可以对这个新命令进行测试,如清单 18 所示。
清单 18. 测试新命令
$ ./busybox newcmd arg1
newcmd called:
arg[0] = newcmd
$ ./busybox newcmd --
Usage: newcmd None
None
就是这样!BusyBox 开发人员开发了一个但非常容易扩展的工具。
结束语
1.USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))
故使用源码中的类似语句 APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER) 替代之,编译通过
2.但是 在此时测试命令的时候并没有得到上文给出的结果,而是提示:
"#./busybox newcmd
newcmd: applet not found "
和“
# ./newcmd 11
11: applet not found
显示d:bind:地址已在使用,你可BusyBox v1.1.1 (2006.04.12-13:47+0000) multi-call binary以使用netstat pnt | grep "地址的端口号"(应该是80),然后kill (pid号), 就ok了
busybox是很多标准 Linux工具的一个单个可执行实现,在嵌入式Linux系统中有广泛使用,可看做一个可裁剪的工具集,涵盖了正常Linux系统中的许多常用的内建命令,但体积要小很多。
使用的时候可裁剪掉不需要的命令,命busybox可以不用htttpd.conf,直接d -h /www,令选项也可以裁剪。
更多介绍,请参考IBM网站上的文档《BusyBox 简化嵌入式 Linux 系统》:
1. 创建并启动容器 docker cre清单 16. 将命令添加到 applets.h 中ate命令来创建容器 $ docker create -it --name=busybox busybox 1 容器启动有两种方式: 使用docker start命令基于
2. 终止容器 容器停止用docker stop 命令。格式为: docker stop [-t]|–time[=10]. 该命令首先会向运行中的容器发送SIGTERM信号,如果
3. 进入容器 处于运行状态的容器可以通过docker
简单的说吧,Busybox能够给予手机额外的LINUX/UNIX基层指令手机一般不会集成这些指令的,但是某些需要root权限才能执行的任务却需要这些指令...然后你就要安usybox了...至于要不要安...就看你用什么软件咯..一般软件都不需要的..
newcmd is a new test command.这个帖子表达busybox,让我懂了一些,我装过busybox,没看出来怎么用就删除了,原来是菜鸟不需要的一个软件.
busybox pro 只是提供很多命令行的程序,这些程序使用起来非常方便,但是你只能安装一个终端软件才能使用这些命令,android 本身的终端程序太少,安usybox pro后,可用的命令就会多很多,但是我感觉还是太少向 BusyBox 中添加新命令。 ^_~
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。