Devuan y varias distribuciones de Linux sin systemd proporcionan sistemas de inicio alternativos. unidad es uno de los más básicos y ligeros. Tener una base de código pequeña facilita el mantenimiento y también la auditoría de errores y problemas de seguridad. También puede ejecutarse en otros Unices como *BSD, MacOSX, etc. En este artículo, voy a cubrir los conceptos básicos de runit esquema de inicio con Devuan como base. Sin embargo, la mayoría de los conceptos y comandos deberían ser los mismos para otras distribuciones. Puede consultar las referencias al final para obtener más información.
Mecanismo de trabajo
Según la documentación oficial, runit es un esquema init con supervisión de servicio. Eso significa que maneja el inicio automático de los servicios durante el arranque, además de monitorearlos y reiniciarlos. De acuerdo con la filosofía de UNIX, runit consta de varias herramientas pequeñas y archivos binarios (aunque no hasta el punto de ser inflados *ejem* systemd *ejem* ) para interactuar con él y otros demonios.
Al igual que con la mayoría de los sistemas de inicio, el kernel carga el primer proceso:/sbin/init
que es proporcionado por el programa runit-init(8). Luego se reemplaza a sí mismo con runit(8). runit es lo que realiza el arranque, ejecución y apagado del sistema y lo hace en tres etapas:
- Etapa 1 :
El sistema realiza las tareas de inicialización únicas a través de/etc/runit/1
. Recibimos un caparazón de emergencia si esta etapa falla. - Etapa 2 :
runit inicia/etc/runit/2
que maneja los niveles de ejecución a través de runsvdir(8). Esta es la etapa en la que permanece nuestro sistema cuando se está ejecutando. También podemos dar la solicitud de reinicio Ctrl+Alt+Delete en esta etapa. - Etapa 3:
Si/etc/runit/2
regresa sin errores, lo que sucede durante la detención o reinicio del sistema, runit inicia/etc/runit/3
. Las tareas de apagado se realizan en la etapa 3.
Niveles de ejecución
Una instalación estándar de runit tiene 2 niveles de ejecución , default
y single
. Un directorio de nivel de ejecución contiene enlaces simbólicos a otros directorios de servicios. La mayoría de las tareas se realizan y la mayoría de los servicios se inician en el default
nivel de ejecución Pero podemos hacer nuestros propios niveles de ejecución creando una nueva carpeta en /etc/runit/runsvdir/
y vincular nuestros servicios deseados a ese nivel de ejecución. Mi instalación de Devuan tiene otros dos niveles de ejecución creados.
Runit cambia los niveles de ejecución cambiando el directorio runsvdir
el programa se está ejecutando. Esto es manejado por runsvchdir
dominio.
Por ejemplo, para cambiar a single
nivel de ejecución del usuario:
# runsvchdir single
También podemos pedirle a runit que se inicie en un nivel de ejecución específico durante el arranque en lugar del default
. Podemos hacerlo agregando el runitdir=name
parámetro del núcleo. Obviamente, el nivel de ejecución name
debería existir, es decir, un directorio debe estar disponible en /etc/runit/runsvdir
con ese nombre.
Por ejemplo, para iniciar directamente en el modo de usuario único (es decir, el single
nivel de ejecución), podemos añadir runitdir=single
al parámetro del núcleo.
En GRUB, podemos hacer esto presionando e
mientras resalta una entrada en el menú del gestor de arranque.
Presionando Ctrl+X
hará que el sistema arranque con los parámetros dados, llevándonos efectivamente al modo de usuario único.
Servicios de gestión
Un directorio de servicio contiene archivos y scripts necesarios para administrar el daemon. Los directorios de servicios se encuentran en /etc/sv
directorio.
Estos directorios de servicios deben estar vinculados a /etc/service
de lo contrario runit
no podrá acceder a ellos.
Creando el enlace simbólico en /etc/service
esencialmente enable
para que se inicie en el momento del arranque. Podemos disable
un servicio creando un archivo llamado down
dentro del directorio de servicios.
Aunque runit tiene varios programas, normalmente solo necesitamos interactuar con el sv
dominio. La sintaxis es equivalente a systemd 's systemctl
comando.
Iniciar un servicio:
# sv start <service_name>
Detenerlo:
# sv stop <service_name>
Reiniciar o recargar un servicio:
# sv restart <service_name>
Consultar el estado de un servicio:
# sv status <service_name>
También hay una reescritura de sv
comando en Rust llamado rsv
. Sin embargo, no voy a cubrirlo en este artículo. Consulte el enlace entre las referencias a continuación.
Referencias:
- Página de inicio de Runit
- rsv
- Wiki Artix | Ejecutar
- Linux vacío | Servicios y demonios:runit