BusyBox

Allikas: Vikipeedia
Jump to navigation Jump to search

BusyBox on tarkvara, mis pakub ühes käivitatavas failis mitmeid vähendatud funktsionaalsusega UNIXi tööriistu. See töötab erinevates 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 | muuda lähteteksti]

Päritolu[muuda | muuda lähteteksti]

BusyBoxi kirjutas 1995. aastal Bruce Perens ning 1996. aastal kuulutas ta selle valminuks.[3] Algselt oli BusyBox mõeldud ühele ümbrikkettale mahtuvaks alglaetavaks 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 alglaetavate ü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. [4]

GPLv2 / GPLv3 vastuolud[muuda | muuda lähteteksti]

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 | muuda lähteteksti]

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 | muuda lähteteksti]

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 erinevate nimede abil (mida toetavad sümbolillised lingid või kõva lingi kasutamine iga erineva 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õimaldatavale "crunchgen"[13] käsule 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 | muuda lähteteksti]

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

Näited[muuda | muuda lähteteksti]

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 | muuda lähteteksti]

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 | muuda lähteteksti]

  1. BitCubate X. "BusyBox Classic Lite". Kasutatud 2018-04-16.
  2. Busybox. "BUSYBOX". Kasutatud 2018-04-16.
  3. Rob Landley. "Forensics". Kasutatud 2018-04-16.
  4. Rob Landley. "Rationale". Kasutatud 2018-04-16.
  5. Bruce Perens. "Statement on Busybox Lawsuits". Bruce Perens' Weblog. Kasutatud 2018-04-16.
  6. 6,0 6,1 corbet. "Busy busy busybox". 2006-10-01. Kasutatud 2018-04-16.
  7. corbet. "Re: Move GPLv2 vs v3 fun...". 2006-10-01. Kasutatud 2018-04-16.
  8. corbet. "GPL version 2 only for BusyBox 1.3.0.". 2006-10-01. Kasutatud 2018-04-16.
  9. corbet. "I'm going out now. I may be some time.". 2006-10-01. Kasutatud 2018-04-16.
  10. "ash variants". Kasutatud 2018-04-16.
  11. "BusyBox - The Swiss Army Knife of Embedded Linux". Kasutatud 2018-04-16.
  12. "BusyBox simplifies embedded Linux systems". Kasutatud 2018-04-16.
  13. "crunchgen". Kasutatud 2018-04-16.
  14. Doug Thayer, Keith Miller. [http://www.micsymposium.org/mics_2004/ThayerMiller.pdf"Four UNIX Programs in Four UNIX Collections: Seeking Consistency in an Open Source Icon"]. 16.–17.04.2004. Kasutatud 2018-04-16.
  15. "BusyBox Command Help". Kasutatud 2018-04-16.
  16. Rob Landley. "License change commit". Toybox mercurial repository. Kasutatud 2018-04-16.
  17. Tim Bird. "Busybox replacement project". Kasutatud 2018-04-16.
  18. Matthew Garrett. "Garrett: The ongoing fight against GPL enforcement". 2012-01-31. Kasutatud 2018-04-16.