Mostrando entradas con la etiqueta systemd. Mostrar todas las entradas
Mostrando entradas con la etiqueta systemd. Mostrar todas las entradas

miércoles, 14 de enero de 2015

Jugando con systemD

Hola!! después de un largo tiempo sin escribir aquí y como propósito de año nuevo, espero poder seguir escribiendo en el blog. Desde que me "lié" con el proyecto [awbian] GNU/Linux dispongo de poco tiempo para mis "frikadas" y menos para escribirlas. Ya que en awbian se ha hecho la apuesta de usar systemd como gestor del sistema, voy a recopilar un pequeño manual básico de su uso.

Esquema de la arquitectura de systemd:


Empezamos con systemctl que básicamente es el subtituto de /etc/init.d/... start/restart/stop de toda la vida. Éste tiene algunos casos de uso útiles que veremos en unas pocas líneas. Llegados a este punto, creo que es útil definir como systemd usa el término "Unit"; este se refiere a servicio, sockets, devices, puntos de montage, particiones, paths, timers, ttys... y las "units" será quien recibirá las acciones que ordenaremos con systemctl:
  1. systemctl (Lista todas las unidades, su estado, descripción)
  2. systemctl start/stop [Unidad] (arranca o para una unidad)
  3. systemctl status [Unidad] (estado de la unidad)
  4. systemctl help [Unidad](un pequeño man de cada unidad)
  5. systemctl daemon-reload (escanea si hay cambios en la Unidades)
Por ejemplo:
# systemctl status syslog-ng.service
syslog-ng.service - System Logger Daemon
   Loaded: loaded (/lib/systemd/system/syslog-ng.service; enabled)
   Active: active (running) since Wed, 14 Jan 2015 12:18:08 +0100; 2h 17min ago
 Main PID: 18789 (syslog-ng)
   CGroup: name=systemd:/system/syslog-ng.service
    └ 18789 /usr/sbin/syslog-ng -F

Podemos ver la configuración de cada unidad en  /lib/systemd/ por ejemplo en el caso de syslog tal como dice el "status" está loaded en /lib/systemd/system/syslog-ng.service
Ahora es muy facil activar o desactivar un servicio:
  1. systemctl enable/disable [unidad] (activa o desactiva una unidad) Podria ser equivalente a chkconfig o a un update-rc.d...
Esto hace surgir la duda de en que runlevel está activo... systemd controla el runlevel también:
  1. systemctl isolate graphical.target (equivale hacer init 5)
  2. systemctl isolate multi-user.target (equivale hacer init 3)
  3. systemctl reboot/poweroff/suspend/hibernate/hybrid-sleep (apagados,reinicios, etc..)
  4. systemctl set-default multi-user.target (serializamos iniciar sin X)
Las unidades se escriben con su propia sintaxis, por lo que he podido ver, basada en XDG Desktop, similar a los .ini de Windows y se hubican en: 
/lib/systemd/system/ (los paquetes suelen dejarlos aquí) 
/etc/systemd/system/ (aquí es donde haremos las modificaciones)
Otra cosa que me parece muy interesante es el análisis del arranque que nos ofrece systemd. Por ejemplo:
# systemd-analyze (nos da el resumen de lo que tarda en arrancar el sistema)
Startup finished in 3100ms (kernel) + 18727ms (userspace) = 21828ms
# systemd-analyze blame (lo mismo pero sin resumen)
  5591ms cryptsetup@ferran_home.service
  4828ms lvm2.service
  4785ms wicd.service
  4361ms exim4.service
  3668ms keyboard-setup.service
#systemd-analyze plot > bootplot.svg (genera un gráfico del tiempo de boot)
Y con esto, el primer ladrillo del año ;)
Gracias por estar aquí. Como siempre, comenta, añade lo que consideres oportuno.
Saludos