Fini, una alternativa a SysV init y systemd llega a su nueva version 4.0
Después de aproximadamente tres años de desarrollo se dio a conocer la publicación del lanzamiento de la nueva versión del sistema de inicialización Finit 4.0 (Fast init), que se desarrolla como una alternativa simple a SysV init y systemd.
El proyecto se basa en la ingeniería inversa del sistema de inicio fastinit utilizado en el firmware de Linux de los netbooks EeePC y se destaca por su proceso de arranque muy rápido. El sistema está destinado principalmente a proporcionar sistemas integrados y compactos de arranque, pero también se puede utilizar para entornos de servidor y de escritorio comunes.
Sobre Finit
Finit admite niveles de ejecución en el estilo de inicio de SysV, monitoreando el estado de los procesos en segundo plano (reiniciando automáticamente un servicio en caso de falla), ejecutando controladores únicos, iniciando servicios teniendo en cuenta dependencias y condiciones arbitrarias, adjuntando controladores adicionales para comenzar antes o después se ejecuta el servicio.
Para ampliar la funcionalidad y adaptarse a sus necesidades, se pueden utilizar complementos, para lo cual se proporciona un sistema de hooks, que permiten adjuntar un manejador a las distintas etapas de carga y ejecución de servicios, así como brindar enlace a eventos externos.
Se admite el uso de scripts estándar para iniciar servicios creados para SysV init, así como rc Scripts .local, archivos con variables de entorno y configuraciones de red como en Debian y BusyBox. Las configuraciones se pueden definir en un solo archivo de configuración o distribuirse en varios archivos.
La gestión se realiza a través del kit de herramientas estándar initctl y run-parts, que le permite activar y desactivar servicios en relación con los niveles de ejecución, así como iniciar selectivamente algunos servicios.
Finit también incluye una implementación getty incorporada (terminal de control e inicios de sesión de usuario), watchdog para el monitoreo de la salud y un modo de conmutación por error con sulogin incorporado para ejecutar un shell de espacio aislado.
Principales novedades de Finit 4.0
Entre los cambios agregados en el lanzamiento de Finit 4.0 (la versión 3.2 se omitió debido a cambios que romperían la compatibilidad con versiones anteriores). La utilidad de reinicio separada ha sido reemplazada por un enlace simbólico a initctl, similar a las utilidades de detener, apagar, apagar y suspender.
También se destaca el complemento agregado para la carga automática de módulos del kernel para dispositivos conectados en runtime, además de que se agregó la capacidad de registrar operaciones que afectan la seguridad, como cambiar el nivel de ejecución, iniciar y detener servicios, fallas en el servicio.
También se destaca que se agregó soporte para el reinicio automático de los servicios después de cambiar la configuración, lo que permite prescindir de la ejecución manual del comando «initctl reload».
Se modificó la operación de los comandos «inictl cond set | clear COND» para vincular acciones a varios eventos. Para identificar los servicios, se usa la sintaxis <pid/foo: id> en lugar de enlazar a las rutas <svc/path/to/foo>.
De los demás cambios que se destacan:
- Complemento agregado para manejar /etc/modules-load.d/.
- Indicación implementada del progreso de las operaciones.
- La implementación incorporada del servidor inetd se ha eliminado, si es necesario, en el que puede instalar xinetd.
- Se agregó soporte para cgroups v2 para ejecutar servicios en cgroups separados.
- Se agregó el modo de recuperación de fallas con inicio de sesión personalizado.
- Se agregó soporte para iniciar/detener scripts desde SysV init.
- Se agregaron controladores pre:script y post:script que le permiten especificar las acciones que se realizarán antes o después de iniciar el servicio.
- Se agregó soporte para env: archivo con variables de entorno.
- Se agregó la capacidad de rastrear archivos PID arbitrarios.
- Se agregó la capacidad de iniciar tareas y servicios utilizando rutas relativas.
- Se agregó la opción «-b» a initctl para realizar acciones en modo por lotes.
- Soporte mejorado para /etc/network/interfaces.
Finalmente, si estás interesado en conocer más al respecto, puedes consular los detalles en el siguiente enlace.
Obtener Finit
Para quienes estén interesados en poder probar este sistema de inicialización, deben saber que se han preparado scripts de implementación de muestra para Void Linux, Alpine Linux y Debian.