Así, imaginémonos que tenemos un binario que depende de la librería QtCore, una vez hayamos ejecutado prelink sobre el mismo, buscara primero en el espacio designado por prelink, y en el caso de que no la encuentre (una actualización, por ejemplo) la buscara de la manera tradicional.
Prelink funciona en cualquier sistema que cumpla el estándar POSIX, como GNU/linux o los BSD.
Como aplicar prelink
Optimizar el sistema con prelink es bastante sencillo, podemos optimizar un binario mediante (como root) :
prelink binario
Pero para optimizar el sistema entero debemos realizar :
prelink -amvR
Veréis algo así:
Aquí una explicación detallada del significado de los parámetros:
- a : equivale a –all, hace que se aplique a todo el sistema
- m : equivale a –conserve-memory, la explicación de su funcionamiento es compleja, pero ahorra espacio
- v: equivale a –verbose, nos permite saber cuales son las librerías pre-enlazadas
- R : equivale a –random, aumenta la seguridad haciendo un valor sea aleatorio. Desconozco los detalles de su funcionamiento
Para des-pre-enlazar (desprelinkar) un binario
prelink -u
Todo el sistema :
prelink -au
# Skype -b /usr/lib32/skype/skype -b /usr/lib/skype/skype # Flash Player Plugin -b /usr/lib/mozilla/plugins/libflashplayer.so # NVIDIA -b /usr/lib/libGL.so* -b /usr/lib32/libGL.so* -b //usr/lib/libOpenCL.so* -b //usr/lib32/libOpenCL.so* -b /usr/lib32/vdpau/ -b /usr/lib/vdpau/ -b /usr/lib/xorg/modules/drivers/nvidia_drv.so -b /usr/lib/xorg/modules/extensions/libglx.so* -b /usr/lib/libnvidia-* -b /usr/lib32/libnvidia-* # Catalyst -b /usr/lib/libati* -b /usr/lib/fglrx* -b /usr/lib/libAMDXvBA* -b /usr/lib/libGL.so* -b /usr/lib/libfglrx* -b /usr/lib/xorg/modules/dri/fglrx_dri.so -b /usr/lib/xorg/modules/drivers/fglrx_drv.so -b /usr/lib/xorg/modules/extensions/fglrx/ -b /usr/lib/xorg/modules/linux/libfglrxdrm.so -b /usr/lib/xorg/modules/extensions/libglx.so
Optimizar KDE
Lo prometido es deuda. Si ya habías pre-enlazado tu sistema probablemente no notaste ninguna diferencia en los tiempos de carga de KDE. Esto es así porque KDE ser sirve de una utilidad llamada kdeinit para cargar todas las librerías necesarias. Para evitar el uso de esta herramienta debemos hacerle saber a KDE que esta pre-enlazado. Para hacer esto debemos (como root) crear un archivo de variable :
nano /etc/profile.d/kde-prelink.sh
En el que pegamos la siguiente línea
export KDE_IS_PRELINKED=1
Y le damos los permisos adecuados (no queremos que ningún travieso le añada rm -rf /)
chmod 755 /etc/profile.d/kde-prelink.sh
Y por si no me creéis, aquí un vídeo de KDE arrancando en mi sistema :
- HDD a 7200 RPM
- Gentoo
- XFS
- Ksplash desactivado (causa de la pantalla negra del video
Cron y prelink
Si usas un sistema como Archlinux, en el que las actualizaciones son muy frecuentes, puede ser interesante añadir un cron que ejecute prelink todos los días.
Así, abrimos con nano el archivo cron (como root) :
nano /etc/cron.daily/prelink
Y pegamos lo siguiente:
#!/bin/bash [[ -x /usr/bin/prelink ]] && /usr/bin/prelink -amR &>/dev/null
Despues le damos los permisos adecuados (ya he mencionado que nadie quiere que se alguien le añada código malintencionado):
chmod 755 /etc/cron.daily/prelink
Un buen habito a la hora de leer un articulo es investigar que hace exactamente el script. Un buen habito a la hora de escribirlo es explicar para que sirve. Aquí el despiece
- La primera linea sirve para decirle al sistema que es un script en bash y la localización del interprete.
- La segunda hace que bash ejecute un subshell en modo debug, desconozco el porque, pero es lo recomendable, se puede eliminar sin riesgo. El && significa que cuando el comando termine, ejecute el siguiente.
- Ejecuta prelink con unos parámetros ya explicados, el &>/dev/null redirige cualquier salida a /dev/null, esto es, la desecha
27 comentarios, deja el tuyo
Con el «strike» que le diste al [ENTER], se asustaron los enanitos que tiene el pc y empezaron a trabajar al doble de la velocidad de antes, dices usar PRELINK, pero tu sistema se basa en el terror… jajajaa!!
Saludos y Excelente post
Gracias por compartir.
Umm , con el ruido que hace no me extrañaria que hubiese una mina en mi ordenador XD .
Epic el chiste, verdad que le metió con ganas al enter, jeje.
Me gustaría comentar que hace un tiempo realizé un benchmark de esto, i pude notar que las diferencias eran casi nulas ( use como pruebas creo que y hunde e bits firefox y nautilus).
Si hay interesados publicaré el archivo ( no lo publiqué en su día por pereza).
Umm , no en todos los archivos se puede percibir mejoria , pero , como minimo , el sistema suele arrancar mas rapido .
Hubo un tiempo que usaba el e4rat y mejoraba unos segundos el inicio, por ser un hdd arranca demasiado rápido por lo que veo, actualmente tengo un pequeño ssd con kaos y en xfs y cuando vi el tiempo de arranque no lo podia creer.
http://i.imgur.com/ds6WqIT.png
Exijo saber el tema de escritorio que estás utilizando y el set de íconos (en buena onda)
Juraria que el tema es helium .
El tema plasma y los iconos se llaman Dynamo y la ventana Next thin.
http://sta.sh/02ful04ags1
http://hombremaledicto.deviantart.com/art/Dynamo-Plasma-beta-473014317
http://kde-look.org/content/show.php?content=164722
Perdón al autor del tema por el off 🙂
¿Cómo se llama ese lanzador de aplicaciones? 🙂
Creo que es uno llamado simple qml launcher .
Como dice roader, es el QML
Gracias 😉
Muy buen tip, aunque KDE corre de maravillas en Arch y Slackware (los he probado y en verdad es que andan espectaculares).
Genial, muchas gracias. Lo probé en mi Arch, hice un prelink general y debo decir que la mejoría es bastante buena y me siento muy a gusto jeje
No se si soy yo…. pero yo no noto ninguna diferencia y con systemd-analyze todavía tarda más en arrancar…
Bueno , algun problema debe haber en tu SO , ya sabes , prelink -au y todo resuelto .
Hasta donde sé (por experiencia propia), por lo menos en Gentoo no hace falta crear un archivo nuevo para pasar el valor de la variable KDE_IS_PRELINKED. Sólo basta descomentar la línea KDE_IS_PRELINKED=1 en /etc/env.d/43kdepaths (No estoy seguro si esa es la ruta exacta, pues no tengo mi máquina en el momento).
Cada vez que se compila completamente KDE hay que revisar ese archivo, pues alguno de los paquetes que instala vuelve a sobreescribir el archivo que mencioné.
Y probablemente sea asi en muchas distribuciones . pero hacerlo de la manera que lo he hecho yo garantiza que esa configuracion no sea cambiada .
Excelente post, Felicitaciones
Sugiero elabores un tuto para instalar Gentoo
Lo tendre en cuenta . Gracias
buenísima utilidad, aunque no me sirve, porque le tengo :asquito a KDE
¿Acelerará dolphin? Siempre me ha parecido lento al arranque
Deberia , no se , yo siempre lo uso por defecto . Uso gentoo , portage , si detecta que prelink esta instalado , automaticamente preenlaza los binarios , asi que , ni idea .
¡Interesante, gracias!
P.D.- Library = Biblioteca, no librería 😉
Bueno, y el escritorio se llama Plasma Desktop, no KDE. Ok, ya paro xD
En la jerga informatica es un fallo aceptado , al fin y al cabo , las lenguas son pragmaticas , mas en traducciones .
https://es.wikipedia.org/wiki/Librería_(desambiguación)
buenas. Estaba por probarlo en ArchLinux KDE (base, no el DE completo) y me pone «Error guardando ‘/etc/cron.daily/ Error guardando ‘/etc/cron.daily/prelink’: No existe el fichero o el directorio prelink’: No existe el fichero o el directorio». No tengo «cron» instalado y en la wiki[1] hablan de cronie, fcron y otras variantes. Qué debo instalar o hacer para poder completar el tutorial?
[1] https://wiki.archlinux.org/index.php/cron#Installation