![]() | ![]() |
![]() |
| ![]() |
| ||||||||||||||
Kompaktna kutija s alatom
Šta se dešava onda kada koristite distribuciju koja nema sve komande na koje ste navikli, a instalacija novog softvera nije jednostavna? Ili ako pokušavate da sklopite minijaturnu Linux distribuciju koja treba da radi na, recimo, embedded uređaju sa vrlo ograničenim kapacitetom skladištene memorije, gde stotine megabajta softvera naprosto nisu opcija? BusyBox donosi rešenje ovih problema. Ovaj projekat nastao je davne 1996. godine, kada je autor pokušao da napravi upotrebljivu Linux distribuciju koja može da se podigne s jedne jedine diskete. Kao što smo rekli, uobičajene Linux komande su obični izvršni fajlovi, s tim što svaki izvršni fajl ima nekoliko kilobajta „zaglavlja” koje ga opisuje i omogućava njegovo pokretanje. U scenariju kada je sve to trebalo spakovati na jednu disketu od 1,44 MB zajedno sa kernelom, gubiti po nekoliko kilobajta na svakoj od stotinak komandi nije bilo zgodno. Zato je autor došao na ideju da većinu komandi spakuje u jedan izvršni fajl, i tako je nastao BusyBox. Prednosti ovog pristupa su jasne. S obzirom na to da se radi o jednom fajlu, nema posebnog zaglavlja za svaku dostupnu komandu. Kako brojne Linux komande dele isti programski kôd, BusyBoxov izvršni fajl je mnogo manji nego što bi bio zbir pojedinačnih komandi, čak i kada bi se one „očistile” od pomenutih zaglavlja. Valja napomenuti to da BusyBox sadrži funkcionalne, ali ipak nešto osiromašene verzije komandi, tako da nisu dostupne baš sve opcije na koje ste navikli u „punokrvnim” izdanjima. Recimo, BusyBoxov ping nema mogućnost podešavanja intervala između pingovanja IP adrese, dok ls ne može da sortira rezultujući spisak fajlova. Ipak, ključna funkcionalnost je netaknuta, pa BusyBox svakako može da posluži za sve bitne poslove. Takođe, ako ste raspoloženi da ručno kompajlirate paket umesto traženja gotovog izvršnog fajla na internetu, možete odrediti koje će komponente biti uključene a koje izbačene, tako da se veličina rezultujućeg fajla može prilagoditi prema potrebi. Ugrađene komande pozivaju se navođenjem njihovih imena kao prvog parametra BusyBoxovog izvršnog fajla, na primer: ./busybox ping 192.168.0.10 Drugi i daleko udobniji način je napraviti linkove koji će se zvati kao potrebne komande, a u stvari će pokazivati na BusyBoxov izvršni fajl (npr. /bin/ping koji pokazuje na /bin/busybox). Kada pozovete novonapravljeni fajl ln, zapravo ćete pokrenuti BusyBox, koji zatim proverava preko kog fajla je pozvan i automatski izvršava odgovarajuću komandu, zajedno sa ostalim parametrima koje ste eventualno prosledili. S obzirom na broj podržanih komandi, bilo bi suludo ručno praviti linkove za svaku od njih (spisak dostupnih komandi dobijate pozivanjem BusyBoxovog izvršnog fajla bez ikakvih parametara). Zato BusyBox podržava i „instalaciju” na sistem koristeći parametar -install, gde navodite u kom folderu treba napraviti linkove ka BusyBoxu, na primer: /bin/busybox -install /bin Za kraj, ako vam korišćenje ovakvog alata deluje kao nešto potpuno nepotrebno, evo jednog vrlo konkretnog primera iz prakse. Recimo, „rutovali” ste svoj Android telefon i dobili pristup komandnom interpreteru pod punim root privilegijama. Ubrzo ste zaključili da Androidu nedostaje ogroman broj komandi na koje ste navikli pod pravim Linuxom, te sistem nije naročito upotrebljiv za rad iz komandne linije. Rešenje je, naravno, BusyBox. Pored toga što možete naći gotov izvršni fajl koji je već neko napravio za ovu svrhu, evo načina kako ga možete sami napraviti. Sve što vam je potrebno jeste neki od kros-kompajlera, pomoću kojih možete praviti ARM izvršne programe za Linux direktno na svom PC računaru. Kao primer uzećemo besplatni CodeSourcery toolchain. Ako ste ga instalirali u podrazumevani folder (~/CodeSourcery/Sourcery_ G++_Lite), prvo treba dopuniti promenljivu PATH dodavanjem putanje ka CodeSourcery alatkama (~/CodeSourcery/Sourcery_G++_Lite/bin). Zatim iz foldera u koji ste raspakovali BusyBox izvorni kôd pozovite sledeće komande (obe make komande komande kucajte u po jednom redu, sa razmakom ispred LDFLAGS): $ make CROSS_COMPILE=arm-none-linux-gnueabi- LDFLAGS=-static defconfig $ make CROSS_COMPILE=arm-none-linux-gnueabi- LDFLAGS=-static Ovim se forsira statičko linkovanje rezultujućeg izvršnog fajla, jer Android ne koristi iste deljene biblioteke kao klasične Linux distribucije. Dobijeni izvršni fajl (busybox) prebacite sa računara na Android u folder /system/ xbin, dodelite mu izvršne privilegije (chmod 4755 /system/ xbin/busybox), a onda ga na Androidu pokrenite sa /system/xbin/busybox -install -s /system/xbin/ Na taj način napraviće se svi potrebni linkovi i imaćete dostupne komande koje BusyBox nudi. Ivan TODOROVIĆ |
| ||||||||||||||||
![]()
|
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |