BusyBox

Päritolu

BusyBoxi kirjutas 1995. aastal Bruce Perens ning 1996. aastal kuulutas ta selle valminuks. Algselt oli BusyBox mõeldud ühele ümbrikkettale mahtuvaks alglaaditavaks süsteemiks, mis käituks ka kui päästerõngas ja Debiani distributsiooni installer, kuid alates sellest ajast on Busybox on muutunud de facto standardiks Linuxi distributsiooni installerite ning Linuxi manusoperatsioonisüsteemide tuumikkasutajate ruumi tööriistakomplektide seas. Kuna igal Linuxi käivitataval failil on mitmeid kilobaite üldkulusid, aitab BusyBoxi-poolne sadade programmide kombineerimine kokku hoida märkimisväärset kettaruumi ja süsteemimälu.
BusyBoxi haldas Enrique Zanardi, keskendudes Debiani distributsiooni alglaaditavate ümbrikketaste installatsioonisüsteemile kuni 1998. aasta alguseni, mil Dave Cinege võttis selle haldaumise üle Linux Router Projecti (LRP) jaoks. Cinege tegi mitmeid lisandusi, lõi modulaarse ehituskeskkonna ja suunas BusyBoxi fookuse üldiste kõrgetasemeliste manusoperatsioonisüsteemide poole. Kuna LRP areng aeglustus 1999. aastal, võttis Erik Andersen 1999. aasta detsembrist BusyBoxi projekti hooldamise üle ning püsis selles ametis 2006. aasta märtsini. Rob Landleyst sai projekti hooldaja 2005. aastal ning jätkas selles rollis aastaid.

GPLv2/GPLv3 vastuolud

2006. aasta septembris, pärast BusyBoxi hooldaja Rob Landley ja algse autori Bruce Perensi vaidlusi, otsustati, et BusyBox ei võta vastu GNU Üldise Avaliku Litsentsi versiooni 3 (GPLv3); täpsustati, et BusyBoxi litsents kuulub ainult GPL versiooni 2 (GPLv2) alla.
Sama aasta oktoobris lõi Rob Landley Toyboxi ning BusyBoxi uueks hooldajaks sai Denys Vlasenko.

Elemendid

BusyBoxi saab kasutaja vastavalt soovidele kohandada, valides alamhulka rohkem kui kahesajast käsust. BusyBox võib pakkuda enamikku ühtse UNIX-spetsifikatsiooni (SUS) käskudest, mida kasutaja Linuxi süsteemist leida ootaks. BusyBox kasutab Almquisti käsuprotsessorit.
Kuna tegemist on täieliku alglaadursüsteemiga, asendab see aktiveerimisdeemoni (init daemon) ja udevi (või kaasaegsema versiooni, systemd), ennast käivitamisel initina ning käigultvahetusel (hotplug) mdevina välja kutsudes.
BusyBoxi veebisait pakub täielikku loetelu pakutavatest käskudest.

Üksainus binaarfail

Tüüpilistel arvutiprogrammidel on iga rakenduse jaoks eraldi binaarfail (käivitatav fail). BusyBox on üksik binaarfail, kuhu on kogutud mitmed rakendused, millest igaühele pääseb ligi üheainsa BusyBoxi binaarfaili väljakutsega eri nimede abil (mida toetavad sümbolillised lingid või kõva lingi kasutamine iga nime jaoks) asjakohaste argumentidega.
BusyBox saab kasu üheainsa binaarfaili lähenemisest, kuna see vähendab käivitatava failivormingu (tavaliselt ELF) üldkulusid ja võimaldab koodi rakenduste vahel jagada ilma teeke kasutamata. See meetod sarnaneb FreeBSD võimaldatava "crunchgen" käsuga selle erinevusega, et BusyBox pakub käskude lihtsustatud versioone (näiteks käsku ls, ilma failide sortimise võimeta), samas kui "crunchgeni" genereeritud käsud pakuvad täisfunktsionaalseid versioone.
Ühise koodi jagamine koos suuruse optimeerimisele suunitletud praktikate kasutusega võib BusyBox süsteemi muuta palju väiksemaks võrreldes süsteemiga, mis on ehitatud BusyBoxi käskude täisversioonidega. Teadustöö, milles võrreldi GNU, BusyBoxi, asmutilsi ja Perli implementatsioone standardsetest UNIX-käskudest, näitas, et mõnes olukorras võib BusyBox toimida kiiremini kui teised rakendused.

Käsud

Ametlikus BusyBoxi dokumentatsioonis on ülevaade saadaolevatest käskudest vastavate käsureavõtmetega.

Näited

BusyBoxis sisalduvaid programme saab käivitada lisades nende nime BusyBoxi käsureavõtmeks:
/bin/busybox ls
Sagedamini lingitakse soovitud käskude nimesid kas kõvade või sümboliliste linkidega BusyBoxi käivitatava programmiga. BusyBox loeb esimest käsureavõtit, leidmaks käsu nime, ning käivitab vastava programmi, näiteks
/bin/ls
pärast seda, kui /bin/ls on lingitud /bin/busybox'iga.
BusyBox näeb, et tema "nimi" on "ls" ning ta käituks kui "ls" programm.

Toyboxi vastuolud

Toyboxi projekti alustas 2006. aasta alguses GNU Üldise Avaliku Litsentsi all GPLv2 / GPLv3 vastuolude tagajärjel endine BusyBoxi haldaja Rob Landley. 2011. aasta lõpus litsentseeriti Toybox ümber BSD-litsentsi alla. 11. jaanuaril 2012. aastal pakkus Sony töötaja Tim Bird välja BusyBoxile GNU Üldise Avaliku Litsentsi alla mitte kuuluva alternatiivi loomise ning Bird soovitas, et see oleks just Toyboxi põhjal. 2012. aasta jaanuaris välja pakutud BSD-litsentsiga alternatiiv Üldise Avaliku Litsentsi all olevale BusyBoxile sai suurt kriitikat vabavaraaktivistilt Matthew Garrettilt, kelle arust Üldise Avaliku Litsentsi eemaldamine tähendas Software Freedom Conservancy ainsa asjakohase autoriõiguste kaitsmise võimaluse eemaldamist.