Cómo reducir el tiempo de arranque en Ubuntu

on



142fc496eac1104b24ae30fdcb1cffa1.12773746863
En mi caso, usaré Ubuntu como base para llevar a cabo las modificaciones. Antes de comenzar la faena, es necesario tener un punto de referencia para saber si los cambios que estamos haciendo son para mejor (reducen el tiempo) o para peor (aumentan el tiempo). Podríamos usar un cronómetro manual (el del reloj, por ejemplo), pero perderíamos precisión, así que es preferible usar un cronómetro más exacto. Para ello instalaremos Bootchart, una aplicación que analiza el proceso de arranque de tu máquina, midiendo tiempos, y finalmente crea un gráfico para exponer el análisis.

Para instalarlo sólo hace falta ejecutar este comando:

sudo apt-get install bootchart


Una vez instalado Bootchart, empezará a realizar los análisis la próxima vez que arranques el ordenador. Genera una imágenes en formato PNG en la carpeta /var/log/bootchart como esta:



En la cabecera de la imagen verás datos relativos al kernel, el hardware y la fecha del análisis, junto con el tiempo que tardó la máquina en arrancar. En este caso, 37'36 segundos. También verás el gráfico propiamente dicho, con el nombre del proceso, su duración y estado, y el tipo de operaciones que ha ejecutado (CPU o I/O). Bastante completito, la verdad.

Cabe mencionar un detalle que seguramente os ocurra. Tras hacer alguna modificación en el arranque, es más que seguro que el tiempo de arranque se vea duplicado la siguiente vez que arranques. ¿A qué se debe esto? Simplemente se debe a la presencia de ureadahead durante el proceso de arranque.

¿Qué es Ureadahead? Tal y como explica uno de sus desarrolladores, para arrancar Ubuntu necesitamos leer datos desde el disco duro para volcarlos en la memoria (entre 100 y 200 MB). Desafortunadamente, la parte más lenta de tu maravilloso ordenador es el disco duro. No sólo son lentos para leer datos sino también para encontrarlos, por lo que podemos perder mucho tiempo durante el arranque simplemente esperando a que el disco duro encuentre los datos que necesite y los vuelque en la memoria.

Lo que hace ureadahead es averiguar qué piezas de qué ficheros realmente son necesarios, y volcar desde el disco hasta la memoria de una sola vez. De esta manera, no necesitamos tiempo para buscarlo todo, y puesto que ya está en memoria, no desperdiciamos ni de lejos tanto tiempo durante el arranque.

El hecho de que se duplique el tiempo de arranque se debe a que, cada vez que un paquete que se instala o actualiza contiene un archivo en /etc/init o /etc/init.d, ureadahead ejecuta de nuevo el proceso descrito anteriormente.

Por lo tanto, para ver si realmente los cambios efectuados han sido para bien, deberíamos fiarnos de la segunda (o sucesivas) veces que arrancásemos, es decir, un arranque en el que ureadahead no tenga que re-averiguar nada.

Te recuerdo que no me hago responsable de las consecuencias de hacer estas modificaciones en tu sistema. Estos cambios, como todos, conllevan cierto riesgo, y tú eres quien decide hacerlos o no. Dicho esto, estas son las medidas que puedes llevar a cabo para mejorar el arranque

Arrancar en modo texto (sin Plymouth) y ajustar la resolución


Es lógico que si el ordenador no necesita mostrar gráficos por pantalla, el arranque será algo más rápido. Para ello, edita el archivo de configuración del GRUB:

sudo gedit /etc/default/grub

Y elimina las palabras quiet splash del parámetro GRUB_CMDLINE_LINUX_DEFAULT.

También se recomienda ajustar la resolución a la que usamos normalmente en nuestra pantalla, cambiando el parámetro GRUB_GFXMODE, por ejemplo:

GRUB_GFXMODE=1366x768


Seguidamente ejecuta esto para que los cambios surtan efecto:

sudo update-grub

Optimizar la carga de módulos


Por defecto se cargan la mayoría de los drivers del sistema, pero es preferible que se carguen sólo aquellos necesarios. Para ellos hay que cambiar el parámetro MODULES=most por MODULES=dep en el archivo /etc/initramfs-tools/initramfs.conf y ejecutar este comando para que los cambios surtan efecto:

sudo update-initramfs -k all -u


Habilitar la ejecución concurrente de los scripts init.d


Si dispones de más de 1 CPU, puedes habilitar la concurrencia en el arranque cambiando el parámetro CONCURRENCY=none por CONCURRENCY=startpar en el archivo /etc/init.d/rc e instalar el siguiente paquete:

sudo apt-get install insserv

Reducir el número de servicios habilitados


Al igual que en Windows, en Linux están habilitados una serie de servicios por defecto, según las necesidades típicas de los usuarios. Nunca viene de mal echar un vistazo los servicios que se ejecutan durante el arranque y los que están habilitados, para deshabilitar aquellos que no usamos. Para esta tarea usaremos Sysv-rc-conf.

sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf




Como puedes ver en la captura, puedes marcar y desmarcar los servicios. Ten cuidado con aquellos esenciales. Te recomiendo deshabilitar aquellos que sepas en qué consisten y que sepas de seguro que no los necesitas. Yo tengo habilitados: acpi-support, cpufrequtils, fancontrol, grub-common, killprocs, lm-sensors, loadcpufreqs, networking, pulseaudio, rc.local, reboot, sendsigs, single, sudo, umountntfs, umountroot, unattended, urandom, x11-common. Como ves, muchos servicios están relacionados con cosas propias de portátiles (sensores y demás).

Reducir el número de aplicaciones que se cargan al inicio


El número y tamaño de los programas que se ejecutan al inicio también influye en el tiempo de arranque. Al igual que hicimos con los servicios, podemos deshabilitar aquellos programas que no necesitamos que se ejecuten en el inicio. Para ello no hay más que echar un vistazo a la lista que se encuentra en Sistema → Preferencias → Aplicaciones al inicio.



Habilitar el inicio de sesión automático


Esta es una manera de reducir considerablemente el tiempo desde que arrancas hasta que tienes un escritorio utilizable. Para ello dirígete a Sistema → Administración → Pantalla de acceso → Pulsas "Desbloquear" → Marcas "Acceder como" "automáticamente".

Asignar una dirección IP manual


Si nuestra máquina se conecta a alguna red, es preferible que la asignación de la IP sea manual, así ahorraremos algo de tiempo también. Para ello no hay más que ir a Sistema → Preferencias → Conexiones de red, y hacer los cambios pertinentes en las conexiones deseadas.    2.1 Swappiness

Por defecto, en la rama 2.6, el núcleo de linux tiene este valor a un 60_ (en la rama 2.4 no existe). Esto quiere decir que se hará bastante uso de la memoria de intercambio (swap). Resulta útil si tenemos un servidor con gran carga de trabajo y poca RAM, o si compilamos frecuentemente aplicaciones muuuuy grandes. Sin embargo, en un sistema de escritorio, con varias aplicaciones pequeñas ejecutándose, podemos bajar este valor a 10 para que el núcleo use más a menudo la memoria RAM (más rápida) y recurra menos a la memoria de intercambio. Para ello, abrimos una terminal y hacemos lo siguiente:

- Consultamos el valor inicial: "sudo cat /proc/sys/vm/swappiness". Después de introducir la contraseña, nos muestra un valor de 60 (si ya nos muestra 10, no hay nada que hacer. Pasa al siguiente apartado algooooo

- Probamos cómo responde el sistema al bajar el valor: "sudo sysctl -w vm.swappiness=10". Ejecutamos después un par de aplicaciones.

- Si el resultado es satisfactorio, vamos a modificar un archivo de configuración para que el cambio sea permanente: "sudo nano /etc/sysctl.conf". En la última línea añadimos: "vm.swappiness=10".

- Guardamos los cambios pulsando las teclas CONTROL+o y salimos pulsando CONTROL+x.

2.2 Consolas virtuales

Al acceder a nuestro sistema, aparte de la pantalla de login gráfica, hay 6 consolas en modo texto (a las que se puede acceder pulsando CONTROL+ALT+(desde la tecla F1 hasta la tecla F6, la tecla F7 vuelve a acceder al sistema gráfico) ejecutándose en segundo plano. En mi caso, por ejemplo, cada una ocupa 1,5 megas de RAM. Para ahorrar memoria, pueden no activarse las 6, sino dejar sólo 1 ó 2, por si el sistema gráfico tiene algún problema.

- Abrimos una terminal y tecleamos lo siguiente: "sudo nano /etc/inittab". Dentro de este archivo, vamos hasta unas líneas en las que se lee:

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

- Comentamos las consolas que no queremos que se inicien. Esto se hace poniendo una almohadilla (#) delante de la línea correspondiente. Para desactivar todas las consolas de texto menos la primera debe quedar así:

1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

- Guardamos los cambios pulsando las teclas CONTROL+o y salimos pulsando CONTROL+x.

2.3 Xorg

Podemos bajar la profundidad de color a 24-bit a 16-bit notando poca diferencia. Esto reduce uso de la memoria de la tarjeta gráfica.

- Abrimos una terminal y tecleamos: "cd /etc/X11".

- Ahora vamos a modificar el archivo de configuración xorg.conf: "sudo nano xorg.conf".

- Buscamos la línea que pone DefaultDepth y modificamos su valor de 24 a 16.

- Guardamos los cambios pulsando las teclas CONTROL+o y salimos pulsando CONTROL+x.

2.4 Cambiar el núcleo

Por defecto, Ubuntu GNU/Linux viene con un núcleo estándar compilado para i386 de modo que funcione desde en el viejo Pentium 100 del trastero hasta en el potente Pentium 2,2 del salón. Sin embargo, si escogemos un núcleo precompilado de Ubuntu que se ajuste a nuestro procesador, notaremos una mejora. Pasos a seguir:

- Vamos al menú Sistema de GNOME, abrimos Administración e iniciamos el Gestor de Paquetes Synaptic.

- Una vez dentro de Synaptic, si disponemos de conexión a Internet, pulsamos en Recargar para obtener los últimos paquetes.

- Tras actualizar, escogemos la sección Sistema Base. OJO!!: para evitar problemas con núcleos no oficiales, marcamos Sistema base, no Sistema base(universe)

- Bajamos hasta la zona dónde tenemos paquetes que se llaman: linux-image-X.X.X-nombre_de_nuestro_procesador y marcamos la versión más actual. Por ejemplo, en este momento, para mi ordenador sería: linux-image-2.6.10-5-k7.

- Si tenemos algún hardware que requiera módulos del núcleo especiales (véase tarjetas Nvidia), debemos marcar también los linux-restricted-modules correspondientes al núcleo seleccionado.

- Aplicamos los cambios. Al reiniciar la próxima vez, se cargará el núcleo seleccionado.

2.5 Parar servicios no necesarios

Para cubrir el mayor número de situaciones posibles, Ubuntu GNU/Linux inicia toda una serie de servicios que, a veces, no son necesarios. Si deshabilitamos los que no necesitamos, no estarán durmiendo y consumiendo memoria. Existen otros programas y formas de evitar iniciar servicios, por ejemplo update-rc.d o el programa boot-Up Manager
http://www.marzocca.net/linux/bum.html
pero esta forma es simple y efectiva (es la recomendada también por http://www.ubuntuguide.org).

- Abrimos una terminal y vamos al directorio /etc/init.d: "cd etc/init.d/".

- Vemos qué servicios puede ejecutar el ordenador: "ls" (son los que aparecen en verde).

- Denegamos el permiso de ejecución para el que no queramos arrancar: "sudo chmod -x nombre_del_servicio". Por ejemplo, si no usamos fetchmail, teclearemos "sudo chmod -x fetchmail"

- Si nos equivocamos, siempre podemos volver a habilitar el servicio haciendo: "sudo chmod +x nombre_del_servicio".

- Sugerencias de servicios que normalmente no se usan en un ordenador de escritorio:

- ntpdate: actualiza el reloj del sistema sincronizándolo cada vez que se reinicia.
- pcmcia: sólo se usa con portátiles que tengan tarjetas PCMCIA.
- ppp: protocolo punto a punto. Sólo se utiliza si usas un módem para conectarte a Internet
- powernowd: en teoría lo usan los procesadores AMD para gestionar el uso de la energía, personalmente nunca lo he usado.
- rsync: utilidad para transferir archivos para hacer copias o mantener un espejo sincronizado.
- fetchmail: recoge y reenvía correo y actúa como pasarela hacia el servicio smtp.
- postfix: agente de transferencia de correo, parecido a sendmail. Personalmente, con Yahoo y Evolution me llega.

En este punto, al ser cada caso distinto, sólo puedo recomendar que antes de evitar que arranque un servicio se sepa para que sirve: "man nombre_del_servicio" o bien busquemos en Google más información sobre el mismo.
Hay que tener cuidado si se desactiva algún servicio que usen otras aplicaciones. Por ejemplo: Gnome usa cupsys, demonio de impresión. Si se hace desde Gnome una llamada al mismo y no está ejecutándose, el sistema se vuelve inestable. Para evitar esto, hay que modificar, desde el menú Sistema, Preferencias, Sesiones, los demonios del escritorio que se inician en el arranque (en este caso se quitaría del arranque el proceso de Gnome relacionado con cupsys).

2.6 Inicio de procesos en paralelo

No entro en tecnicismos sobre el arranque, resumo la idea. Init.d invoca los procesos de uno en uno en el arranque. Si los invocamos en paralelo, ahorramos tiempo en el inicio del sistema. Puede ser que se produzca algún error de dependencias porque ciertos procesos "suponen" que hay otros ejecutándose cuándo se inician. Aún así, en un sistema de escritorio no debe haber problemas. Pasos que se deben seguir:

- Abrimos una terminal y tecleamos: "cd /etc/init.d".

- Ahora vamos a modificar el archivo de configuración rc: "sudo nano rc".

- Buscamos la línea que pone "startup $i start" y añadimos un &, de modo que quede cómo sigue: "startup $i start &".

- Guardamos los cambios pulsando las teclas CONTROL+o y salimos pulsando CONTROL+x.

La próxima vez que iniciemos la máquina, veremos cómo todos los procesos salen "disparados" de una sola vez en la traza del inicio.

2.7 Gnome

Para iniciar más rápido Gnome, podemos desactivar la pantalla de bienvenida desde el menú Sistema, Preferencias, Sesiones, en la pestaña Opciones de la sesión desmarcando la opción: Mostrar la pantalla de bienvenida al iniciar sesión.

Si somos la única persona que accede al ordenador o si todos acceden con el mismo usuario, podemos iniciar la sesión sin hacer login ni cargar GDM de este modo:

- Vamos al menú Sistema y, dentro de Administración, escogemos: Configuración de la pantalla de inicio de sesión. Vamos a la pestaña General y marcamos la opción Acceder automáticamente con un usuario al arrancar por primera vez. Debajo escribimos nuestro nombre de usuario. OJO!!: a partir de la activación de este cambio NO se pedirá contraseña al entrar en el sistema.

Los escritorios virtuales son, para mí, un atractivo más para usar Linux, pero puede ser que 4 consuman demasiados recursos. Para cambiar el número de escritorios virtuales hacemos click con el botón derecho del ratón en el panel inferior, justo en el paginador de escritorios (a la izquierda de la papelera). En el menú que aparece seleccionamos Preferencias y escogemos en Cantidad de espacios de trabajo el número que queramos.

2.8 Prelink

Existe una utilidad que se encuentra en los repositorios Universe que se llama "Prelink". Según su página del manual su función es: "pre-enlazar binarios y bibliotecas ELF compartidas para acelerar su tiempo de inicio". Hay que tener en cuenta que para disponer del progrma prelink, debemos tener los repositorios Universe activos, el modo de hacerlo

se explica aquí: http://www.guia-ubuntu.org/hoary/doku.php . Para ponerlo en funcionamiento haremos lo siguiente:

- Vamos al menú Sistema de GNOME, abrimos Administración e iniciamos el Gestor de Paquetes Synaptic.

- Una vez dentro de Synaptic, si disponemos de conexión a Internet, pulsamos en Recargar para obtener los últimos paquetes.

- Tras actualizar, le damos al botón Buscar y tecleamos prelink. Una vez que aparece el programa lo marcamos y lo instalamos.

- Ahora modificamos las opciones de prelink: "sudo nano /etc/default/prelink". En la línea que pone: PRELINKING=unknown, lo modificamos y ponemos: PRELINKING=yes. El resto de opciones por defecto funcionan bien.

- Para iniciar prelink por primera vez (la primera vez puede llevar algo de tiempo). Tecleamos: "sudo /etc/cron.daily/prelink".

- Si no queremos enlazar todo el sistema, sino sólo Openoffice.org (aplicación bastante pesada) nos saltaríamos el paso anteiror y haríamos: "sudo /usr/sbin/oooprelink -f"

- Debemos tener en cuenta que al actualizar bibliotecas, debemos ejecutar de nuevo "sudo /etc/cron.daily/prelink", para evitar inestabilidades en el sistema.

- Si no nos gusta el rendimiento de prelink, podemos hacer "sudo nano /etc/default/prelink". En la línea que pone: PRELINKING=yes, lo modificamos y ponemos: PRELINKING=no. Ejecutamos de nuevo "sudo /etc/cron.daily/prelink".

3. Optimizar las aplicaciones


Si en el menú Aplicaciones de Gnome vamos a la opción Herramientas del sistema e iniciamos Monitor del sistema, veremos una lista de procesos y aplicaciones junto con la memoria que consume cada uno. Ahora intentaremos "aligerar" los más pesados.

3.1 Nautilus

Aunque me encanta el modo espacial nativo de Gnome, hay que reconocer que el navegador de archivos viene con unas cuántas opciones que hacen que sea bastante lento. Podemos desactivar algunas para hacerlo más ágil.

- Abrimos Nautilus. Por ejemplo, entrando en el menú Lugares de Gnome y abriendo Carpeta personal. Entramos en el menú Editar y después en preferencias. Vamos a la pestaña Vista previa y las desactivamos todas, marcando en todos los apartados la opción Nunca.

3.2 Firefox

Se pueden hacer cambios en Firefox para aumentar el número de conexiones y para que aproveche otros parámetros.

- Abrimos Firefox pulsando en su icono. En una ventana escribimos la dirección: "about:config" y pulsamos enter.

- Cambiamos estos valores. Para ello, hacemos doble click encima de la línea que queremos modificar y en el cuadro de diálogo que aparece, escribimos el valor nuevo:

network.dns.disableIPv6 Cambiamos el valor a true (basta con un doble click)
network.http.max-connections Cambiamos el valor a 128
network.http.max-connections-per-server Cambiamos el valor a 48
network.http.max-persistent-connections-per-proxy Cambiamos el valor a 24
network.http.max-persistent-connections-per-server Cambiamos el valor a 12

- Si se dispone de conexión de banda ancha, también se puede modificar los siguientes valores:

network.http.pipelining Cambiamos el valor a true (basta con un doble click)
network.http.proxy.pipelining Cambiamos el valor a true (basta con un doble click)
network.http.pipelining.maxrequests Cambiamos el valor a 30

3.3 Openoffice.org

Una de las aplicaciones más pesadas es Openoffice.org. Utilizando la caché intentamos que se ejecute más rápido.

- Abrimos Openoffice.org. Por ejemplo: menú Aplicaciones, Oficina, Openoffice.org Word Processor.

. Entramos en el menu Herramientas, apartado Opciones y marcamos memoria de trabajo. A la derecha en Antememoria de la imagen, cambiamos los valores de Uso de Openoffice.org de 6 a 128 y de Memoria por objeto de 0,5 a 20. Aceptamos los cambios. Al ejecutar Openoffice.org repetidas veces, notaremos la diferencia.
 

Bloggroll

Páginas vistas en total

Blog Archive