
¿Qué es Systemv? ¿Y Systemd?
SystemV es un sistema de inicio tradicional de UNIX que gestiona la secuencia de arranque y servicios usando scripts de inicio en directorios como /etc/rc.
Los servicios se inician en un orden específico.
En cambio, Systemd es un sistema de inicio más moderno que reemplaza a SystemV en muchas distribuciones, incluido Debian.
Es más rápido, maneja dependencias de servicios de manera más eficiente, y usa archivos de configuración llamados “units”, en lugar de scripts.
Systemd es paralelo, maneja mejor dependencias y servicios dinámicos, mientras que SystemV sigue un orden secuencial más simple y menos flexible.
Hay un gran debate en la comunidad con respecto a esto, los puristas siguen prefiriendo Systemv, ahora veremos como lograr obtenerlo.
Objetivo:
En la presente práctica se trata de tener una instancia sin systemd utilizando para ello el tradicional SystemV, utilizado antes de la adopción del sistema systemd por parte de la comunidad debian.
Para ello veremos como se desinstala/instala y se configura todo lo necesario para tal fin.
Requisitos Previos:
Para esta practica, parto de la base de un equipo Debian 12.
La idea es utilizar los repositorios de Devuan, que viene a ser como Debian, pero usando Systemv.
Empezamos:
Lo primero que hay que hacer es modificar el fichero /etc/apt/sources.list de mi máquina debian y dejar los repositorios de devuan, que es otro sistema operativo como debian pero que no usa systemd, como ya he comentado antes. Para ello hay que comentar todos los repositorios de debian, y dejar solamente los de devuan, así:
deb http://deb.devuan.org/merged daedalus main deb http://deb.devuan.org/merged daedalus-updates main deb http://deb.devuan.org/merged daedalus-security main

Pero estos repositorios están firmados, y al hacer un apt update dará error, por lo que hay que instalar el keyring, primero lo he descargado y lo he instalado con dpkg:
wget http://deb.devuan.org/merged/pool/DEVUAN/main/d/devuan-keyring/devuan-keyring_2023.10.07_all.deb
dpkg -i devuan-keyring_2023.10.07_all.deb

Hecho esto ya permite actualizar la lista de paquetes (antes habia 44 paquetes, y luego ya 38 que son los de devuan):


El siguiente paso es instalar pstree que pertenece al paquete psmisc. Para poder encontrar a que paquete pertenece un binario se usa apt-file:
sudo apt-file search pstree | grep bin/$pstree
sudo apt install psmisc

El siguiente paso es obtener systemv y eliminar systemd. (Si diera fallo, hay que parar manualmente systemd, aunque no es nada recomendable) y para ello:
sudo apt remove --purge systemd
sudo apt install sysvinit-core sysvinit systemd-sysv-
update-initramfs -u
-
sysvinit-core: Instala el núcleo de SysVinit, el sistema de inicio tradicional basado en scripts que controlan el arranque y apagado de los servicios del sistema.
-
sysvinit: Instala herramientas adicionales para SysVinit, que complementan al paquete sysvinit-core.
-
systemd-sysv- (con el guion al final): Elimina systemd-sysv, que es el paquete que configura systemd como el sistema de inicio por defecto y reemplaza los enlaces de inicio de SystemV.
-
update-initramfs: -u para que use el kernel actual que esta en uso.
Hecho esto, se reinicia la máquina.


Y como se ve en las imágenes, ahora el proceso padre es init en lugar de systemd. Al buscar con ps aux algo de systemd aparece como que no existe:
pstree -sp


Y con esto estaria finalizada la practica. Aunque un extra es hablar de los run leves de systemv, que viene a ser los comandos de apagado, reinicio etc.
Por ejemplo para apagar la máquina seria init 0.
Nota Importante / Errores:
Errores de Red:
Un problema que puede ocurrir es quedarse sin red al quitar systemd , pero se soluciona usando dhclient , o si eso no funciona, hay que modificar el archivo /etc/network/interfaces , pero para poder reiniciar el “servicio” como haciamos en systemd, ya no es igual.
auto lo iface lo inet loopback auto ens3 iface ens3 inet dhcp
- ens3 es mi interfaz, para comprobar cual es la tuya usa ip a.
No se puede usar un systemctl restart ni un service, hay que hacerlo con:
sudo /etc/init.d/networking restart
Esto de paso solucionaria el error de que en cada reinicio la máquina perderia su ip, y habria que hacer a mano un dhclient cada vez (suponiendo que no diera error).
Si por algún motivo no lo encuentra es que se ha eliminado el paquete ifupdown. Por lo que lo instalo con:
sudo apt install ifupdown
Hecho esto ya puedo reiniciar la red:

Ahora ya al reiniciar me puedo conectar sin problemas por ssh porque si mantiene la ip:

Errores de Resolución Estática (DNS):
Al eliminar systemd se ha perdido la resolución estatica, porque el archivo /etc/resolv.conf es enrealidad un enlace simbólico a /run/systemd/resolve/resolv.conf.
Para solucionarlo lo que hay que hacer es eliminar primero el enlace simbólico, y crear el archivo manualmente, añadiendo esto ya que es una instancia de OpenStack:
nameserver 172.22.0.1 search .
Donde esa ip, es el servidor DNS. Hecho eso ya conecta correctamente con los repositorios de devuan.

Y una ultima comprobacion de que no tiene systemd:

Volver a Systemd:
Si quisiera volver a utilizar systemd:
Instalar systemd y systemd-sysv:
sudo apt install systemd systemd-sysv
Eliminar sysvinit:
sudo apt purge sysvinit-core sysvinit
Actualizar el initramfs:
sudo update-initramfs -u
Y de esta forma es como se pasa de Systemd a Systemv con init, y viceversa.