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

Lilo con calendario Maya en Slackware 14.0

En Slackware se incluyen algunas imágenes para cambiar el splash que trae Lilo. Para usarlas hay que copiar la que uno desea al directorio /boot y decirle a Lilo que la use.

# cp /usr/doc/lilo-23.2/sample/slack14.0.2012.bmp /boot
# nano /etc/lilo.conf

Comentar la siguiente línea

bitmap = /boot/slack.bmp

Escribir esta otra:

bitmap = /boot/slack14.0.2012.bmp

Ejecutar el comando lilo para aplicar los cambios.

# lilo

De ahora en adelante al iniciar el sistema se verá así:

slack14.0.2012

Visto en SlackBlogs.

Quitar tiempo de espera de LILO

Hace tiempo que decicí utilizar únicamente Slackware en mi laptop puesto que no necesitaba más, uso software libre y propietario, la mayor parte del sofware propietario la uso en el trabajo con otra laptop con Windows, ArcGIS, AutoCAD y MSOffice principalmente y desde hace tiempo he tratado de hacer el mismo trabajo que hago con ese software pero en mi plataforma de Linux y software de fuente abierta.

Así que para forzarme a ello uso únicamente Linux en la casa, solo que cuando instalé mi slackware por defecto al iniciar me aparece una pantalla con el logo de la distribución y un conteo regresivo de dos minutos para que el usuario elija el sistema operativo de su preferencia para cargarlo en la máquina pero… yo solo tengo linux instalado!! por qué me sigue dando la opción de elegir?! Esa era mi pregunta, hasta que me decidí a meterle mano al LILO, ya que en linux todo se puede configurar hay que meterle mano (aunque por esas metidas de mano he reinstalado mi sistema varias veces jejeje).

Así que me metí a leer el archivo /etc/lilo.conf:

$ kdesu kwrite /etc/lilo.conf

… y encontré lo siguiente:

# Wait until the timeout to boot (if commented out, boot the
# first entry immediately):
prompt
# Timeout before the first entry boots.
# This is given in tenths of a second, so 600 for every minute:
timeout = 1200

Aqui la parte importante que dice «si se comenta, booteará a la primera entrada inmediatamente», es decir si se comenta prompt entonces no habrá tiempo que esperar así que edité mi archivo de la manera siguiente:

# Wait until the timeout to boot (if commented out, boot the
# first entry immediately):
#prompt
# Timeout before the first entry boots.
# This is given in tenths of a second, so 600 for every minute:
#timeout = 1200

Y  guardar los cambios. Para aplicar los cambios hay que volver a ejecutar el lilo:

# lilo

Ahora nada de esperas al iniciar el sistema…