被譽為嵌入式 Linux 的「瑞士刀」,將百餘個常用 UNIX 命令整合到單一執行檔中。透過符號連結機制,同一執行檔根據呼叫名稱執行不同功能(如 ls 連結到 busybox 執行列目錄)。單一執行檔最大化共享程式碼、檔案頭、記憶體控制區塊,極大減少資源佔用。
wget https://www.busybox.net/downloads/busybox-1.00.tar.gz
tar xzf busybox-1.00.tar.gz
cd busybox-1.00
make menuconfig三大關鍵配置區塊:
getty、login、passwd(原屬 tinylogin)telnetd(遠端除錯神器)init=/bin/sh 可直接進入 Shellmake
make install
產出結構:_install/{bin,sbin,usr,etc},執行檔約 300KB (動態) / 800KB (靜態),完整檔案系統可控制在 1MB 以內。
mkdir -p mnt root var tmp proc boot etc lib
mkdir -p var/{lock,log,mail,run,spool}
chown -R 0:0 *
# lib 目錄需包含:
ld-2.3.2.so
ld-linux.so.2 -> ld-2.3.2.so
libc-2.3.2.so
libc.so.6 -> libc-2.3.2.so
libcrypt-2.3.2.so
libcrypt.so.1 -> libcrypt-2.3.2.so
參考 busybox/examples/bootfloppy/etc/ 範例:
::sysinit:/etc/init.d/rcS
tty0::respawn:/sbin/getty 38400 tty0
tty2::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/bin/mount -o remount,ro /
/etc/init.d/rcSproc /proc proc defaults 0 0
/dev/hda1 / ext2 rw,noauto 0 1
devpts /dev/pts devpts defaults 0 0
第三行 devpts 為 telnetd 提供虛擬終端支援。
#!/bin/sh
# 掛載虛擬檔案系統
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
# 啟動系統服務
/sbin/syslogd
/sbin/klogd
# 網路初始化
ifconfig lo 127.0.0.1
ifconfig eth0 192.168.1.100
# 啟動 telnetd
telnetd
strip 進一步減小執行檔CONFIG_FEATURE_INSTALLER 支援模組化安裝CFLAGS (如 -march=armv5te)/etc/profile 設定環境變數與別名