busybox通过单一可执行文件和符号链接机制实现多命令调用,支持直接参数调用、自动安装链接及静态编译运行,是嵌入式系统精简根文件系统的核心工具。

要在嵌入式设备或精简Linux系统里执行文件操作、查看日志、挂载分区、调试硬件,必须掌握BusyBox提供的核心命令用法——它不是GNU工具的缩水版,而是用一个二进制文件撑起整套用户空间运转的生存协议。
用符号链接调用命令(最常用方式)
第一步:确认busybox可执行文件已存在且有执行权限
检查路径如/bin/busybox或/sbin/busybox,运行ls -l /bin/busybox,若显示-rwxr-xr-x则权限正常;若为-rw-r--r--,必须先执行chmod +x /bin/busybox,否则所有链接调用都会失败。
第二步:创建指向busybox的符号链接
执行ln -s /bin/busybox /bin/ls,此后运行ls就等价于调用busybox内置的ls功能。同理,ln -s /bin/busybox /bin/cat、ln -s /bin/busybox /bin/mount。
注意:链接名必须与目标命令完全一致,大小写敏感;LN -S或ls(小写L加小写N)写错会创建空文件而非链接。
第三步:验证链接是否生效
运行ls --help,输出应含“BusyBox v”字样;若报错“Command not found”,说明/bin不在PATH中,需临时补全:PATH=/bin:/sbin:$PATH ls --help。
直接通过busybox参数调用(免建链接)
方法一:用busybox cmd [args]格式
例如busybox ls -l /etc、busybox cat /proc/version。这种方式无需预先创建任何链接,适合一次性调试或init脚本早期阶段——那时符号链接可能还不存在。
方法二:用busybox --list查看全部可用命令
输出约400行命令名(取决于编译配置),每一行都是合法的cmd参数。这个列表就是你的命令路由表,也是判断当前busybox是否包含某功能的唯一依据。
【关键前提】必须确保busybox是静态编译的,否则busybox ls可能因缺少libc.so而报not found——这在initramfs或裸机rootfs中必然发生。
文件与日志类命令实操
用cat查看配置或内核信息:cat /proc/cpuinfo读取CPU型号;cat /proc/mounts确认已挂载分区;若文件过大卡住终端,加head -20截断:cat dmesg.log | head -20。
用grep快速过滤关键线索:dmesg | grep -i "usb"查USB初始化;cat /etc/inittab | grep -v "^#"剔除注释行看真实配置;注意busybox版grep不支持-P(Perl正则),用-E代替扩展正则。
用find定位丢失的二进制:find / -name "busybox" 2>/dev/null——2>/dev/null必须加上,否则大量“Permission denied”刷屏会淹没结果;若提示find: unrecognized: -name,说明编译时未启用CONFIG_FIND。
系统与存储操作命令
挂载proc/sysfs是启动shell的前提:
先执行mount -t proc proc /proc,再mount -t sysfs sysfs /sys;若报mount: no such file or directory,说明/proc或/sys目录不存在,需手动mkdir -p /proc /sys。
擦除闪存前务必确认设备节点:cat /proc/mtd列出MTD分区,找到目标如mtd1;然后运行flash_eraseall /dev/mtd1——这一步【不可逆】,没有回收站,执行即清空整个分区。
向NAND写固件要跳过坏块:nandwrite -p /dev/mtd2 firmware.bin,其中-p参数必不可少,否则写入遇到坏块会中断并报错,导致固件损坏。
硬件调试专用命令
读取内核日志定位驱动问题:dmesg -n 1 | tail -15只取最新15条;若想持续监听新消息,用dmesg -w(需busybox启用CONFIG_DMESG且内核支持)。
直接读写寄存器验证硬件响应:devmem 0x10060000 32读取地址0x10060000处32位值;写入则加数值:devmem 0x10060000 32 0x1。操作前必须确认该地址属于你有权访问的外设区域,写错地址可能锁死SOC。
扫描I²C总线上的传感器:i2cdetect -l列出现有I²C适配器(如i2cdetect -y 0探测0号总线上设备地址;若返回全是--,检查硬件连接或是否启用了CONFIG_I2C_TOOLS。











