02 abril 2013

Mejorando el tiempo de inicio de Slackware

Apenas unos días atrás decidí hacer una instalación fresca de mi sistema pues sentí que la necesitaba, y me la he pasado configurando mi nuevo Slackware 14.0 estos días. Les presento unas pequeñas notas de la forma en que hago para acelerar un poco el inicio de mi sistema.
La información que presento ha sido una “recopilación” de varios sitios de internet, foros, blogs y conocimiento que he ido adquiriendo desde que me inicié en Slackware.

LILO
Por su puesto que si vamos a meternos con el inicio del sistema, el lugar más obvio para empezar es Lilo. Para editar el archivo de lilo.conf hay que abrirlo con cualquier editor de texto, yo uso nano en el terminal:

# nano /etc/lilo.conf

Agregar las opciones quiet y compact de la manera siguiente:

append=" vt.default_utf8=1 quiet"
compact


Guardar y cerrar el archivo (Ctrl+X – Yes – ENTER) y elecutar lilo para que se reconozcan los cambios.

# lilo

Usando la opción quiet se reduce la cantidad de mensajes que aparecen en el inicio del sistema y así se ganan unos segundos en el inicio del sistema.
La opción compact intenta juntar diferentes peticiones de lectura de sectores del disco adyacentes entre si, en una sola, lo que reduce el tiempo de carga. En algunos sistemas (sobre todo antiguos) puede generar errores y cuelgues.

Servicios
Gran parte de lo que se tarda un sistema en iniciar se debe a la gran cantidad de servicios que se inician. Para ver los servicios que se ejecutan al inicio hay que ir al siguiente directorio, como usuario root:

# cd /etc/rc.d/
# ls -l


Checar cuales de los servicios que tienen permisos de ejecución, no se necesitan. Yo por ejemplo no necesito un servicio de bluetooth por que mi computadora no tiene hardware de este tipo. Para deshabilitarlo hay que hacer lo siguiente:

# chmod -x rc.bluetooth

Las necesidades de cada uno son muy diferentes, este es solo un ejemplo de las cosas que yo no necesito. Hay que saber también que servicios desactivamos, es importantísimo leer el Slackbook o buscar en internet cual es la función de un servicio que desconocemos y cuales serían las consecuencias de desactivarlo, para no regarla.

Scripts de inicio
Ahora pasasmos a los scripts de inicio, que se guardan en el archivo /etc/rc.d/rc.M. Se puede abrir con cualquier editor de texto que sea de tu gusto:

# nano /etc/rc.d/rc.M

Buscar (en nano la opción de búsqueda de texto es Ctrl+W) la palabra “local” y encontrará el siguiente código:

# Start the local setup procedure.
if [ -x /etc/rc.d/rc.local ]; then
. /etc/rc.d/rc.local
fi


Colocarle un símbolo “&” (ampersand) como se muestra, para que esto se ejecute al mismo tiempo que otras acciones y no de manera única:

# Start the local setup procedure.
if [ -x /etc/rc.d/rc.local ]; then
. /etc/rc.d/rc.local &
fi


Encontrar el siguiente bloque y comentarlo, para que quede así:

# Update any existing icon cache files:
#if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
# for theme_dir in /usr/share/icons/* ; do
# if [ -r ${theme_dir}/icon-theme.cache ]; then
# echo "Updating icon-theme.cache in ${theme_dir}..."
# /usr/bin/gtk-update-icon-cache -t -f ${theme_dir} 1> /dev/null 2> /dev/null &
# fi
# done
# # This would be a large file and probably shouldn't be there.
# if [ -r /usr/share/icons/icon-theme.cache ]; then
# echo "Deleting icon-theme.cache in /usr/share/icons..."
# #/usr/bin/gtk-update-icon-cache -t -f /usr/share/icons 1> /dev/null 2> /dev/null &
# rm -f /usr/share/icons/icon-theme.cache
# fi
#fi


También estos otros bloques:

# Update mime database:
#if [ -x /usr/bin/update-mime-database -a -d /usr/share/mime ]; then
# echo "Updating MIME database: /usr/bin/update-mime-database /usr/share/mime &"
# /usr/bin/update-mime-database /usr/share/mime 1> /dev/null 2> /dev/null &
#fi

# Update all the shared library links:
#if [ -x /sbin/ldconfig ]; then
# echo "Updating shared library links: /sbin/ldconfig &"
# /sbin/ldconfig &
#fi

# Update the X font indexes:
#if [ -x /usr/bin/fc-cache ]; then
# echo "Updating X font indexes: /usr/bin/fc-cache -f &"
# /usr/bin/fc-cache -f &
#fi


De nuevo, hay que leer más para saber bien que estamos haciendo. Todo el código del script que se puso como comentario, es para dejar de ejecutar procesos o servicios que realizan tareas como actualizar cachés y prevenir errores debidos a la instalación de nuevos paquetes, así que no es necesario ejecutarlos cada vez que iniciamos el sistema, con una vez al día basta (o incluso semanalmente).
Entonces hay que crear un script que se ejecute diariamente y realice estas tareas, para crear el archivo del script hay que hacer (con nano):

# nano /etc/cron.daily/config.sh

Y pegar lo siguiente, que no es más que todos los pedazos de código que comentamos anteriormente:

#!/bin/sh
# Update any existing icon cache files:
if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
for theme_dir in /usr/share/icons/* ; do
if [ -r ${theme_dir}/icon-theme.cache ]; then
echo "Updating icon-theme.cache in ${theme_dir}..."
/usr/bin/gtk-update-icon-cache -t -f ${theme_dir} 1> /dev/null 2> /dev/null &
fi
done
# This would be a large file and probably shouldn't be there.
if [ -r /usr/share/icons/icon-theme.cache ]; then
echo "Deleting icon-theme.cache in /usr/share/icons..."
#/usr/bin/gtk-update-icon-cache -t -f /usr/share/icons 1> /dev/null 2> /dev/null &
rm -f /usr/share/icons/icon-theme.cache
fi
fi

# Update mime database:
if [ -x /usr/bin/update-mime-database -a -d /usr/share/mime ]; then
echo "Updating MIME database: /usr/bin/update-mime-database /usr/share/mime &"
/usr/bin/update-mime-database /usr/share/mime 1> /dev/null 2> /dev/null &
fi

# Update all the shared library links:
if [ -x /sbin/ldconfig ]; then
echo "Updating shared library links: /sbin/ldconfig &"
/sbin/ldconfig &
fi
# Update the X font indexes:
if [ -x /usr/bin/fc-cache ]; then
echo "Updating X font indexes: /usr/bin/fc-cache -f &"
/usr/bin/fc-cache -f &
fi


Darle permisos de ejecución al script anterior y listo:

# chmod +x /etc/cron.daily/config.sh

DHCP
Para solocitar una dirección IP el DHCP en Slackware toma 10 segundos al inicio, sin embargo se puede ejecutar esto en paralelo con otros servicios. Para hacerlo hay que abrir el archivo /etc/rc.d/rc.inet1 y agregar un “&” al final de las siguientes lineas:

# 10 seconds should be a reasonable default DHCP timeout. 30 was too much.
echo "/etc/rc.d/rc.inet1: /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}" | $LOGG$
/sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1} &


OK hasta aquí, con esto yo tengo un sistema que arranca en menos de 30 segundos. Recuerden que esto solo afecta el “verdadero” inicio del sistema, el inicio de KDE o de cualquier entorno gráfico en general sigue tardando lo mismo. Si alguien sabe como acelerar el inicio de los entornos de escritorio pues compartanos sus conocimientos.
Saludos
Fuentes:
the linux space
Human Readable
Brent W. Woodruff
Tomado de: http://ecoslackware.wordpress.com/2013/01/08/mejorando-el-tiempo-de-inicio-de-slackware/

No hay comentarios:

Publicar un comentario