Noticia Prelink (o como hacer que KDE arranque en 3 segundos)

Prelink es un programa cuya utilidad es hacer que los programas se abran mas rápido. Aunque la explicación de como lo hace se merecería un articulo entero, podemos decir de una manera tosca que le dice al binario donde buscar primero las librerías dinámicas que necesita cargar.

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í:


Prelink


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
La terminal es Yakuake, por si a alguien le interesa.

Para des-pre-enlazar (desprelinkar) un binario

prelink -u

Todo el sistema :

prelink -au

Muchas distribuciones como Ubuntu ofrecen un cron que pre-enlaza periódicamente todos los binarios del sistema si prelink esta instalado
Prelink puede causar problemas en varios binarios privativos, por lo que normalmente son omitidos por defecto. De todos modos, asegúrate de que tu archivo /etc/prelink.conf contenga estas lineas:

# 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 :


Watch this video on YouTube.

Datos del Equipo de Prueba


Detalles del 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


  1. La primera linea sirve para decirle al sistema que es un script en bash y la localización del interprete.
  2. 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.
  3. Ejecuta prelink con unos parámetros ya explicados, el &>/dev/null redirige cualquier salida a /dev/null, esto es, la desecha

Links de interes




The post Prelink (o como hacer que KDE arranque en 3 segundos) appeared first on Desde Linux.


OTjw_VZUAxw


Continúar leyendo...