Hacer que el arranque de Linux sea más rápido al deshabilitar servicios innecesarios

Cada vez más sistemas operativos se hinchan con una gran cantidad de servicios que se ejecutan en segundo plano. Aunque es posible que no usen mucho tiempo de CPU, aumentan el tiempo de arranque y el uso de RAM.

Algunas distribuciones de Linux incluyen «todo menos el fregadero», en un esfuerzo por hacer la vida del usuario más fácil. Esto hace que cosas como compartir archivos o imprimir funcionen a la perfección. Desafortunadamente, la única manera de hacer esto es incluir cientos de utilidades para que cada uno encuentre lo que necesita.

Afortunadamente, los sistemas operativos de código abierto le dan el poder y la libertad de hacer lo que crea conveniente. Esto significa que puede deshabilitar o eliminar cualquier cosa que no necesite. La primera opción, cómo desactivar los servicios, se explorará aquí. Cuando usted desactiva, en lugar de quitar, los componentes, hay menos riesgo de que se rompan permanentemente las cosas. Y puede volver a ser como era antes simplemente habilitando de nuevo un servicio si nota que algo útil ha dejado de funcionar.

Analizar el tiempo que tarda cada servicio en cargar

La mayoría de los sistemas operativos basados en Linux han migrado a Systemd . Entre el conjunto de utilidades que incluye, hay un programa que le permite analizar qué tan rápido arranca su sistema. Específicamente, le muestra el tiempo total requerido para arrancar y el tiempo que tarda cada servicio en cargarse. Tenga en cuenta que algunos servicios se cargan en paralelo. Por lo tanto, si uno requiere dos segundos para cargar y los otros tres segundos, no significa necesariamente que se necesiten cinco segundos en total. Puede ser mucho menos que eso.

Abra un emulador de terminal e introduzca este comando:

systemd-analyze

Esto muestra el tiempo que tardan en cargarse el núcleo de Linux y los servicios del sistema base, lo que significa que no tiene en cuenta el tiempo que su interfaz gráfica requiere para arrancar. Para decirlo de otra manera, esto le muestra cuánto tiempo se requiere, desde el momento en que se carga el kernel hasta que se deja caer en la consola de Linux, que se parece a lo que se muestra a continuación.

Si no tuvieras una interfaz gráfica instalada, esto es lo que recibirías en tu pantalla.

Sin embargo, también puede ver el tiempo que necesita la interfaz gráfica para inicializar con este comando:

systemd-analyze critical-chain graphical.target

Esto muestra que la interfaz gráfica de usuario se cargó en 2.126 segundos. Esto no tiene en cuenta el tiempo necesario para cargar las utilidades de escritorio. Para habilitarlas/deshabilitarlas, ejecute el administrador de inicio del entorno de escritorio.

Finalmente, probablemente el comando más útil para el propósito de este tutorial es:

systemd-analyze blame

Puede navegar por la lista con las teclas de flecha o PAGE UP y PAGE DOWN. Pulsar q para salir.

Usar systemctl para deshabilitar servicios innecesarios

Como puede ver en la imagen anterior, el servicio de snapd tarda 1.295 segundos en cargarse. En una unidad SSD, esto es insignificante. Pero en un disco duro, este tipo de tiempos estarían en el orden de los segundos múltiples, y se sumarían a mucho al final. Además, en una unidad SSD muchas cosas se cargan en paralelo con una eficiencia increíble. En un disco duro es muy difícil que los servicios se carguen en paralelo. Las cabezas de lectura que flotan en los discos del disco tienen que moverse de un sector a otro, por lo que es casi imposible leer realmente los datos en paralelo.

Para simplificar, imagínese lo siguiente: si en una unidad SSD ve cinco servicios que requieren un segundo para arrancar, es probable que el tiempo total necesario para cargarlos todos sea inferior a 1,2 segundos. Si, en un disco duro, ve los mismos cinco servicios inicializarse en un segundo, es probable que el tiempo total de carga sea muy superior a cinco segundos.

Digamos que no necesita el servicio snapd, que proporciona acceso a containerized application snaps . Puede desactivarlo con este comando:

sudo systemctl disable snapd.service

Pero, si reinicia, notará que el demonio snap sigue funcionando. Esto se debe a que otras dependencias pueden lanzarlo, incluso si está desactivado. Trata de ver cuáles pueden ser:

systemd-analyze blame | grep snap

snapd.seeded.service y snapd socket son los culpables. Un servicio para niños puede solicitar el lanzamiento de su servicio para padres. Cuando desactiva uno, simplemente le dice que no se inicie automáticamente al arrancar por sí solo. Pero hay un método de fuerza bruta para evitar este problema.

Usar systemctl para enmascarar un servicio

sudo systemctl mask snapd.service

Esto básicamente hace que el archivo de servicio sea nulo, de modo que las aplicaciones no tienen forma de iniciar el servicio.

En la mayoría de los casos no es tan complicado deshabilitar un servicio. Este ejemplo ha sido elegido para mostrarle cómo manejar escenarios más complicados. En este caso, snapd.seeded.service y snapd.socket también deberían estar desactivados o enmascarados.

A continuación se muestra el tiempo de arranque mejorado.

Conclusión

De 4.078, el tiempo de arranque se redujo a 3.452 segundos, lo que supone una disminución de ~15%. No está mal, considerando que sólo un servicio fue desactivado, y esto es en un SSD. En un disco duro es mucho más fácil obtener resultados mucho más significativos.

En este ejemplo en particular, se podrían haber desactivado más servicios con un comando como: sudo systemctl mask avahi-daemon.service ModemManager.service thermald.service pppd-dns.service.

Si prefiere una aplicación gráfica para gestionar sus servicios, puede echar un vistazo al proyecto Systemd Manager . Sin embargo, usted estará limitado en lo que puede hacer con él, ya que la línea de comandos ofrece mucha más flexibilidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *