美文网首页程序员
busybox命令映射之旅(原创)

busybox命令映射之旅(原创)

作者: mythoi | 来源:发表于2018-06-10 15:34 被阅读0次

什么是busybox

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。它很小,只有1M+,却几乎可以运行所有的Linux命令,且易移植,是嵌入式开发的利器,它被称为Linux的瑞士军刀。

准备工作

下载busybox官网

运行方式

比如放到安卓手机上运行,我们都知道虽然安卓是基于linux内核的,但命令被阉割得少到可怜,如果安装上busybox,将为手机增加了三百多个linux命令,代价也小,因为它真的很小(但运行起来,受到限制,它必须依赖于busybox 这个命令),使用这个命令前先把这个busybox可执行文件配置到环境变量中,比如要运行linux的ls命令:busybox ls, 忘了说的是busybox还有一个特点,就是将busybox这个可执行文件重命名为对应的linux命令名称,运行它就会是这个命令的效果,比如将busybox可执行文件重命名为ls,我们在终端直接输入ls,便可以直接运行它,不用busybox ls这么麻烦了,而且也为其他程序提供了命令环境,但busybox总共有三百多个命令,如果每个命令都这样做,那么代价会很大,从一M增大到了三百多M的存储空间。ps:busybox是C语言写的,busybox通过不同的文件名运行不同命令的原理其实很简单,int main(int argc,char*argv)这个程序入口的第一个参数是终端传递过来的参数个数,第二个参数就是终端传递过来的内容,argv[0]就是当前被执行的文件名本身,busybox就是根据这个来实现不同文件名执行不同的命令。

busybox命令映射

将以下代码编译为可执行文件,并将它重命名为busybox的各种命令的名称,我们将它统一放到bin/目录下,方便我们配置环境变量,这时bin目录下的文件总共有三百多个了,其实就两个文件,busybox本身和下面程序的可执行文件,只是文件名不同罢了,文件名就是busybox的命令名称。通过命令映射就可以降低代价,实现相同的效果

#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[]){
       char *busybox=(char*)malloc(sizeof(8));
       strcpy(busybox,"busybox");
       for(int i=0;i<argc;i++){
        strcat(busybox," ");
        strcat(busybox,argv[i]);
       }
       system(busybox);  
       printf("\n===busybox命令映射 by mythoi=====\n\n");     
       return 0;
    }

完结

第一次写简书,排版布局不熟练,描述的也不是很清晰。希望大家多多支持

相关文章

  • busybox命令映射之旅(原创)

    什么是busybox BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。它很小,只有1M+,却...

  • ARTDroid使用说明

    busybox安装1.0 BusyBox说明Busy是一个集成了部分linux命令和工具的软件。BusyBox开发...

  • 思科防火墙

    telnet 服务启用,集成了busybox命令集,使用 busybox telnetd -F 前台运行用户名tc...

  • 第九章:操作系统

    9.1BusyBox busybox镜像虽然小巧,但包括了大量常见的Linux命令,被誉为“Linux系统的瑞士军...

  • [mydocker]---一步步实现使用busybox创建容器

    1. 准备工作 1.1 准备环境 1.2 准备busybox 执行以下两个命令获得busybox, 并放入每个目录...

  • busybox tftp命令介绍

    今天在调试mp4播放时,由于单板USB、SdCard等存储接口皆不可用,只能选择通过网络下载文件,下载过程中遇到如...

  • SQLite3 相关记录

    1. 手机内安装 sqlite3 命令工具 busybox 的下载,去应用商店安装 用命令 “uname -a” ...

  • android 手机安装linux

    所需工具 root手机手机上安装Busybox 安装linux 命令的 手机自带的命令不全 否则linux dep...

  • 第四节、利用images镜像启动容器

    首先从官方镜像站拉一个最新的busybox镜像包 Docker常用管理命令container的子命令 利用ngin...

  • 创建busybox docker镜像

    1、下载busybox解压 2、make defconfig 配置busybox 3、make 编译busybox...

网友评论

    本文标题:busybox命令映射之旅(原创)

    本文链接:https://www.haomeiwen.com/subject/rcofeftx.html