BusyBox

BusyBox on tarkvara, mis ühes käivitatavas failis sisaldab komplekti vähendatud funktsionaalsusega UNIXi tööriistu.
See töötab POSIX-i keskkondades nagu Linux, Android ja FreeBSD, kuigi paljud selle pakutavad tööriistad on kavandatud töötama Linuxi tuuma toetatud liidestega. Busybox on spetsiaalselt loodud piiratud ressurssidega manusoperatsioonisüsteemide jaoks. See on avaldatud vabatarkvarana GNU Üldise Avaliku Litsentsi v2 tingimuste kohaselt.
Ajalugu.
Päritolu.
BusyBoxi kirjutas 1995. aastal Bruce Perens ning kuulutas 1996. aastal 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 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 haldamise ü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 "udev"i (või kaasaegsema versiooni, systemd), ennast käivitamisel "init"ina ning käigultvahetusel ("hotplug") "mdev"ina 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 üks 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, "asmutils"i 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.