busybox添加wireless tool工具

busybox的代码采用静态编译,所以动态编译的wireless tool无法使用,故添加到busybox中来,前面blog中已经介绍了tree的添加,所以此处只添加代码。


把所有的命令都添加到busybox/networking/

arp.c         httpd_indexcgi.c       ip.c           iwlib.o        nc_bloaty.c         slattach.o            vconfig.o
arping.c      httpd.o                ipcalc.c       iwlist.8       nc.c                tc.c                  wget.c
arping.o      httpd_post_upload.txt  ipcalc.o       iwlist.c       nc.o                tcpudp.c              wget.o
arp.o         httpd_ssi.c            ip.o           iwlist.o       netstat.c           tcpudp.o              wireless.10.h
brctl.c       ifconfig.c             isrv.c         iwmulticall.c  netstat.o           tcpudp_perhost.c      wireless.11.h
brctl.o       ifconfig.o             isrv.h         iwpriv.8       nslookup.c          tcpudp_perhost.h      wireless.12.h
built-in.o    ifenslave.c            isrv_identd.c  iwpriv.c       nslookup.o          tcpudp_perhost.o      wireless.13.h
Config.in     ifenslave.o            isrv_identd.o  iwpriv.o       ntpd.c              telnet.c              wireless.14.h
Config.src    ifplugd.c              isrv.o         iwspy.8        ntpd.o              telnetd.c             wireless.15.h
dnsd.c        ifplugd.o              iwconfig.8     iwspy.c        ntpd_simple.c       telnetd.ctrlSQ.patch  wireless.16.h
dnsd.o        ifrename.8             iwconfig.c     iwspy.o        ping.c              telnetd.o             wireless.17.h
ether-wake.c  ifrename.c             iwconfig.o     Kbuild         ping.o              telnet.o              wireless.18.h
ether-wake.o  ifrename.o             iwevent.8      Kbuild.src     pscan.c             tftp.c                wireless.19.h
ftpd.c        iftab.5                iwevent.c      lib.a          pscan.o             tftp.o                wireless.20.h
ftpd.o        ifupdown.c             iwevent.o      libiproute     route.c             traceroute.c          wireless.21.h
ftpgetput.c   ifupdown.o             iwgetid.8      libiw.so.29    route.o             traceroute.o          wireless.22.h
ftpgetput.o   inetd.c                iwgetid.c      macaddr.c      sample_enc.c        tunctl.c              wireless.7
hostname.c    inetd.o                iwgetid.o      MakefileMake   sample_pm.c         tunctl.o              wireless.h
hostname.o    interface.c            iwlib.c        nameif.c       sample_priv_addr.c  udhcp                 zcip.c
httpd.c       interface.o            iwlib.h        nameif.o       slattach.c          vconfig.c             zcip.o

1,在miscutils目录下添加.c文件,函数名要与其它.c文件里面的函数名的格式保持一致,即命令名tree_main(),刚下载下来的时候是main,修改为tree_main即可。

2,修改编译文件,因为仅添加.c源文件,busybox编译系统不知道有新的代码添加进来,make的时候也不会编译tree.c文件,所以要修改Config.src文件(添加命令的整个过程跟添加内核驱动类似--内核是Kconfig):

config IWCONFIG
bool "iwconfig"
default y
help
 iwconfig the wireless


config IFRENAME
bool "ifrename"
default y
help
 iwconfig the wireless


config IWEVENT
bool "iwevent"
default y
help
 iwconfig the wireless


config IWGETID
bool "iwgetid"
default y
help
 iwconfig the wireless


config IWLIST
bool "iwlist"
default y
help
 iwconfig the wireless


config IWPRIV
bool "iwpriv"
default y
help
 iwconfig the wireless


config IWSPY
bool "iwspy"
default y
help
 iwconfig the wireless

3,修改编译文件Kbuild.src,编译tree命令需要这个几个文件。

lib-$(CONFIG_IWCONFIG)     += iwlib.o iwconfig.o
lib-$(CONFIG_IFRENAME)     += iwlib.o ifrename.o
lib-$(CONFIG_IWEVENT)      += iwlib.o iwevent.o
lib-$(CONFIG_IWGETID)      += iwlib.o iwgetid.o
lib-$(CONFIG_IWLIST)       += iwlib.o iwlist.o
lib-$(CONFIG_IWPRIV)       += iwlib.o iwpriv.o
lib-$(CONFIG_IWSPY)        += iwlib.o iwspy.o

4,修改/include/applets.src.h文件

IF_IWCONFIG(APPLET(iwconfig, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IFRENAME(APPLET(ifrename, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IWEVENT(APPLET(iwevent, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IWGETID(APPLET(iwgetid, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IWLIST(APPLET(iwlist, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IWPRIV(APPLET(iwpriv, _BB_DIR_BIN, _BB_SUID_DROP))
IF_IWSPY(APPLET(iwspy, _BB_DIR_BIN, _BB_SUID_DROP))

5,为命令添加帮助信息,以便使用--help的时候查阅,此处None可以随便修改
vim usage.src.h 

#define iwconfig_trivial_usage  "None"
#define iwconfig_full_usage "None"
#define ifrename_trivial_usage  "None"
#define ifrename_full_usage "None"
#define iwevent_trivial_usage  "None"
#define iwevent_full_usage "None"
#define iwgetid_trivial_usage  "None"
#define iwgetid_full_usage "None"
#define iwlist_trivial_usage  "None"
#define iwlist_full_usage "None"
#define iwpriv_trivial_usage  "None"
#define iwpriv_full_usage "None"
#define iwspy_trivial_usage  "None"
#define iwspy_full_usage "None"

6,make

7,make install

我把可以使用的roots文件系统,压缩上传到资源里面。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BusyBox 是一个精简的 Linux 工具集合,它包含了大量的常用命令,如 ls、cp、mv、rm 等,它可以运行在嵌入式系统和资源有限的环境中。虽然 BusyBox 已经包含了大部分常用的命令,但是有时候我们可能需要添加一些额外的命令。 要添加命令BusyBox,我们首先需要获取 BusyBox 的源代码。然后,在源代码中找到命令的配置文件,这通常是一个以 .config 结尾的文件。在这个配置文件中,我们可以找到已经包含的命令列表。要添加一个新命令,我们可以简单地在配置文件中添加命令的选项,并将其设置为 "y" 或 "m",表示该命令是开启的。如果所需的命令相关的依赖也没有包含在 BusyBox 中,我们还需要将依赖的选项也设置为 "y" 或 "m"。 接下来,我们需要重新编译 BusyBox。在终端中进入 BusyBox 源代码目录,运行 make 命令以重新编译该工具集合。编译完成后,我们就可以在输出目录中找到新的 BusyBox 可执行文件。 最后,我们可以将新的 BusyBox 可执行文件拷贝到目标系统中,替换原有的 BusyBox 可执行文件即可。现在,我们就可以使用我们刚刚添加的新命令了。 总的来说,虽然 BusyBox 已经包含了大量的常用命令,但添加命令也是相对简单的。只需获取源代码,修改配置文件,重新编译,替换原有的可执行文件,就可以轻松地扩展 BusyBox 的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值