Por lo general la mayoría de las distribuciones linux suelen arrancar más rápido que windows sin que nosotros hagamos nada para optimizar ese arranque. Aún así el tiempo de carga puede ser alto si nuestro equipo tiene ya unos cuantos años.

Con e4rat podemos acelerar el proceso de carga del sistema siempre y cuando nuestro disco duro sea magnético (el de toda la vida) y esté formateado en EXT4.

Este programa elimina los tiempos de búsqueda reubicando y precargando todas las aplicaciones que se cargan en los 2 primeros minutos desde que se inicia el proceso de carga del sistema (este tiempo se puede variar como veremos más adelante).

La diferencia de usar e4rat a no usarlo se nota sobre todo si usamos el entorno gráfico pero si trabajamos en una tty e4rat puede añadir tiempo de carga haciendo que tarde lo mismo o incluso tardar un par de segundos más.

Instalar e4rat

Antes de instalar e4rat debemos saber que es incompatible con ureadahead, así que si lo tienes instalado tienes que desinstalarlo primero.

ubuntu-logoDebian / Ubuntu

Antes de instalar e4rat necesitamos las dependencias.

[usuario@equipo ~]$ sudo apt-get install libblkid1 e2fslibs

Ahora descargamos el paquete .deb para nuestra arquitectura (amd64 o i386) y los instalamos dando doble click sobre el paquete o con dpkg desde el terminal.

[usuario@equipo ~]$ sudo dpkg e4rat_0.2.3_i386.deb

fedora-logoFedora

Primero instalamos las dependencias necesarias.

[usuario@equipo ~]$ su -c 'yum install groupinstall "Development Tools"'
[usuario@equipo]$ su -c 'yum install libstdc++-static bzip2-devel boost-devel boost-static boost-regex e2fsprogs-devel audit-libs-static audit-libs-devel'

A continuación descargamos e4rat, descomprimimos y entramos en el directorio descomprimido.

[usuario@equipo ~]$ wget http://freefr.dl.sourceforge.net/project/e4rat/0.2.3/e4rat_0.2.3_src.tar.gz
[usuario@equipo ~]$tar xf e4rat_0.2.3_src.tar.gz
[usuario@equipo ~]$ cd e4rat-0.2.3

Finalmente compilamos e instalamos e4rat.

[usuario@equipo e4rat]$ cmake . -DCMAKE_BUILD_TYPE=release
[usuario@equipo e4rat]$ make
[usuario@equipo e4rat]$ su -c 'make install'

archlinux-logoArch Linux

e4rat se encuentra en el repositorio de AUR. Podemos instalarlo con yaourt o descargarlo e instalarlo con makepkg. yo lo haré con makepkg.

[usuario@equipo ~]$ wget https://aur.archlinux.org/packages/e4/e4rat/e4rat.tar.gz
[usuario@equipo ~]$ tar xf e4rat.tar.gz
[usuario@equipo ~]$ cd e4rat
[usuario@equipo e4rat]$ makepkg -si

Uso e4rat

Para que e4rat funcione debemos realizar tres pasos. Primero recolectamos información sobre los procesos y programas que se cargan al iniciar el sistema con e4rat-collect, esto creará un archivo que usará e4rat-realloc para reubicarlos y acelerar el proceso; por último añadiremos e4rat-preload a los parámetros del kernel para precargar los procesos y aplicaciones.

Paso 1: e4rat-collect

e4rat-collect crea una lista con las aplicaciones y procesos que se ejecutan durante los dos primeros minutos de carga del sistema. Este tiempo puede ser cambiado agregando (o descomentando) la línea timeout 120 en el archivo /etc/e4rat.conf. El tiempo por defecto son 120 segundos, podemos cambiarlo al que consideremos adecuado para nuestro caso.

Este paso debe realizarse una sola vez, consisten en ejecutar e4rat al iniciar el sistema. Puede hacerse de dos maneras: modificando el archivo /boot/grub/grub.cfg o editando los parámetros en la pantalla de grub. Para evitar meter la pata editando el archivo grub.cfg mostraré la segunda forma.

Reiniciamos el ordenador y cuando se muestre el menú del grub seleccionamos el sistema que queremos cargar y pulsamos la tecla E. Se mostrará las opciones para esa entrada del grub. Nosotros tenemos que buscar la linea que tiene los parámetros del kernel que suele ser algo del estilo linux /vmlinuz-3.7.9-104.i686 seguido de un montón de opciones.

linea-vmlinuz

Cuando tengamos la linea localizada nos vamos al final de esa linea y agregamos la opción init=/sbin/e4rat-collect y pulsamos F10 (o Ctrl + X).

En el momento que comienza la carga del sistema operativo e4rat esta creando la lista de procesos y programas, una vez pasados los dos minutos (o el tiempo que configuramos) se detendrá y realizamos entonces el segundo paso.

Paso 2: e4rat-realloc

Cuando e4rat-collect haya terminado de recolectar programas tendremos la lista en el archivo /var/lib/e4rat/startup.log. Esta lista podemos modificarla si vemos que hay algún programa o proceso que no queremos que sea precargado. En mi equipo por ejemplo, cargaba un script que solo se ejecuta al iniciar sesión con mi usuario y como otros usuarios no van a poder hacerlo lo eliminé de la lista.

Después de revisar el archivo ejecutamos como root e4rat-realloc si nuestra distribución usa systemd. Si no esta basada en systemd entonces primero debemos ejecutar init 1.

[usuario@equipo ~]$ su -l
contraseña
[root@equipo ~]# e4rat-realloc /var/lib/e4rat/startup.log

Pasado un rato e4rat-realloc habrá terminado y podemos ir al último paso.

Paso 3: e4rat-preload

En este último paso tenemos que editar la linea del kernel en /boot/grub/grub.cfg para que se ejecute e4rat-preload.

Con privilegios de root abrimos el archivo /boot/grub/grub.cfg y en la linea del kernel (la misma que el paso 1) agregamos al final init=/sbin/e4rat-preload. Debería quedarnos algo como esto en la linea del kernel:

linux /vmlinuz-linux root=UUID=02ab5caf-5907-4d8b-a8dc-986c3b8a5b70 ro quiet init=/sbin/e4rat-preload

Ahora podemos encontrarnos con un problema y es que solo podemos agregar la opción init una vez en los parámetros del kernel.

Si quieres agregar otro parámetro init a la linea del kernel sin tener que quitar el de e4rat se puede hacer editando el archivo /etc/e4rat-config.cfg y agregar init seguido del programa que queremos ejecutar. Esto es útil si por ejemplo quieres usar bootchart para comprobar los tiempos de carga del sistema de forma gráfica. Ejemplo:

init /usr/lib/systemd/systemd-bootchart