Sunteți pe pagina 1din 32

SystemD

Gestión avanzada de Sistemas Operativos Gnu/Linux

Expositor: Marcos Pozas S.


Ingeniero en Telecomunicaciones, Conectividad & Redes
Versión 1.0
I.- Conceptos básicos

Material elaborado por Marcos Pozas S.


¿Qué es SystemD?
• Systemd es un Administrador de sistemas y servicios para
Sistemas Operativos basados en GNU/Linux.

• SystemD es un conjunto de bloques básicos de compilación para un sistema


Linux. Proporciona un gestor de sistemas y servicios que se ejecuta como PID 1
e inicia el resto del sistema.

• proporciona una notable capacidad de paralelización, utiliza la activación de


socket y D-Bus para iniciar los servicios, permite el inicio de demonios bajo
demanda, realiza un seguimiento de los procesos con el uso de los grupos de
control de Linux, mantiene los puntos montaje y servicios de montaje
automático e implementa un elaborado sistema de gestión de dependencias
basado en un control lógico de los servicios.
¿Qué es SystemD?
• SystemD es compatible con los scripts de
inicialización de SysV y LSB y funciona como un
reemplazo de SysVinit.
• Otras partes incluyen un demonio de registro,
utilidades para controlar la configuración básica del
sistema, tales como el nombre del equipo, la fecha,
la configuración regional, la lista de usuarios
registrados y contenedores y máquinas virtuales en
ejecución, cuentas del sistema, directorios y
configuraciones de tiempo de ejecución y demonios
para gestionar una configuración de red simple,
sincronización horaria de la red, reenvío de registros
y resolución de nombres.
Estructura de SystemD
Linux Boot Process – Legacy Mode

El proceso de arranque de un sistema linux consta


de seis etapas:
1.- BIOS: Sistema básico de configuración. La bios inicia MBR.
2.- MBR: Registro de arranque maestro que inicia el Grub.
3.- GRUB: Cargador de arranque que ejecuta el Kernel.
4.- Kernel: Inicia el /sbin/init.
5.- Init: Lanza los programas de Runlevel.
6.- RunLevel: Aquí encontramos las aplicaciones por nivel
de ejecución (la ruta puede variar, pero normalmente »
/etc/rc.d/rc*.d/».
¿Qué es SysVinit?
• SysVinit es uno de los más antiguos y
vigentes Administradores de sistemas y servicios para
Sistemas basados sobre Linux. Todavía es muy usado sobre
muchas de las Distros GNU/Linux de trayectorias, y nuevas,
como Devuan.

De SysVinit como programa se puede destacar lo siguiente:


•“Es el primer proceso en ejecución tras la carga del kernel y
el que genera todos los demás procesos, se ejecuta como
demonio de init y por lo general, tiene el PID 1. Provee un
proceso estándar para controlar cuáles programas init lanza o
detiene en un determinado nivel de ejecución ”.
“SystemD v/s SysVinit v/s init”
• A diferencia de “init” (Administrador de sistemas y servicios inicial de los
sistemas Unix), que arrancaba los servicios de mediante un único script
denominado “/etc/rc”, SysVinit empezó a usar el esquema de directorios
en “/etc/rc.d/” que contenían los scripts de arranque/parada de los distintos
servicios.

• A nivel de paquetes y funciones SysVinit contiene programas para controlar el


arranque, ejecución y descarga de todos los demás programas.
• Entre estos se pueden mencionar:

• halt, init, killall5, last, lastb, mesg, pidof, poweroff, reboot, runlevel, shutdown,
sulogin, telinit, utmpdump y wall. Información importante para aquellos que
deseasen instalar y usar SysVinit.
“SystemD v/s SysVinit v/s init”
• Hasta el día de hoy, la lucha entre Systemd y SysVinit ha sido dura, y digna de
comparación a la de WhatsApp y Telegram.
• Y si bien es cierto que el venerable SysVinit tiene fallas o limitaciones
(dependiendo del punto de vista de cada quien), las cuales son probablemente
solucionables de alguna forma.
• los partidarios de Systemd suelen afirmar atrevidamente que Systemd es
actualmente el mejor de todos los Administradores de sistemas y
servicios inicial de los sistemas Unix actuales.
¿Será posible utilizar SystemD e SysVinit
simultáneamente?

• Por último, y no menos importante, nos encontramos


a la maravillosa alternativa de Systemd-shim. El cual
según la página de paquetería de DEBIAN es un
paquete que:

• “emula la función Systemd que se requiere para


ejecutar los ayudantes de systemd sin usar el
servicio init”.
¿Existirán otras alternativas?
En resumen, incluyendo a las mencionadas, tenemos entre las actuales alternativas de
“Administradores de sistemas y servicios para Sistemas” (init systems) para Linux:
• openrc
• runit
• s6
• shepherd
• sinit
• systemd
• systemd-shim
• sysvinit
Puntos destacables en SystemD
• El objetivo de Systemd es proporcionar una forma única y centralizada de
gestionar el proceso de inicio de principio a fin.
• Inicia y detiene los procesos y servicios mientras hace un seguimiento de sus
dependencias. Incluso puede iniciar un proceso como respuesta a un
requisito de dependencia de otro proceso.
• Además de iniciar y detener procesos durante el tiempo de arranque,
Systemd también puede iniciarse en cualquier momento cuando el sistema
está encendido en respuesta a ciertos eventos de disparo, como cuando un
dispositivo está conectado.
• Tampoco requiere procesos para demonizarse a sí mismos. A diferencia de
SysVinit, SystemD puede manejar servicios que se ejecutan sin tener que
pasar por el largo proceso de convertirse en demonios.
Puntos destacables en SystemD

• A diferencia de SysVinit, systemd conoce y realiza un seguimiento de todos


los procesos, incluidos los PID, y obtener información sobre los procesos es
mucho más sencillo para los administradores de sistemas en systemd.

• Systemd soporta contenedores que son básicamente entornos de servicio


aislados sin el requerimiento de máquinas virtuales. Esto tiene un gran
potencial para diseñar sistemas más seguros y sencillos en el futuro.
En conclusión...
• Al haber sido adoptado por todas las principales distribuciones de GNU/Linux,
SystemD está aquí para quedarse. Independientemente de lo que digan algunos
administradores de sistemas por la razón que sea, SystemD es el futuro de la
corriente principal de Linux, les guste o no a los usuarios individuales, lo que,
teniendo en cuenta sus claras ventajas, no es necesariamente algo malo.

• Para el usuario medio aporta tiempos de arranque más rápidos y probablemente


sistemas más fiables, mientras que en el futuro las distribuciones que lo
adopten pueden llegar a ser más «compatibles» entre sí. En cuanto al usuario,
nos beneficiaremos definitivamente del diseño de sistemas más actualizados y
contemporáneos que aportan a nuestros dispositivos de trabajo.
Actividad formativa - SystemD

• Le invitamos a buscar, descargar y


posteriormente instalar una “instancia”
(S.O. Virtualizado) el cual opere
distintos “Administradores de sistemas
y servicios para Sistemas”GNU/Linux.

• Posteriormente, comente con sus


compañeros y docentes su experiencia
(utiizando los comandos que se
presentan en la imagen), utilizando el
servicio SSH.
II.- Gestión del S.O. utilizando SystemD
Consideraciones previas

Para poner en práctica el contenido que se dará a conocer, será necesario


contar una “instancia virtualizada” de GNU/linux en su estación de trabajo (en
este caso, debera ejecutar CentOS/RHEL 7.x ó Posterior).

Si desea contar con un mayor detalle respecto de ésta presentación, solicite al


relator la guía complementaria de ”Gestión avanzada de Sistemas Operativos
GNU/Linux”.

Si Ud. cuenta con acceso a “RedHat Academy”, diríjase al curso “Administración


de sistemas RedHat III–254ES” (capítulo 1 – Control de Servicios y Demonios),
con el fin de utilizar ésta información como material complementario al curso.
I.- Conceptos básicos de SystemD
El comando systemctl se usa para administrar diferentes tipos de objetos systemd
denominados “unidades”. Utilizando el comando “systemctl –t help” podrá visualizar
una lista de los tipos de unidades disponibles en su S.O.

• Las unidades.service representan servicios del sistema. Este tipo de unidad se usa para
iniciar los demonios con más frecuencia, como un servidor WEB.

• Las unidades.socket representan sockets de comunicación entre procesos.

• Las unidades.path se usan para demorar la activación de un servicio hasta que ocurra un
cambio en el sistema de archivos espeífico, ej: Servidor de impresión.

• Las unidades.target permiten ajustar los niveles de ejecución de las aplicaciones como del
Sistema Operativo.
II.- Iniciando el trabajo con SystemD
Luego de arrancar su máquina, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacción con su relator.


III.- Gestión de servicios con SystemD
Luego de acceder a su terminal, utilice en la sección $name, la palabra “ssh” y luego
proceda a ejecutar las siguientes instrucciones:

Posteriormente, comente respecto de la interacción con su relator.


IV.- Estados de unidades SystemD
El estado de un servicio puede visualizarse utilizando el comando “systemctl status $nombre.$unidad ;
Si no se proporciona el tipo de unidad, systemctl mostrará el estado de la unidad de servicio en caso
que exista una.
V.-Gestión global de SystemD
Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacción con su relator.


VI.- Gestión de Registros - SystemD
Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacción con su relator.


VII:-Gestión de recursos energéticos sobre
el Sistema Operativo
Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacción con su relator.


VIII.- Niveles de ejecución en entornos
GNU/Linux y su gestión a través de SystemD

• El target estándar es default.target, que es un alias predefinido para


graphical.target (que corresponde al antiguo nivel de ejecución 5). Para cambiar
el target predeterminado en el arranque.De aquí nace una pregunta:
¿A qué se refiere con “nivel de ejecución”?

• El término runlevel o nivel de ejecución se refiere al modo de operación en


los sistemas operativos que implementan el estilo de sistema de arranque de
iniciación tipo “UNIX System V”.
VIII.- Niveles de ejecución existentes en
Sistemas Operativos GNU/Linux

La mayor parte de los usuarios puede


comprobar el nivel de ejecución actual de
su sistema operativo, utilizando
Los siguientes comandos:
VIII.- Niveles de ejecución existentes en
Sistemas Operativos GNU/Linux
• Para visualizar el nivel de ejecución definido en el sistema operativo, ejecute el
siguiente comando:
• # systemctl get-default
• Si Ud. Desea cambiar los parámetros (nivel de ejecución del sistema operativo),
utilice la siguiente instrucción:
• # systemctl set-default TARGET.target
• Recuerde que systemD utiliza “targets” en cada uno de los niveles de ejecución.
Por defecto, los principales targets son:
• Multi-user.target: Representa al nivel de ejecución 3
• Graphical.target: Representa al nivel de ejecución 5
IX.- Resolución de problemas utilizando
SystemD

Como ejemplo, se procederá a


investigar
Un error asociado al servicio
“systemd-modules-load”:
IX.- Resolución de problemas utilizando
SystemD
IX.- Resolución de problemas utilizando
SystemD
IX.- Resolución de problemas utilizando
SystemD
X.- Comentarios