Systemd es un gestor de arranque y de servicios para Linux desarrollado principalmente por Lennart Poettering (creador también de pulseaudio). Systemd, a diferencia de initscripts el gestor de inicio default en ArchLinux utiliza un método de paralelizacion agresiva que hace uso de los procesadores modernos multinucleo para iniciar procesos y demonios en paralelo real y así tener una gestión de inicio mas rápida y limpia.

Nota: Systemd hace uso de características de procesadores multi núcleo, si su procesador es mono núcleo , Systemd si va a funcionar, pero la diferencia seria cuando mucho penas perceptible. S

Systemd tampoco promete ser la respuesta a la rapidez del sistema y puede que una mala configuración dañe el sistema, le recomiendo leer muy bien de que trata Systemd y saber lo que hacen antes de hacer cualquier cambio, en si lo recomiendo para usuarios que gustan de personalización avanzada.

Instalar Systemd

Para instalar Systemd simplemente instalamos los paquetes necesarios vía pacman.

# pacman -S initscripts-systemd systemd systemd-arch-units

Luego pasamos a configurar Systemd.

Añadimos el comando init=/bin/systemd a la linea de arranque de nuestro kernel en el grub.

Tratandose de grub 1

Abrimos el /boot/grub/menu.lst

Y lo agregamos de la siguiente forma:

# (1) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz-linux root=/dev/disk/by-uuid/d531ff5b-de65-499a-9942-d18682375163 ro quiet i init=/bin/systemd
initrd /initramfs-linux.img

Tratandose de grub2.

Abrimos el archivo /etc/default/grub

Lo agregamos de la siguiente forma:

GRUB_DEFAULT=2
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="Arch Linux"
GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"
GRUB_CMDLINE_LINUX=""

Luego actualizamos el grub:

# grub-mkconfig -o /boot/grub/grub.cfg

Listo, el grub2 tendrá el parámetro de systemd, por que asi en grub2 y no editar el archivo directamente? Eso es explicación de otro post.

Manejo basico de los scripts de Systemd

systemctl: Es el comando utilizado para controlar los modulos de systemd y monitorear su desempeño
systemd-cgls: Muestra el arbol jerarquico de de un grupo de Control de systemdrecursively shows the contents of the selected Linux control group hierarchy in a tree
systemadm: Un frontend grafico para controlar y administrar systemd

Es recomendado ver el manual de systemd para mas detalles

man systemd

Ahora algunos comandos de manejo basicos

Listar servicios en ejecucion

$ systemctl

O tambien

$ systemctl list-units

Los servicios disponibles se encuentra listados en los directorios /lib/systemd/system y /etc/systemd/system

Activar un servicio:

# systemctl start

Deactivar un servicio:

# systemctl stop

Reiniciar un servicio:

# systemctl restart

Recargar un servicio:

# systemctl reload

Muestra el estatus de un servicio, incluso si esta en ejecucion o no:

# systemctl status

Habilita in servicio que sea iniciado en el proximo arranque:

# systemctl enable

Deshabilita un servicio para que no sea iniciado automaticamente en el siguiente arranque:

# systemctl disable

Configurar systemd

Niveles de ejecucion/objetivos

Systemd tiene un concepto de objetivos que define el nivel de ejecucion, con solo algunas diferencias. Algunos objetivos solo añaden los servicios del objetivo anterior y añade otros servicios a el. Si esta familiarizado con los niveles de ejecucion esto no sera problema.

 

Nivel de ejecucion SystemV

Objetivo de Systemd

Notas

0 runlevel0.target, poweroff.target Apaga el sistema
1, mono usuario runlevel1.target, rescue.target Modo mono-usuario
2, 4 runlevel2.target, runlevel4.target, multi-user.target Modo de inicio definido por el usuario/sistema, por default identico a 3
3 runlevel3.target, multi-user.target Multiusuario, entorno grafico
5 runlevel5.target, graphical.target Multiusuario, entorno grafico, todos los servicios del nivel 3 mas un entorno grafico
6 runlevel6.target, reboot.target reinicio
emergency emergency.target Shell de emergencia

Cambiar los niveles de ejecucion en Systemd

En systemd los niveles de ejecucion son expuestos como unidades de ejecucion, cada una de estas unidades inicia los scripts necesarios para ser iniciado mencionado runlevel

Multi usuario con interfaz grafica:

# systemctl isolate runlevel5.target

O nivel monousuairo o modo de rescate (runlevel 1)

# systemctl isolate runlevel1.target

Iniciar el entorno grafico con systemd

Para iniciar un entorno grafico debemos tener un display manager (o gestor de sesiones) como GDM, KDM o Slim

Agreggando KDM:

# systemctl enable kdm.service

Agregando GDM

# systemctl enable gdm.service

Integracion con los archivos de configuracion de Arch

La integracion y configuracion automatica se logra con el paquete initscripts-systemd, este es un paquete opcional (altamente recomendado) para hacer la trancision de sysVinit a Systemd.

Hay cambios como:

/etc/inittab no es utilizado para nada
/etc/rc.local y /etc/rc.local.shutdown pueden ser utilizados habilitando el servicio rc.local.service:

systemctl enable rc-local.service

/etc/rc.conf es utilizado parcialmente gracias a este paquete, si no es utilizado initscripts-systemd se tendran que editar los archivos nativos de configuracion systemd.

Se utiliza de /etc/rc.conf

LOCALE (lenguage local configurado)
KEYMAP (mapa de teclado)
CONSOLEFONT (fuente de consolas)
CONSOLEMAP (mapa de teclado en consola)
HOSTNAME (nombre del host)
MODULES (lista de modulos que inician por definicion)
DAEMONS (lista de daemosn, acepta blacklisting (!) e inicio en el background(@) )

No utilizado de /etc/rc.conf

TIMEZONE (symlink /etc/localtime to your zoneinfo file manually)
HARDWARECLOCK (utilize ‘hwclock –systohc –utc’ tpara establecer la hora del sistema a utc, localtime no esta soportado)
USELVM (el servicio lvm.service cumple esta funcion)
USECOLOR

Configurar los servicios de initscripts-systemd

Este paquete contiene algunos servicios que cumple algunas faltas en el desuso del /etc/rc.conf

lvm-service Copia el manejo de volumenes logicos del sistem arch linux, hay que habilitar este servicio si utilizamos LVM

systemctl enable lvm.service

rc-local.service Ejecuta archivos de configuracion/etc/rc-local, /etc/rc-local.shutdown

systemctl enable rc-local.service

arch-daemons.target Ejecuta la lista de DAEMONS del /etc/rc.conf. Si hay servicios nativos de systemd para manejar alguno de estos daemons, el servicio sera utilziado y su registro de la lista de DAEMONS sera omitida

systemctl enable arch-daemons.target

arch-persistent-settings.service Se aplica al apagar, se aegura que las configuraciones de Arch se ejecuten al siguiente inicio:

Ajusta la zona horaria en base al /etc/rc.conf o crea un symlink a /etc/localtime de la zona horaria de /usr/share/zoneinfo
Actualiza la lista de modulos basado en el /etc/rc.conf

systemctl enable arch-persistent-settings.service

Como alternativa a initscripts-systemd se pueden configurar manualmente los parametros que este paquete maneja, la entrada en la wiki tiene mucha mas informacion al respecto, aqui