Sistema de arranque RC en OpenBSD

Escrito por Adrian Ali el 26 de abril de 2022, usando OpenBSD Release 7.2 contacto: adrianali arroba fortix.com.ar

Índice

1. Introducción
2. Comandos de administración del sistema RC
3. Crear un script RC
4. Referencias

1. Introducción

OpenBSD usa un sistema de arranque RC. Tenemos dos archivos principales que controlan el sistema RC, el primero:

/etc/rc.conf

este tiene la configuración por defecto de que levanta y que no en el arranque, esa configuración está ligada a la versión de OpenBSD que tengamos instalada. Este archivo no debe ser modificado de ninguna forma, puesto que si queremos cambiar los valores por defecto del sistema se debe hacer con el archivo:

/etc/rc.conf.local

lo recomendable es no modificar el archivo con un editor, sino usando el comando rcctl. Si lo modificamos con un editor, lo primero es ver como se llama la variable que controla el servicio o demonio, ejemplo:

puffy ~ # grep ssh /etc/rc.conf
sshd_flags=
puffy ~ #

vemos que el valor por defecto de la variable sshd_flags es nada, eso significa que el demonio de ssh arranca por defecto, fijarse que no se pone "YES" sino nada, es más si pondríamos:

sshd_flags=YES

daría error. Si queremos desactivar que no arranque por defecto el demonio ssh tendríamos que tener la variable configurada a NO pero en el otro archivo:

puffy ~ # grep ssh /etc/rc.conf.local
sshd_flags=NO
puffy ~ #

recordemos de vuelta que esto es recomendable hacerlo con el comando rcctl para evitar errores de tipeo.

2. Comandos de administración del sistema RC

Obtener ayuda:

puffy ~ # rcctl
usage:  rcctl get|getdef|set service | daemon [variable [arguments]]
        rcctl [-df] check|reload|restart|stop|start daemon ...
        rcctl disable|enable|order [daemon ...]
        rcctl ls all|failed|off|on|started|stopped
puffy ~ #

más ayuda:

puffy ~ # man rcctl

algunos ejemplos:

rcctl ls on........: muestra los que están activados para iniciar en arranque
rcctl ls started...: muestra los que están ejecutándose
rcctl enable lpd...: activo el demonio para que arranque en boot
rcctl start lpd....: arranco el demonio lpd
rcctl stop lpd.....: apago el demonio lpd

3. Crear un script RC

Si necesitamos crear nuestro propio script RC los pasos son:

Crear el script en:

/etc/rc.d

ejemplo script foo:

#!/bin/sh

daemon="/usr/local/bin/food"

. /etc/rc.d/rc.subr

rc_cmd $1

dar permisos:

chmod 555 /etc/rc.d/foo

editar en:

vi /etc/rc.conf.local

y agregar:

foo=

NOTA: Fijarse que cuando queremos que algo como un demonio o rutina de arranque no levante en boot ponemos:

httpd_flags=NO

pero si queremos que levante no ponemos "YES" sino nada:

httpd_flags=

por último ejecutar:

. /etc/rc.conf.local
. /etc/rc.conf
rcctl enable foo

4. Referencias

https://man.openbsd.org/rc.8

https://man.openbsd.org/rc.conf.local.8

https://man.openbsd.org/rc.subr.8