Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO] Prelink (Nvidia incluido)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
Franco Gotusso
Guru
Guru


Joined: 15 Apr 2004
Posts: 313
Location: Benidorm, Alicante, Spain

PostPosted: Thu Mar 17, 2005 7:59 pm    Post subject: [HOWTO] Prelink (Nvidia incluido) Reply with quote

Introducción
Ya que la guía de Gentoo sobre prelink está muy desactualizada, voy a explicar los pasos a seguir para utilizar correctamente prelink e incluso como prelinkear los drivers de nvidia.

¿Qué es prelink?
Muchos programas usan bibliotecas compartidas que deben cargar al iniciarse. Para los programas pequeños el tiempo de carga es muy corto pero para los programas escritos en C++ (En su mayoría los de KDE) y los que usan muchas bibliotecas, el tiempo de carga es mayor. Prelink es un programa que modifica las bibliotecas compartididas ELF y los binarios ELF enlazados dinámicamente, esto hace que el tiempo y la memoria que necesita el enlazador dinámico al inicio y durante la ejecución del programa sea significativamente menor. Todo esto sólo se usa si todas las bibliotecas dependientes no han cambiado desde el último prelinkeado, en otro caso los programas funcionarán normalmente.

Prelinkeando
El primer paso será emerger prelink.
Code:
emerge prelink


Ahora, (Y esto es muy importante) debeis agregar la use "pic" a vuestro make.conf, lo cual nos permitirá prelinkear nuestros binarios. Tendreis que actualizar ciertos programas.
Code:
"emerge -uDv --newuse world


Después, para poder prelinkear los drivers de nvidia, tenedremos que ejecutar temporalmente lo siguiente, pero no hagais un env-update.
Code:
opengl-update xorg-x11


Por último, realizamos por fin el prelinkeado.
Code:
prelink -avmfR

La última línea al acabar debería ser "Executing /sbin/init U", si no es el caso es que no todo a sido prelinkeado. Revisa los pasos anteriores.

Ahora, para volver a usar el archivo libgl.so de nvidia ejecuta:
Code:
opengl-update nvidia


Si usas KDE debes editar en el fichero /etc/env.d/99kde-env lo siguiente:
Code:
#KDE_IS_PRELINKED=1
KDE_IS_PRELINKED=1


Para finalizar:
Code:
env-update
source /etc/profile

Reinicia y disfruta.

Créditos
Traducido del post original de hds.
_________________
Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.


Last edited by Franco Gotusso on Fri Mar 18, 2005 3:54 pm; edited 1 time in total
Back to top
View user's profile Send private message
German3D
Guru
Guru


Joined: 30 Nov 2004
Posts: 446
Location: ../madrid/mostoles

PostPosted: Thu Mar 17, 2005 9:02 pm    Post subject: Reply with quote

Te lo curras ;)
Esto del prelink es bueno para los que reinician 1 vez al dia el PC no? Si lo dejas encendido esto no afecta verdad ¿?
54|u2
_________________
A mi lo que mas me gusta , es el espiritu linux :) ...
No leais esto!
El único problema de Gentoo es , que provoca adicción :\
Back to top
View user's profile Send private message
Franco Gotusso
Guru
Guru


Joined: 15 Apr 2004
Posts: 313
Location: Benidorm, Alicante, Spain

PostPosted: Fri Mar 18, 2005 6:32 am    Post subject: Reply with quote

Muchas gracias.
Sobre tu pregunta, el prelink afecta al ejecutable que no este en memoria, es decir que afecta cuando es la primera vez que arrancas el programa desde que enciendes el ordenador o si ya habais abierto el programa pero ya has cargado tantas cosas o ha pasado tanto tiempo que el kernel lo ha quitado de la ram.
Salud!
_________________
Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.
Back to top
View user's profile Send private message
SpOeK
Apprentice
Apprentice


Joined: 07 Jan 2003
Posts: 164
Location: Getafe - Madrid (España)

PostPosted: Fri Mar 18, 2005 10:31 am    Post subject: Reply with quote

Hola, siento decirlo pero con esto no consigues prelinkar las bibliotecas de nVidia.

Cuando cambias con opengl-update la interfaz OpenGL y ejecutas el prelink consigues que los binarios que referenciaban antes al binario de nVidia lo hagan al de Xorg-x11, que sí puedes prelinkar.

Por tanto, no puedes hacer nada, por cómo ha generado nVidia esos binarios. Lo único que consigues es que no aparezcan tantos errores pero nada más.
Back to top
View user's profile Send private message
psm1984
l33t
l33t


Joined: 14 Oct 2003
Posts: 919

PostPosted: Fri Mar 18, 2005 10:43 am    Post subject: Re: [HOWTO] Prelink (Nvidia incluido) Reply with quote

Franco Gotusso wrote:
Lo que hace prelink es incluir esas bibliotecas dentro del propio programa para acelarar su carga.

Prelink no incluye las librerias dentro del programa, en man prelink viene una buena descripcion. :wink:
Back to top
View user's profile Send private message
Franco Gotusso
Guru
Guru


Joined: 15 Apr 2004
Posts: 313
Location: Benidorm, Alicante, Spain

PostPosted: Fri Mar 18, 2005 1:25 pm    Post subject: Reply with quote

Quote:
Hola, siento decirlo pero con esto no consigues prelinkar las bibliotecas de nVidia.

Ya, si te fijas es lo que dicen en los comentarios del howto original y lo que el autor discute, y aunque me parece entender lo mismo que tu me pierdo un poco, de modo que he preferido hacer una simple traduccion ya que a la malas lo unico que va a pasar es que esos binarios no se prelinkeen.

Quote:
Prelink no incluye las librerias dentro del programa, en man prelink viene una buena descripcion. Wink

Vale, tienes razon pero ¿como traduzco yo eso? 8O Nunca, en toda mi vida, he aprendido tanto ingles como el que estoy aprendiendo con el software libre :?
Ya lo arreglare.
_________________
Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.
Back to top
View user's profile Send private message
psm1984
l33t
l33t


Joined: 14 Oct 2003
Posts: 919

PostPosted: Fri Mar 18, 2005 2:42 pm    Post subject: Reply with quote

Lo he traducido con ayuda de traductores web, no te fies mucho, que mi ingles es bastante malo (y el de los traductores web ... x'D).

Quote:

prelink es un programa que modifica las bibliotecas compartididas ELF y los enlaces binarios dinamicos ELF, esto hace que el tiempo necesario para hacer el enlace dinamico para la relocalizacion al inicio sea significativamente disminuido y tambien, debido a un numero menor de relocalizaciones en tiempo de ejecucion, el consumo de memoria diminuye (especialmente el numero de paginas no compartidas). Tal informacion solo es usada si todas las bibliotecas dependientes no han cambiado desde el ultimo prelinking, en otro caso los programas realizan la relocalizacion normalmente.

Primero prelink recolecta los binarios ELF que deben ser prelinked y todas las bibliotecas que dependan de el. Entonces asigna un unico slot del espacio de direcciones virtual por cada biblioteca, y reenlaza la biblioteca compartida con la direccion base. Cuando el enlazador dinamico quiere cargaruna biblioteca, a menos que el slot de direccion virtual este ocupado, lo mapeara en el slot dado. Una vez hecho esto, prelink, con ayuda del enlazador dinamico, resuelve todas la relocalizaciones en el binario o bibliotecas contra sus bibliotecas dependientes y las guarda dentro del objeto ELF. Esto tambien guarda una lista de todas la bibliotecas dependientes junto con sus checksums. Para los binarios, tambien cuenta una lista de conflictos (relocalizaciones que resuelven diferentemente en una busqueda de simbolos binarios que en el alcance mas pequeño de la busqueda en el cual la biblioteca dependiente fue resuelta) y lo guarda dentro de una seccion especial del ELF.

En tiempo de ejecucion, el enlazador dinamico comprueba todas las bibliotecas dependientes, cuando estan mapeadas correctamente en sus slots designados y cuando no han cambiado desde el ultimo prelinking. Si todas las comprobaciones son correctas, el enlazador dinamico rehace la lista de conflictos (que es normalmente bastante mas corta que el numero total de relocalizaciones) en vez de volver a poner cada biblioteca.
Back to top
View user's profile Send private message
Franco Gotusso
Guru
Guru


Joined: 15 Apr 2004
Posts: 313
Location: Benidorm, Alicante, Spain

PostPosted: Fri Mar 18, 2005 3:56 pm    Post subject: Reply with quote

Muchas gracias, al final solo he usado el primer parrafo porque no creo que sea necesario explicar todo el proceso, al fin y al cabo solo es un howto :)
Muchas gracias.
_________________
Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.
Back to top
View user's profile Send private message
Cadena Perpetua
n00b
n00b


Joined: 16 Aug 2004
Posts: 57

PostPosted: Wed Aug 24, 2005 7:49 pm    Post subject: Reply with quote

Bueno antes que nada GRACIAS por tomarte el trabajo de hacer este how-to, esta muy bien hecho... segui los pasos y todo funcionó a la perfeccion, personalmente no noté diferencia, pero nunca está de mas hacerlo!! gracias :D :lol: :wink:
Back to top
View user's profile Send private message
Franco Gotusso
Guru
Guru


Joined: 15 Apr 2004
Posts: 313
Location: Benidorm, Alicante, Spain

PostPosted: Thu Aug 25, 2005 9:05 am    Post subject: Reply with quote

Lo se, nunca hay demasiada diferencia, pero la hay. :D Donde mas se nota es en las aplicaciones escritas en C++, KDE principalmente. En fin, salud.
_________________
Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum