Busybox projesi Debian GNU/Linux dağıtımı kurulum programının çalışabilmesi için oluşturulan 2 disketlik
Linux sisteminde kullanılmak üzere geliştirilmiştir. Burada amaç, kurulum için gerekli ufak fakat
çok sık kullanılan uygulamaları (cp, mv,
tar, ls, sh,
find, init vb.) yeniden yazarak tek bir uygulama
üretmek ve böylece yerden kazanmaktı. Busybox bu yer kazancını, uygulamaların sık kullanılmayan
özelliklerini desteklemeyen sürümlerinin yeniden yazılmasıyla gerçekleştiriyordu. Örnek olarak
find komutu normalde onlarca parametre ile çalıştırılabilirken Busybox
içerisinden çıkan find, sadece en sık kullanılan beş parametresini
desteklemektedir. Bu koşul gözönünde bulundurularak en temel uygulamalar yeniden yazılmış ve sonuçta
300-400 kB büyüklüğündeki bir dosya ile, her biri ayrı ayrı kullanıldığında normalde 4-5 MB toplam
yer kaplayacak olan uygulamalar ile aynı işlevsellik büyük ölçüde sağlanabilmiştir.
Sistemimizde busybox kullanımı disk alanından kazanç sağlayacaktır. Busybox'ın
bir diğer önemli özelliği modüler yapısı sayesinde istediğimiz parçaları ekleyip çıkarabilmemizdir.
Busybox'ı derlemeden önce Config.h dosyasını bir metin düzenleyici ile istediğiniz
gibi düzenleyebilirsiniz. Bu dosyanın biçimi aşağıdaki gibidir:
//#define BB_LOGNAME
//#define BB_LOSETUP
#define BB_LS
#define BB_LSMOD
//#define BB_MAKEDEVS
//#define BB_MD5SUM
#define BB_MKDIR
//#define BB_MKFIFO
//#define BB_MKFS_MINIX
#define BB_MKNOD
#define BB_MKSWAP
//#define BB_MKTEMP
Standart bir C başlık dosyası olan Config.h içerisinden istediğiniz özellikleri
yukarıdaki örnekte olduğu gibi ekleyebilir ve çıkarabilirsiniz. Böylelikle sadece size gerekli olan
bileşenleri içeren bir busybox derleyebilirsiniz.
busybox derlendikten sonra sistemde sadece busybox
programının olması, ls, cp vb. gibi desteklenen
uygulamaların ise busybox'a sembolik bağ olarak bağlı olması yeterlidir.
busybox kendi başına çalıştırıldığında ise içerdiği uygulamaları listeler:
laptop:/usr/src/busybox-0.60.5$ ./busybox
BusyBox v0.60.5 (2003.04.22-14:09+0000) multi-call binary
Usage: busybox [function] [arguments]...
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:
[, ash, basename, busybox, cat, chgrp, chmod, chown, chroot, chvt,
clear, cp, cut, date, dd, df, dirname, dmesg, du, echo, env, false,
find, free, grep, gunzip, gzip, halt, head, id, init, kill, killall,
klogd, linuxrc, ln, logger, ls, lsmod, mkdir, mknod, mkswap, modprobe,
more, mount, mv, pidof, poweroff, ps, pwd, reboot, reset, rm,
rmdir, sed, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
tar, test, touch, true, tty, umount, uname, uniq, uptime, wc,
which, whoami, xargs, yes, zcat
busybox kaynak kodlarını
http://www.busybox.net/downloads/
adresinden indirebilirsiniz. tar.gz arşivi indirip açtıktan sonra bu dizine geçip,
Config.h dosyasını düzenlemelisiniz. Gene aynı dizindeki
Makefile
dosyasını inceleyerek programın derlenme aşamasındaki seçenekleri değiştirebilirsiniz. Bu adımları
tamamladıktan sonra
make ve
make install
komutlarıyla programın derlenmesini ve kuruluma hazır hale gelmesini sağlıyoruz.
make komutunun çalışması bittiğinde elimizde bir
busybox
uygulaması oluyor.
make install ise bulunduğunuz dizinde
_install adında bir alt dizin açıyor ve
busybox
uygulamasını olması gereken sembolik bağlar ile birlikte buraya kopyalıyor:
laptop:/usr/src/busybox-0.60.5$ ls -l _install/usr/sbin
total 0
lrwxrwxrwx 1 demirten demirten 17 May 30 00:05 chroot -> ../../bin/busybox
lrwxrwxrwx 1 demirten demirten 17 May 30 00:05 fbset -> ../../bin/busybox
Burada bin, sbin, usr/bin ve
usr/sbin dizinleri oluşturulmuş, bin dizini altına
busybox'ın kendisi atılmış, ilgili tüm sembolik bağlar oluşturulmuştur.
Bu dizini tgz arşivi haline getirerek disketle SBC üzerine taşıyıp orada açalım:
laptop:/usr/src/busybox-0.60.5$ cd _install
laptop:/usr/src/busybox-0.60.5/_install$ tar cvfz /tmp/busy-bin.tgz .
...
Oluşan busy-bin.tgz arşivinin boyu 180 kB gibi çok küçük bir değer olduğu için
disket ile SBC üzerine rahatlıkla taşınabilir. Daha önceden yaptığımız gibi disketi sisteme bağlayıp
busy-bin.tgz dosyasını kopyalıyoruz. Ardından bu disketi SBC sistemine takıp
bağladıktan sonra aşağıdaki komutlarla arşivi açıyoruz:
# cd /hedef
# cp /floppy/busy-bin.tgz .
# tar zxvf busy-bin.tgz
...
Artık SBC sistemimiz üzerinde onlarca kullanıma hazır temel uygulama var.