“La vida es muy peligrosa. No por las personas que hacen el mal, sino por las que se sientan a ver lo que pasa.”
Albert Einstein
“La vida es muy peligrosa. No por las personas que hacen el mal, sino por las que se sientan a ver lo que pasa.”
Albert Einstein
Després d’investigar i recompilar alguns kernels jugant amb parches he trobat la solució al problema.
Un resum del problema podria ser:
[root@compute-0-0 root]# /etc/init.d/gmond status
gmond dead but subsys locked
Tenia 2 possibles aproximacions, investigar sobre els pegats del nucli per donar-li suport nptl o investigar l’ús de les llibreries estandards que feia Ganglia. Per Murphy, primer vaig anar a la del nucli, gastant 3 dies sense resultats. I avui, per desesperació he anat cap a la de les llibreries.
Observant les llibreries compartides que utilitza gmond (amb greceptor és el mateix cas) podem veure:
[root@compute-0-0 root]# ldd /usr/sbin/gmond
libdl.so.2 => /lib/libdl.so.2 (0×40020000)
libresolv.so.2 => /lib/libresolv.so.2 (0×40023000)
libnsl.so.1 => /lib/libnsl.so.1 (0×40035000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4004a000)
libc.so.6 => /lib/tls/libc.so.6 (0x4005a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
Aquí veiem que utilitza les llibreries situades a /lib/tls, que són les llibreries compilades amb suport per NPTL, pro com el nucli no disposa d’aquest suport es penja a l’hora de crear els threads (LinuxThreads del vanilla versus NPTL threads de la llibreria TLS).
Primera solució a lo cutre:
# mv /lib/tls /lib/tls-mala
Doncs sorprenentment ha funcionat. Després de realitzar aquest canvi tornem a fer ldd a veure que trobem:
[root@compute-0-0 root]# ldd /usr/sbin/gmond
libdl.so.2 => /lib/libdl.so.2 (0×40020000)
libresolv.so.2 => /lib/libresolv.so.2 (0×40023000)
libnsl.so.1 => /lib/libnsl.so.1 (0×40035000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x4004a000)
libc.so.6 => /lib/i686/libc.so.6 (0x4009b000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
Voilà! Ara, automàticament agafa unes noves llibreries (les estandard) sense suport per NPTL, i inmediatament podem comprobar que ja funciona bé:
[root@compute-0-0 root]# /etc/init.d/gmond restart
Shutting down GANGLIA gmond: [FAILED]
Starting GANGLIA gmond: [ OK ]
[root@compute-0-0 root]# /etc/init.d/gmond status
gmond (pid 2803 2802 2801) is running…
Des del monitor web del Ganglia igualment podem veure que el sistema ha detectat que el compute-0-0 està actiu. Visca!
Només quedaran 2 passos:
ACTUALITZAT 19/07/04: Configuracio amb DNS dinamica donada pel servidor
Doncs si, finalment he aconseguit una cosa que feia molt de temps que volia fer, configurar el modem (un Lucent Winmodem) i l’acces a Internet a traves d’aquest.
Explicare breument els passos seguits per a que un company amb el mateix portatil pugui fer el mateix.
La solucio es ben senzilla. Primer de tot s’han de descarregar els fitxers que vulguem instalar. Per a lo del modem en necessitarem com a minim 2:
- ltmodem-8.26a9.tar.gz (per al kernel 2.4, sino se n’ha d’agafar un que es diu ltmodem-2.6-alk-v00.tar.gz).
- ppp-2.4.1-pppoe4.tgz
Una vegada els tenim al disc dur (a algun lloc on podrem accedir des de la Gentoo) ja podem arrencar amb Gentoo, i copiar aquestos fitxers descarregats a la carpeta /usr/portage/distfiles:
- # cp fitxer /usr/portage/distfiles
Finalment, per realitzar la instalacio d’aquestos paquets no fa falta dir-li a l’emerge que els vagi a buscar al directori local i no a internet, ja que per defecte ja va a buscar a /usr/portage/distfiles:
- # emerge ltmodem
- # emerge ppp
Fet aixo ja tindrem els 2 paquets instalats i podrem procedir a la instalacio.
Per configurar el sistema i poder utilitzar les DNS dinamiques que ens donen alguns servidors (com ara Ya.com) procedirem de la seguent forma:
# cp /etc/resolv.conf /etc/resolv.conf.save
cat /etc/ppp/resolv.conf >> /etc/resolv.conf
head /etc/resolv.conf –lines=-2 >> /tmp/tempres
cat /tmp/tempres > /etc/resolv.conf
rm -f /tmp/tempres
Algu te una millor alternativa??
I tot seguit les comandes de connexio:
Connectar-se:
# pppd
Per veure la ip:
# ifconfig ppp0
Per veure el log de la connexio:
# tail -f /var/log/messages
I com a consell del sensei jBilbo, ens recomana utilitzar el wvdial, de configuracio molt mes senzilla. Doncs s’haura de provar, pq el pppd anda q no li has de dir coses xDD Moltes gracies per les correccions tb ![]()
Avui, buscant al llibre “Linux 6a Edicion” he trobat un subcapitul anomenat “Uso de ldd para localizar las bibliotecas compartidas necesarias”, que estava dintre el capitul “Compatibilidad entre bibliotecas”, que es un dels problemes que tinc. Aqui reproduire algunes de les parts mes importants.
Per examinar les biblioteques compartides que necessita un programa ho podem fer de la seguent forma:
# ldd /usr/bin/vi
libncurses.so.5 => /lib/libncurses.so.5 (0×40022000)
libgpm.so.1 => /usr/lib/libgpm.so.1 (0×40063000)
libperl.so.1 => /usr/lib/libperl.so.1 (0×40069000)
libutil.so.1 => /lib/libutil.so.1 (0×40168000)
libc.so.6 => /lib/libc.so.6 (0x4016b000)
libpthread.so.0 => /lib/libpthread.so.0 (0x4029a000)
libm.so.6 => /lib/libm.so.6 (0x402ec000)
libdl.so.2 => /lib/libdl.so.2 (0x4030e000)
libnsl.so.1 => /lib/libnsl.so.1 (0×40311000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0×40326000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
Aqui tenim una mostra de totes les llibreries que usa el vi.
“Si la biblioteca que falta tiene un numero de version principal diferente, simplemente encuentre el paquete que ofrece la version de biblioteca que necesita, e instalelo. Si los numeros de la version principal son diferentes, el restante software de su sistema no resultara afectado por la adicion de otra biblioteca, aunque se llame igual.”
Aixo es el que em passa amb la llibreria libc, que tinc instalades 2 versions amb diferent implementacio.
“Otra solucion es crear un enlace simbolico para el nombre de la biblioteca compartida que necesita. Enlacelo a una biblioteca ya existente en su sistema y confie en que la biblioteca sea compatible. Esto es posible que funcione en algunas circunstancias, dependiendo de cuanto se usa esa biblioteca y a que subrutinas hace referencia el programa. Sin embargo, esta es una medida para salir del paso, y deberia usarse solo cuando se sabe con seguridad que las versiones en cuestion son compatibles para los propositos del programa.”
Seguint a la pagina 422 explica el mecanisme que utilitza Linux per carregar els programes.
Mes endavant, i canviant de tema, hi ha un capitol anomenat “Consultas avanzadas sobre paquetes RPM” amb un subcapitol que diu “Extraccion de los contenidos de un paquete rpm (rpm2cpio)”, que explica com treure els fitxers d’un paquet RPM.
# rpm2cpio kernel-2.4.22-1.2174.nptl.src.rpm | cpio -ivd
Llistat dels fitxers extrets
Pozi, realment funciona be, fa exactament el que buscava fer. UOLE! Dintre contenia un tots els arxius .patch i el codi font del kernel 2.4.22, a part d’alguns scripts en awk que suposo que son per instalar tots els parches.
He d’acabar de llegir aquest capitol, ja que explica moltes coses que no sabia i necessito.
Be, tornant a la feina, novetats. He obert el kernel RHEL de la Rocks, el kernel-2.4.21-15.0.3.EL.src.rpm, i es mes intuitiu del que em pensava. Dintre hi ha el fitxer kernel-2.3.spec, que es l’encarregat de construir tot el paquet, agafant com a base el vanilla kernel que porta (un linux-2.4.21.tar.bz2) i despres li aplica tots els parches que troba oportuns (clarament especificats al .spec). Molt ben pensat, si senyor.
Despres de l’analisi del .spec he trobat el que buscava. Per a l’arquitectura x86 hi ha 2 pegats de l’NPTL:
Probare d’aplicar-los al kernel 2.4.22, a veure que passa. A la 2.4.22 directament no l’he pogut aplicar, pq em donava un munt d’errors, ja que els parches no estaven preparats per a aplicar-se directament.
Seguint el .spec original he vist que el parche de l’nptl (el o1) era el 4t en aplicar-se sobre un kernel 2.4.21, de forma que he reproduit el procediment i sembla que ha funcionat. Ara ja l’estic compilant com si fos un kernel Rocks (vigilar pq fa preguntes sobre opcions noves del kernel). D’aqui 30 minuts sabrem mes (aixo es com preparar un pastis xD).
De moment poso els pegats i l’ordre en que els he posat:
Aquesta setmana, a part de fer la previa de Periferics i reinstalar GNU/Linux tambe he tornat amb el projecte, tal i com tenia previst. Aquesta setmana i despres d’acabar tota la feina que tenia que fer per fi he pogut quedar amb la gran ajuda per al projecte, el David.
Doncs aixo, vaig quedar amb el tecnic del departament que m’ajuda amb el projecte (acabo de veure que ha fet traduccions de KDE), i li vaig explicar els dos problemes que tenia:
Doncs be, nem per parts:
# vi machines
compute-0-0
compute-0-1
A part, el fitxer de configuracio de l’HPL baixat de aqui.
Lo altre ja es magia. Despres d’haver-ho intentat durant un munt de temps, ahir, i sense rao aparent, tot va funcionar. Murphy, oh, Murphy.
Com a possible solucio a coses magiques he fet un test de memoria a la RAM de l’ordinador en questio, pero no ha donat cap error.
Conclusio: A tornar a fer proves, o sigui que estare molt solet per aqui.
Finalment vam arribar a 2 conclusions:
Per veure si era culpa del parche d’openMosix vaig dir que provaria d’instalar un kernel vanilla oficial, i aixi ho he fet. He reinstalat el kernel, i res de res, continua petant igualment.
Conclusio: Aqui hi ha 2 conclusions xD
La desesperacio m’ha portat a un lloc que creia que mai acabaria anant (molt mal fet per part meva), anar a escriure a la llista de la NPACI Rocks. I nomes ha passat un dia i ja m’han contestat 4 persones. Coses d’aquestes son les que fan creure a la gent amb aixo del soft lliure…
Pos aixo, que m’han contestat, donant-me 2 possibles solucions:
“If I’m not totally wrong, the RHEL kernels are patched for Posix
threads. This breaks applications which still uses linux threads. In
your case it could be the other way around. Vanilla kernel with Linux
threads, application with Posix threads.If this is correct it could be resolved by patching your vanilla kernel
with the posix threads.David”
Doncs, si, els kernels RHEL (RedHat Enterprise Linux) estant parchejats per utilitzar els threads NPTL (Native Posix Threads Library) enlloc dels LinuxThreads, els que van inclosos al nucli per defecte fins a la 2.6. A partir del nucli 2.6 els threads seran d’aquest tipus NPTL, molt mes eficients i lleugers, pro aixo si, tocara migrar les aplicacions per adaptar-les a aquestos nous threads. Per altra banda, a part del kernel els NPTL tambe estan integrats a la libc a partir de la 2.3 em sembla, i es pot descarregar aqui.
“The problem could be NPTL. RHEL 3 (ROCKS basis) uses it in a back
ported manner from 2.6 kernels. If you do not use NPTL, some things
which have been compiled against it will hang, fail, or dump core when
they try to set up a thread. I saw this a bit with older
linuxthread-ABI compiled binaries around the RH9 time frame.Unfortunately there is no way to make this work short of getting an RH
kernel compiled and patched the way you need (unless you want to
integrate their patches into your kernel).You might look at starting from
ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3WS/en/os/SRPMS/kernel-2.4.21-15.0.3.EL.src.rpm
and seeing if you can patch from there.Joe”
Aquesta es la resposta mes realista crec. L’unica solucio que tinc es introduir els parches dintre al meu nucli (cosa que aniria malament per a openMosix segurament…). A part, hi ha el problema de trobar els parches que exactament necessito. Pel que fa a investigar aquest kernel he de trobar alguna forma d’”obrir-lo” i veure que te per dins, a part que tb he de buscar els Changelog, ja que alli segur q ho diu.
“As Joe says, I suspect the problem is in the threading libraries.
Ganglia is multi-threaded (via pthreads) and we have seen segfaults
with incompatible kernels. Greceptor uses python threading.Do other multi-threaded programs run? (mysql, etc). Also, if you could
collect a core file from ganglia when it crashes that would be helpful.It sounds like you rebuilt and installed your new kernel fine using the
Rocks infrastructure, which is good news to us![]()
I am sorry you are having problems with the new beast.
Federico”
Haure de parlar amb el David per a que m’ajudi a treure el fitxer core, ja que no en se i crec que es una cosa bastant dificil. Com a minim el Federico es veu afectat xD Pero dona la sensacio com si no haguessin provat mai aquesta funcionalitat, pq el Federico es un dels masters de Rocks.
Be, amb aixo d’informacio he comencat a indagar… Pro fins i tot amb el google se’m resistia, pro poc a poc he anat trobant coses:
NPTL1 This is a patchset ripped from RedHat’s 2.4.22-1.2088.nptl kernel. It includes
2.4.22-ac1 with some fixes as well as the linux-2.4.22-ac1-nptl-A1.patch which enables
you to compile a NPTL glibc on a 2.4.22
Linux system.
L’ultim link no funciona, tota una pena.
Doncs be, amb aquest parche i el nucli vanilla corresponent he compilat el kernel seguint el procediment establert. La compilacio no m’ha donat cap problema, pero a l’hora de reinstalar ha continuat petant, mira que realment creia que funcionaria…
Conclusio: A lo millor instalant un altre parche (TUX) funcionara.
Conclusio: Aquest filo encara es pot investigar.
Alguns links mes sobre Fedora:
Conclusio: He de mirar-la d’aprop, ja que aqui segur que sortiran direccions cap a webs amb els parches.
Conclusio: Tambe s’ha d’investigar mes per aqui, pero no se quins fruits donara.
Bueno, que consti que ho he intentat. Tot un dia intentant instalar Debian pro res, se’m penja tota la estona durant la instalacio. Aixi que ja he tornat a les andades, amb la Gentoo. Tambe he estat configurant tot un dia la Gentoo, pro ha valgut la pena. Fins i tot he instalat el Bootsplash!! (queda xulissim).
Com es pot comprovar encara em falta una cosa per configurar, el teclat castella per poder posar accents xD Pq per defecte m´he posat l’angles (un vici es un vici). Una altra cosa que he d’arreglar es la tarja de so, ja que l’alsa no m’arranca be, pero no es tant important aixo.
Be, un pas mes cap al meu primer (i esperem que no ultim) driver de Linux, gentilesa de Periferics.
Bé, finalment ahir va arribar el gran dia. El dia de la videoconferència en Murcia per entregar la pràctica de Sistemes Oberts però dintre del OSDC (Open System Development Contest).
Recent Comments