나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2023-09-10 20:11:51

BusyBox

1. 개요

BusyBox는 수많은 UNIX 명령행 유틸리티의 기능을 하나의 실행 파일 안에 통합시킨 소프트웨어이다. 공식 슬로건은 "임베디드 리눅스 업계의 스위스 아미 나이프(The Swiss Army Knife of Embedded Linux)".

2. 상세

몇백 KB 정도밖에 안 되는 작은 바이너리 속에 필수 UNIX 유틸리티 350여개의 기능이 얼추 들어가 있기 때문에, 임베디드 환경에서 널리 이용된다. BusyBox를 사용하는 임베디드 리눅스 환경에서 ls -al /bin 을 찍어 보면 수많은 명령어가 busybox로 심볼릭 링크되어 있는 모습을 볼 수 있다.

물론 용량 제약 때문에 각 명령어가 제공하는 기능들이 간략화되었기 때문에, GNU Coreutils나 POSIX/SUS 스펙에 비교하면 은근히 기능들이 빠져 있다는 단점이 있다.

BusyBox를 컴파일할 때 원하는 명령어("applet")를 포함할지 여부를 선택할 수 있다. 만약 350개의 유틸리티 모두가 필요하지 않다고 생각해서 덜어낸다면 몇십 KB밖에 안 하는 BusyBox 바이너리를 만들 수도 있다.

BusyBox는 GNU GPLv2 하에 배포되는 자유 소프트웨어이다.

2.1. 포함된 유틸리티

BusyBox는 작은 (ash-like)부터 텍스트 에디터(sed, vi-like)는 물론 네트워크 유틸리티(ifconfig, ifup...)에 이르기까지, 작은 용량에 비해 굉장히 풍부한 유틸리티 라인업을 자랑한다.

2023년 5월 19일 릴리즈된 1.36.1 기준, BusyBox에서 지원하는 애플릿의 목록은 다음과 같다.
[, [[, acpid, addgroup, adduser, adjtimex, ar, arp, arping, ash,
awk, basename, beep, blkid, brctl, bunzip2, bzcat, bzip2, cal, cat,
catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab,
cryptpw, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod,
devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
dos2unix, dpkg, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
env, envdir, envuidgid, expand, expr, fakeidentd, false, fbset,
fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs, flash_lock,
flash_unlock, fold, free, freeramdisk, fsck, fsck.minix, fsync,
ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, hd,
hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id,
ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, inotifyd,
insmod, install, ionice, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink,
iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd,
last, length, less, linux32, linux64, linuxrc, ln, loadfont,
loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr,
ls, lsattr, lsmod, lzmacat, lzop, lzopcat, makemime, man, md5sum,
mdev, mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.minix, mkfs.vfat,
mknod, mkpasswd, mkswap, mktemp, modprobe, more, mount, mountpoint,
mt, mv, nameif, nc, netstat, nice, nmeter, nohup, nslookup, od,
openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,
pivot_root, pkill, popmaildir, printenv, printf, ps, pscan, pwd,
raidautorun, rdate, rdev, readlink, readprofile, realpath,
reformime, renice, reset, resize, rm, rmdir, rmmod, route, rpm,
rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script,
scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,
setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum,
sha512sum, showkey, slattach, sleep, softlimit, sort, split,
start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv,
svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac,
tail, tar, taskset, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd,
time, timeout, top, touch, tr, traceroute, true, tty, ttysize,
udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand, uniq,
unix2dos, unlzma, unlzop, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, who,
whoami, xargs, yes, zcat, zcip

3. 사용 시스템

수많은 임베디드 리눅스 시스템에서 BusyBox를 사용하고 있다. 대표적인 예로 공유기(OpenWrt, DD-WRT 등), TV(webOS 등)이 있다.
Android에서는 기본탑재되어 있지는 않으나, 커스텀 롬 등에는 내장되어 있는 경우가 있으며, 루팅한 기기라면 Play Store에서 BusyBox를 설치하는 애플리케이션을 다운로드받아 설치할 수 있다.
Alpine Linux는 경량형 배포판이라는 특성상 임베디드가 아닌 데스크톱/서버용 운영체제임에도 BusyBox를 사용하고 있다.