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[1] 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.[2]

Ajalugu muuda

Päritolu muuda

BusyBoxi kirjutas 1995. aastal Bruce Perens ning kuulutas 1996. aastal valminuks.[3] 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.[4]

GPLv2/GPLv3 vastuolud muuda

2006. aasta septembris, pärast BusyBoxi hooldaja Rob Landley ja algse autori Bruce Perensi[5] vaidlusi, otsustati, et BusyBox[6][7] ei võta vastu GNU Üldise Avaliku Litsentsi versiooni 3 (GPLv3); täpsustati, et BusyBoxi litsents kuulub ainult GPL versiooni 2 (GPLv2) alla.[8]

Sama aasta oktoobris lõi Rob Landley Toyboxi ning BusyBoxi uueks hooldajaks sai Denys Vlasenko.[6][9]

Elemendid muuda

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.[10]

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.[11]

Üksainus binaarfail muuda

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)[12] 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"[13] 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öö[14], 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 muuda

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

Näited muuda

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 muuda

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.[16] 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.[17] 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.[18]

Viited muuda

  1. BitCubate X. "BusyBox Classic Lite". Vaadatud 16. aprillil 2018.
  2. Busybox. "BUSYBOX". Vaadatud 16. aprillil 2018.
  3. Rob Landley. "Forensics". Vaadatud 16. aprillil 2018.
  4. Rob Landley. "Rationale". Vaadatud 16. aprillil 2018.
  5. Bruce Perens. "Statement on Busybox Lawsuits". Bruce Perens' Weblog. Originaali arhiivikoopia seisuga 20. detsember 2009. Vaadatud 16. aprillil 2018.
  6. 6,0 6,1 corbet (1. oktoober 2006). "Busy busy busybox". Vaadatud 16. aprillil 2018.
  7. corbet (1. oktoober 2006). "Re: Move GPLv2 vs v3 fun..." Vaadatud 16. aprillil 2018.
  8. corbet (1. oktoober 2006). "GPL version 2 only for BusyBox 1.3.0". Vaadatud 16. aprillil 2018.
  9. corbet (1. oktoober 2006). "I'm going out now. I may be some time". Vaadatud 16. aprillil 2018.
  10. "ash variants". Vaadatud 16. aprillil 2018.
  11. "BusyBox - The Swiss Army Knife of Embedded Linux". Vaadatud 16. aprillil 2018.
  12. "BusyBox simplifies embedded Linux systems". Originaali arhiivikoopia seisuga 9. detsember 2008. Vaadatud 16. aprillil 2018.
  13. "crunchgen". Vaadatud 16. aprillil 2018.
  14. Doug Thayer, Keith Miller (16.–17.04.2004). "Four UNIX Programs in Four UNIX Collections: Seeking Consistency in an Open Source Icon" (PDF). Vaadatud 2018-04-16. {{netiviide}}: kontrolli kuupäeva väärtust: |aeg= (juhend)
  15. "BusyBox Command Help". Vaadatud 16. aprillil 2018.
  16. Rob Landley. "License change commit". Toybox mercurial repository. Vaadatud 16. aprillil 2018.
  17. Tim Bird. "Busybox replacement project". Vaadatud 16. aprillil 2018.
  18. Matthew Garrett (31. jaanuar 2012). "Garrett: The ongoing fight against GPL enforcement". Vaadatud 16. aprillil 2018.