当前位置:网站首页>busybox 知:构建
busybox 知:构建
2022-08-05 07:05:00 【canpool】
1. 前言
BusyBox 将许多常见 UNIX 实用程序的微小版本组合成一个小型可执行文件。它为您通常在 GNU fileutils、shellutils 等中找到的大多数实用程序提供了替代品。BusyBox 中的实用程序通常比它们功能齐全的 GNU 表亲具有更少的选项;但是,包含的选项提供了预期的功能,并且其行为与 GNU 对应项非常相似。BusyBox 为任何小型或嵌入式系统提供了一个相当完整的环境。
官网:https://busybox.net/
文本基于最新的 1.35.0 版本(2021年12月26日发布)介绍 busybox 的构建过程。
2. 构建
busybox 的编译与 Linux 内核的编译过程类似。从 http://www.busybox.net/downloads/ 可以下载目标版本的源码,解压后,通过以下几步,即可完成 busybox 的编译:
2.1. 下载
wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2
tar -jxf busybox-1.35.0.tar.bz2
cd busybox-1.35.0
2.2. 配置
make XXXconfig
busybox 提供了几种配置:defconfig (缺省配置)、allyesconfig(最大配置)、 allnoconfig(最小配置),一般选择缺省配置即可。
这一步结束后,在当前目录下生成 .config 配置文件
make menuconfig
这一步是可选的,当你认为上述配置中还有不尽如意的地方,可以通过这一步进行微调,加入或去除某些命令。
这一步实际上是修改 .config 配置文件
2.3. 编译
make CROSS_COMPILE=arm-linux-
或
make CROSS_COMPILE=
这一步就是根据 .config,生成 busybox,当然你也可以指定其他的编译器, 如:arm-linux-gnueabi-,当 CROSS_COMPILE= 时,表示采用宿主机的 gcc 进行编译,生成的 busybox 可以在宿主机上执行。
2.4. 举例
作者通过下面几步生成了 busybox 命令:
make defconfig
make CROSS_COMPILE=

3. 使用
busybox的使用很简单,有以下三种方式:
1)busybox 后直接跟命令,如:
busybox ls
busybox ps
2)直接将 busybox 重命名,如:
cp busybox ls
cp busybox ps
然后再执行 ls,ps 即可。
3)创建符号链接,如:
ln -s busybox ls
ln -s busybox ps
然后再执行 ls,ps 即可。
备注:后两种方式当执行ls时,虽然,实际调用 busybox,但是 busybox 获得的命令行参数却是 ls,因此,busybox 可通过命令行参数来确定调用的是哪个命令。
单独执行 busybox 可以显示帮助信息,并列出支持的命令:
[[email protected] busybox-1.35.0]$ ./busybox
BusyBox v1.35.0 (2022-08-03 23:02:38 CST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --show SCRIPT
or: busybox --install [-s] [DIR]
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, add-shell, addgroup, adduser, adjtimex, arch, arp, arping, ascii, ash, awk, base32, base64,
basename, bc, beep, blkdiscard, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat,
chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, conspy,
cp, cpio, crc32, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser,
depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, dpkg, dpkg-deb, du,
dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, factor,
fakeidentd, fallocate, false, fatattr, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find,
findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsfreeze, fstrim, fsync, ftpd, ftpget, ftpput,
fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hexedit, hostid,
hostname, httpd, hush, hwclock, i2cdetect, i2cdump, i2cget, i2cset, i2ctransfer, id, ifconfig, ifdown,
ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs,
iplink, ipneigh, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, link,
linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq,
lpr, ls, lsattr, lsmod, lsof, lspci, lsscsi, lsusb, lzcat, lzma, lzop, makedevs, makemime, man, md5sum,
mdev, mesg, microcom, mim, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod,
mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nanddump,
nandwrite, nbd-client, nc, netstat, nice, nl, nmeter, nohup, nologin, nproc, nsenter, nslookup, ntpd, od,
openvt, partprobe, passwd, paste, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill,
pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate,
rdev, readahead, readlink, readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize,
resume, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-init, run-parts, runlevel, runsv,
runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfattr, setfont,
setkeycodes, setlogcons, setpriv, setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha3sum,
sha512sum, showkey, shred, shuf, slattach, sleep, smemcap, softlimit, sort, split, ssl_client,
start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svc, svlogd, svok, swapoff, swapon,
switch_root, sync, sysctl, syslogd, tac, tail, tar, taskset, tc, tcpsvd, tee, telnet, telnetd, test,
tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, truncate, ts, tty, ttysize,
tunctl, ubiattach, ubidetach, ubimkvol, ubirename, ubirmvol, ubirsvol, ubiupdatevol, udhcpc, udhcpc6,
udhcpd, udpsvd, uevent, umount, uname, unexpand, uniq, unix2dos, unlink, unlzma, unshare, unxz, unzip,
uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, w, wall, watch, watchdog, wc,
wget, which, who, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat, zcip
4. 参考
边栏推荐
- TRACE32——Break
- Bluetooth gap protocol
- HR:这样的简历我只看了5秒就扔了,软件测试简历模板想要的进。
- TCP sticky packet unpacking problem + solution
- typescript60-泛型工具类型(readonly)
- binary search tree problem
- Shared memory + inotify mechanism to achieve multi-process low-latency data sharing
- Shiny02---Shiny异常解决
- Tencent Internship Summary
- 【win7】NtWaitForKeyedEvent
猜你喜欢

AI + video technology helps to ensure campus security, how to build a campus intelligent security platform?

IO进程线程->进程间的通信->day7

算法拾遗十五补链表相关面试题

Redis常用命令

Falsely bamboo brother today and found a localization of API to use tools

Shiny02---Shiny exception solution

七夕?编程?

Redis数据库学习

Flink学习12:DataStreaming API

游戏思考19:游戏多维计算相关:点乘、叉乘、点线面距离计算
随机推荐
Flink学习12:DataStreaming API
Vulnhub靶机:HA_ NARAK
Technical Analysis Patterns (11) How to Trade Head and Shoulders Patterns
Redis
UDP group (multi)cast
re正则表达式
开启防火墙iptable规则后,系统网络变慢
C-Eighty seven(背包+bitset)
国家强制性灯具安全标准GB7000.1-2015
不能比较或排序 text、ntext 和 image 数据类型
GAN generates anime avatar Pytorch
protobuf is compiled against the associated .proto file
Technical Analysis Mode (8) Double Top and Bottom
DNSlog外带数据注入
Using printf function in STM32
browserslist 选项的目的是什么?
JS实现从照片中裁切自已的肖像
女生做软件测试会不会成为一个趋势?
ARM Cortex-M上的Trace跟踪方案
400 times performance improvement 丨 swap valuation optimization case calculation