LAKI PINGVINI<>
042015<><>

„Nevidljivi” računari i Linux (3)

Sagu nastavljate sami

Slika 1: UBIFS
U prethodnim delovima pisali smo o svetu namenskih računara koje pokreće Linux i pozabavili se osnovama razvoja softvera za njih. Tematsko druženje završavamo specifičnostima Linux distribucija namenjenih namenskim računarima čiji su resursi znatno ograničeni u poređenju sa „velikim” stonim računarima.

Bez obzira na to što najnovije embedded platforme, bazirane na višejezgarnim procesorima najnovijih ARM generacija, pružaju dovoljno snage za veliki broj poslova nekada rezervisan za moćne radne stanice, veliki broj namenskih sistema ima vrlo ograničene hardverske resurse. S obzirom na to da se uređaji za industriju, saobraćaj, medicinu i slično prave tako da funkcionišu dosta duže od prosečnog PC računara, realno je sretati se sa sistemima starim pet i više godina koje treba popravljati i nadograđivati, i samim tim poznavati njihova ograničenja.

Sitno, sitnije

Slika 2: BeagleBone
Na prvom mestu, nije retkost da se dostupni RAM izražava u dvocifrenom iznosu megabajta. Skladišni prostor sa koga se podiže operativni sistem takođe ne mora biti veliki (npr. fleš čip kapaciteta 64 ili 128 MB, ređe SD kartica slične veličine). Ako i postoji, hardverski grafički podsistem može biti sasvim skromno podržan u softveru, gde aplikacije umesto poziva X Windows funkcija, direktno pišu po virtuelnom framebuffer uređaju (/dev/fbX) ili koriste neku od implementacija kao što su Qt Embedded ili OpenGL ES. Samim tim, bilo da su razvijane u okviru jedne kompanije za potrebe malog broja proizvoda ili kao multiplatformska rešenja potekla iz zajednica kao što su Arago, OpenEmbedded, Angstrom i Yocto, tipične Linux distribucije za embedded sisteme su u poređenju sa stonim varijantama ogoljene „do koske” i sadrže minimum potrebnih programa i deljenih biblioteka. Sa druge strane, izuzetno su pogodne za proučavanje opšte organizacije Linux distribucija, s obzirom na to da (naročito u starijim izdanjima) nema menadžera paketa, ogromnog desktop okruženja, suvišnih alatki i sličnog.

Dok se na „velikim” računarima apsolutno ne preporučuje korišćenje administratorskog naloga osim za poslove administracije, na embedded distribucijama „root” je najčešće jedini nalog u upotrebi. Embedded sistemi u eksploataciji koriste ograničen skup programa kojima je često potreban pun pristup hardverskim resursima, bez interakcije sa korisnikom i bez rada više korisnika u isto vreme, pa nema poente softverski braniti pristup bilo kome (osim ako specifičan scenario ne nalaže drugačije).

Standardna C biblioteka u malom

Standardna GNU C biblioteka (Glibc), koju direktno ili indirektno koriste gotovo svi programi ili njihovi interpreteri, može biti prevelika ili previše memorijskih zahtevna gledano iz perspektive arhitekte sistema ekstremno ograničenih resursa. Na primer, standardna implementacija funkcije printf alocira memoriju koristeći malloc, prosleđene argumente obrađuje koristeći varijabilnu listu argumenata (zaglavlje „stdarg.h”) i slično, što može rezultovati prevelikim trošenjem memorije i procesorskih ciklusa u „knap” uslovima. Osim toga, GNU C biblioteka uključuje razne podbiblioteke koje najčešće nisu potrebne u embedded okruženju (libNSS za šifrovanje u mrežnim protokolima, libDB za upravljanje bazom podataka itd.), i povrh svega čuva binarnu kompatibilnost sa prethodnim verzijama, tako da je moguće izvršavati programe dinamički linkovane sa prastarim verzijama Glibc. Postoji više minimalističkih implementacija standardne C biblioteke, kao što su eglibc, µClibc i Bionic (specifična za Android), a programi povezani sa njima mogu biti deset do sto puta manji nego kada se povežu sa standardnom. Kao minus stoji redukcija funkcionalnosti i gubljenje binarne kompatibilnosti unazad, što u ovakvom okruženju nije bitno jer se cela distribucija najčešće formira od programa i biblioteka linkovanih sa istom verzijom C biblioteke (npr. onom koja se isporučuje uz toolchain), umesto da se ubacuju gotovi izvršni programi pokupljeni iz raznih izvora na internetu.

Pandorina kutija

O projektu BusyBox pisali smo u SK 11/2012. Najkraće rečeno, radi se o programu koji u sebi objedinjuje brojne Linux i Unix komande (ponajviše iz paketa „GNU Coreutils”), spakovane u jedan izvršni fajl. Taj fajl se automatski ponaša kao odgovarajuća komanda ako se zove isto kao ona, ili ako je pokrenut preko prečice koja nosi odgovarajući naziv. Na primer, pokretanjem izvršnog fajla busybox putem prečice nazvane cp koja ukazuje na njega dobićete funkcionalnost standardnog Unix alata za kopiranje fajlova. Proučavanjem strukture tipične embedded Linux distribucije uočavamo da najveći broj komandi u sistemskim folderima zapravo predstavlja simboličke linkove na isti izvršni fajl (busybox), što otvara mogućnost da se specifična Linux distribucija u ekstremnom slučaju „skreše” na jednocifreni broj megabajta. Zbog toga, BusyBox čini okosnicu embedded distribucija jer nudi ogroman broj komandi „konsolidovanih” u jedan fajl, uz smanjenje potrošnje na skladišnom uređaju (eliminisanjem suvišnog programskog kôda ili izbacivanjem retko korišćenih opcija u okviru komandi) i smanjenje upotrebe RAM (ako se više komandi izvršava istovremeno, samo jedna kopija BusyBox će se nalaziti u memoriji).

„Sirovi” fleš

Iako se embedded sistemi polako, ali sigurno, distanciraju od upotrebe „sirovih” fleš čipova, na starijim uređajima se oni gotovo bez izuzetka koriste kao „storidž” sa koga se podiže Linux. Ovakvi čipovi se vezuju direktno na memorijski kontroler sistema-na-čipu, pa od njegovih karakteristika i drajvera operativnog sistema zavisi koji će tipovi biti podržani (širina magistrale, sinhron/asinhron pristup, veličina stranice i „erase” bloka, jačina ECC kôda u zavisnosti od količine rezervnih bajtova po stranici itd). Ako konkretan čip jednog dana nestane sa tržišta, često je potreban redizajn hardvera i nadogradnja softvera, od čega se i inženjerima i klijentima diže kosa na glavi, jer redizajn unosi rizik u rad do tada proverenog rešenja.

Da problem bude veći, uobičajeni fajl-sistemi koji se koriste za hard-diskove, SSD-ove i USB fleš drajvove ne vode računa o problemu znanom kao „wear-out”, odnosno ograničenom broju upisa u memorijske stranice u čipu. Hardverski kontroleri unutar USB i Solid State drajvova, na koje su takođe povezani ovakvi fleš čipovi, sami vode računa o tome i ravnomerno eksploatišu celokupan kapacitet diska (tzv. „wear leveling”) bez potrebe za posebnim angažmanom korisnika ili operativnog sistema (SK 03/2014). Kod fleš čipova zakačenih direktno na memorijski kontroler SoC (System on Chip), to bi možda trebalo da bude posao drajvera za kontroler, ali on to ne obezbeđuje. Zbog toga se poseže za rešenjem na sloju iznad. Linux kernel nudi apstrakciju zvanu MTD device i odgovarajuće fajl-sisteme koji se na nju oslanjaju, a pored brige o čitanju i upisu u fajlove, vode računa i o „wear levelingu”. Najkorišćeniji su JFFS2 i UBIFS, gde je UBIFS (Slika 1) po svojim karakteristikama napredniji pošto, između ostalog, podržava kompresiju pri upisu i vrši „wear leveling” po celom kapacitetu čipa umesto samo u okviru logičke particije. Nedostatak (uslovno rečeno) je nešto komplikovanije inicijalno podešavanje.

Zbog svega ovoga, u novim hardverskim dizajnima sve više se sreću eMMC čipovi (suštinski, isto što i SD kartica, samo spakovano u čip i povezano na standardni SD/MMC interfejs) koji se tretiraju praktično kao hard-diskovi, pa se bez bojazni mogu formatirati u ext3/4 uz sve blagodeti koje oni nude.

Ušrafiš i ne misliš

Nadamo se da smo ovim serijalom zainteresovali naprednije korisnike Linuxa na PC-u koji bi voleli da se upoznaju sa nečim relativno novim (ali zasigurno divljim). Ako vas je ova tematika privukla, kao polaznu tačku možemo preporučiti platforme kao što su Raspberry Pi i BeagleBone (Slika 2), koje se uz pomoć velike korisničke zajednice i brojnih dodataka mogu pretvoriti u uređaje najrazličitijih funkcija. Ako ste student elektronike ili računarske tehnike, sistemi zasnovani na Linuxu mogu značajno olakšati i ubrzati realizaciju složenih ideja, naročito ako ste prethodno radili samo sa mikrokontrolerskim sistemima. Čak i ako vam ovo nije struka, uz elementarno poznavanje arhitekture računara i bogatstvo gotovog softvera koji postoji za Linux i Android, samo nebo je granica. Srećno hakovanje!

Ivan TODOROVIĆ

 
„Nevidljivi” računari i Linux (3)
Šta mislite o ovom tekstu?
Sredite vaš openbox
Freeplane 1.3.15
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera