Se ha hablado mucho de el cambio a systemd en ArchLinux, pero se ha hablado realmente poco de que es systemd, como funciona y de si es es una mejora o no para el sistema Arch, mucho menos se ha mencionado de que distros como Fedora u OpenSuSe ya adoptaron definitivamente systemd, o que Gentoo o Debian testing ya lo adoptaron desde hace tiempo como alternativa.

Que es systemd?

Systemd es un gestor de sistenma y servicios para Linux, compatible con scripts Sysv o init, tiene capacidades de paralelizacion de procesos (manejar 2 o mas procesos en el arranque al mismo tiempo), pero no solo hace eso:

  • Usa Dbus y Sockets para activar servicios
  • Puede ejecutar daemons por demanda
  • Optimiza el uso de recursos utilizando cgroups
  • Soporta snapshots y restauracion del sistema a un punto definido
  • Administra puntos de montaje y montaje de unidades de almacenamiento

Y que hace?

Generalmente la administracion de un sistema GNU/Linux se divide en varias partes: estan los servicios o daemons que corren ciertos programas de fondo, estan los puntos de montaje con permisos y usuarios, asi como dbus, los sockets que escuchan protocolos y ordenes. Cada una de estas partes con su propia administración y su propia logica, systemd es un entorno para manejar todo esto dentro de la misma herramienta.

Systemd trabaja con unidades. Una unidad en un archivo que contiene informacion acercad e un servicio, un socket, un punto de montaje o de automontaje, un swap o simplemente un pounto de inicio de una aplicacion o script gatillada por systemd. La sintaxis esta insirada en la especificacion de los archivos .desktop que utilizamos para lanzar las aplicaciones de cualquiera de nuestros programas (en cualquier escritorio Linux), esta basado en la especificacion de XDG Desktop Entry.

Mas tarde escribire de estas undiades y como crear nuestras propias unidades y puntos de inicio, de momento hasta ahi vamos bien.

Y como funciona

Ya habia hablado al respecto en otro post que instalaba systemd en ArchLinux y que jugara con initscripts (que hace falta un post sobre instalar y correr a puro y duro systemd, que es la mejor opcion ahora), voy a abarcar un poco de ello:

La principal herramienta de systemd es:

$ systemctl

Podemos listar las unidades en ejecucion

$ systemctl list-units

Las unidades disponibles se encuentra listados en los directorios /lib/systemd/system y /etc/systemd/system, aunque tambien se pueden listar con:

systemctl list-unit-files

Esto me da la lista de las unidades disponibles y el estatus de ellas

Activar una unidad:

# systemctl start

Deactivar una unidad:

# systemctl stop

Reiniciar una unidad:

# systemctl restart

Recargar una unidad:

# systemctl reload

Muestra el estatus de una unidad, incluso si esta en ejecucion o no:

# systemctl status

Habilita la unidad que sea iniciado en el proximo arranque:

# systemctl enable

Deshabilita una unidad para que no sea iniciado automaticamente en el siguiente arranque:

# systemctl disable

EJEMPLO:

Quiero que mi servicio de bluetooth se inicie por default al iniciar el sistema:

sudo systemctl enable bluetooth.service

Pero mas que habilitar su inicio, yo lo necesito ahora:

sudo systemctl start bluetooth.service

pero no estoy seguro si inicio o no:

sudo systemctl status bluetooth.service

Y me da:

Y si ya no quiero que inicie el bluetooth por default?

sudo systemctl disable bluetooth.service

Ahora, imaginen que fuera asi para demonios, servicios, puntos de montaje, sockets y administracion general del sistema, una sola herramienta de sintaxis sencilla y facil de automatizar con scripts, suena bien ¿no?

para este fin de semana hay que adentrarons en la sitaxis de las unidades, dejar a Arch con puro y duro systemd y enchular el systemd. Saludos

Para leer:

http://freedesktop.org/wiki/Software/systemd/

http://0pointer.de/public/systemd-man/systemd.unit.html

https://wiki.archlinux.org/index.php/Systemd