Kao sto neki mozda znaju, u mojoj gajbi se znacajno povecao broj Linux masina:
- SIP server: CentOS 5.x
- Linux u Fritz 7570 VoIP/VDSL ruteru (+Busybox)
- Linux u Dreambox DM800 risiveru
- Nexus one sa Linux-om (Android)
Takodje... povecala se i kolicina stvari koje sam morao da kompajliram, broj kernela koje sam bildovao od nule... i tako to :)
Elem, da skratim pricu - imam jednu matoru MSI Mini ITX plocu sa Core 2 Duo procesorom, na kojoj se vrteo taj kucni SIP server, i rekoh da stavim jos neke stvari na nju... trebao mi je jedan mali closed-source server app. koji koristi USB port i ta aplikacija nije open source, vec je closed source...
Uputstvo za tu aplikaciju kaze da radi na Debian-flavored Linuxima, ali ja rekoh, "sta q*** sto ne bi radilo na CentOS-u" i krenuh u hrabri podvig da je nateram da proradi i na mom CentOS SIP serveru..
Elem, hoces malo sutra - aplikacija je ulinkovana sa glibc 2.7, dok CentOS koristi glibc 2.5. Kako dolazim iz Microsoft Windows sveta, rekoh... sta je problem da samo iskopiram glibc 2.7 .so fajlove negde i da to nateram da radi... :)
Hoces malo sutra kako li sam samo naivan bio - glibc je tesko uvezan i sa kernelom i ostatkom Linux sistema, i prosto kopiranje baca segfault, covek moze samo da zaboravi na to :-)) Hmmm... iako je "beyond me" zasto bi hebeni POSIX layer bio tako uvezan sa kernelom da puka promena verzije kernela garant ubija kompatibilnost, otidjoh ja na neke Linux forume da vidim sta se tu moze uraditi...
Rezultat je da ljudi kazu da se NIPOSTO ne bilduje novi glibc i stavlja na zivi sistem, jer moze da sahrani ceo Linux userland te da glibc 2.7 nema sta da trazi na CentOS 5.x i da kome to treba treba da stavi Fedoru 12... wow :) OK ok... ocigledno rec "ABI" nije nesto u recniku nasih vrlih Linux developera... rekoh, dodjavola, moracu da stavim neki Ubuntu ondak.. mozda kao virtuelne masine? DA!! Kao virtuelne masine... odlicna ideja!
Odlucih da Ubuntu 9.10 bude host (posto VMWare ESX-i hypervisor ne podrzava USB sharing sa hosta na guest OS, iako pise da podrzava, podogite kako sam to saznao? ;-)... instalirah ja Ubuntu 9.10 bez problema, i krenuh da instaliram najnoviji VMWare Server 2.0.2...
Hoces malo sutra - za one koji ne znaju, VMWare server ima neke kernel drajvere. Kao sto vec rekoh, kako ABI nije u recniku Linux developera, VMWare installer mora "on the fly" da iskompajlira sve svoje module kako bi radili sa kernelom na masini... OK, to nije nikakav problem jel da - imate perl skriptu, i sve lepo radi automatski?
Malo sutra - VMware 2.0.2 nece da kompajlira svoje drajvere na Ubuntu 9.10 distiribuciji :))) U sred kompajlera izbaci stotine gresaka pa vi mozete da se slikate... tu vec pocinje da mi skace pritisak, odoh na google i nekom srecom nadjem neki patch koji je neki lik napravio, a patch valjda prepravlja nesto u tim drajverima kako bi se kompajlirali sa 2.6.31+ kernelima... OPET pomenuh nekoliko puta ABI i porodicu Linusa Torvaldsa - i instalirah VMware nekako...
Posle toga... namestim ja CentOS kao guest OS sa sve SipX SIP serverom i taj deo, fala bogu, prodje bez problema (tj. bilo je problema, ali su vezani za Javu - a to nije tema ovog posta :-) - red je dosao i na instalaciju tog malog servera na host masini... server se instalirao kako treba, i 'fala bogu glibc je odgovarao... ali sada smartcard reader na USB portu nece da radi:
Unable to read latency timer: -32
Kaze Ubuntu kada ubodem doticni reader u USB port... #@)*(&@#(*&(@*&!!!! Sta je sad ovo... opet Google, citaj citaj... kad ono, sta imam da procitam, Kernel 2.6.31 / Ubuntu 9.10 su breakovali FTDI USB drajver... HAHahahaa, opet pomenuh ABI, Linusovu dalju rodbinu ovog puta i krenuh da trazim resenje... ima kao neki patch... nece da radi..
U ocaju sam dohvatio i da editujem .c fajlove i da pokusavam da ih nateram da rade... Ma nista, kako god ga ustekao, uvek ta latency greska... pitam ljude za savet... i znate koji savet dobijem? Stavi Ubuntu 9.04...
EPILOG?
---
Jutros, 04:50h ujutru... zavrsih sa instalacijom prokletinje 9.04 sa VMWare serverom i CentOS-om 5 u guest masini.... i sve konacno radi, posle nekoliko dana maltretiranja sa glibc-om, patchovanjem VMWare drajvera, pokusajima patchovanja USB drajvera...
Znate sta je u stvari najgori deo cele ove price? Najgori deo cele ove price je da je SVE OVO zbog toga sto Linux uopste nema stabilni ABI u svom kernelu, vec svaka nova verzija kernela rusi boga pitaj koliko drajvera.
Ne mogu ni da zamislim koliko se hiljada i hiljada sata trosi prilikom svake revizije kernela, samo na krpljenju stvari da rade sa promenjenim kernelom ... te koliko hiljada sati se izgubi na raznim patchovanjima i maltretiranju sa pokusajima da se nateraju stvari da rade @#)(*@#)(@#
Ne znam sta vi mislite, ali meni je ovo tipican primer izuzetno loseg dizajna :( Znam da on funkcionise, jer ima krdo ljudi i entuzijasta koji svaki dan krpe i krpe taj kod... ali stvarno je pitanje da li je zaista moralo da bude ovako? :(
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey