====== OpenRC ====== OpenRC es un sistema de gestión de servicios basado en dependencias. Funciona con el programa de inicio provisto por el sistema, normalmente ///sbin/init //. === Características === OpenRC proporciona una serie de características como la ejecución de initscript iniciada por hardware y la compatibilidad con cgroups, sin requerir grandes cambios de diseño. === Instalación === Dos [[slackware: slackbuild_scripts | Slackbuilds]] están disponibles, [[http://slackbuilds.org/repository/14.2/system/openrc/|openrc]], que contiene el sistema de inicio OpenRC, y [[http: // slackbuilds.org/repository/14.2/system/openrc-services/|openrc-services]], que contiene varios servicios para usar con OpenRC. ==== Después de la Instalación ==== Después de la instalación, se necesitan algunos pasos para arrancar con OpenRC. === Configurar los servicios de agetty === # main tty ln -s /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.tty1 /sbin/rc-update add agetty.tty1 default cp /etc/openrc/conf.d/agetty /etc/openrc/conf.d/agetty.tty1 echo 'agetty_options="--noclear"' >> /etc/openrc/conf.d/agetty.tty1 # additional ttys for i in {2..6}; do ln -s /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.tty${i} /sbin/rc-update add agetty.tty${i} default done # serial tty (for servers) ln -s /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.ttyS0 /sbin/rc-update add agetty.ttyS0 default cp /etc/openrc/conf.d/agetty /etc/openrc/conf.d/agetty.ttyS0 echo 'agetty_options="--noclear"' >> /etc/openrc/conf.d/agetty.ttyS0 === Actualizar los parámetros de arranque === Agregue lo siguiente a sus parámetros de arranque (a través de ///etc/lilo.conf// para lilo o ///etc/default/grub // para grub): init =/sbin/openrc-init Vuelva a generar la configuración de inicio ('lilo -v' o 'grub-mkconfig -o /boot/grub/grub.cfg'). === Habilitar el registro de arranque === El archivo de configuración principal para OpenRC es ///etc/openrc/rc.conf//, y contiene varias opciones. Una opción común que podría cambiarse es habilitar el registro de inicio configurando '' rc_logger = "YES"'', de esta manera, cualquier error encontrado durante el inicio podría registrarse y examinarse más tarde (la ubicación predeterminada del registro es ///var/log/rc.log//). ===== Reinicio ===== Al reiniciar,arranca en línea de comandos con solo el mínimo de servicios habilitados. Puede mostrar una advertencia sobre el soporte en desuso para ///etc/mtab // como un archivo, y cómo corregirlo: # cp /etc/mtab /etc/mtab.bkp # ln -snf /proc/self/mounts /etc/mtab También puede reclamar de que falta el archivo ///etc/sysctl.conf// que se puede crear como: # touch /etc/sysctl.conf ==== Habilitando algunos servicios ==== Los servicios se pueden habilitar como: # rc-service add Pueden ser desactivados como: # rc-service del Algunos servicios comunes que podrían ser habilitados: # rc-update add dbus default # rc-update add sysklogd default # rc-update add dcron default # rc-update add alsasound default # for desktop # rc-update add consolekit default # for desktop # rc-update add sshd default # for server Los servicios habilitados en el nivel de ejecución actual se pueden consultar con: $ rc-status Los servicios habilitados en todos los niveles de ejecución se pueden consultar con: $ rc-update Algunos servicios que están habilitados de forma predeterminada para el nivel de ejecución ** sysinit ** incluyen udev y udev-postmount. Los usuarios que usan dmcrypt, lvm o mdraid podrían agregar los siguientes servicios respectivamente al nivel de arranque ** boot **: # rc-update add dmcrypt boot # dmcrypt # rc-update add device-mapper boot # lvm # rc-update add lvm boot # lvm # rc-update add mdraid boot # mdraid === Red === Si usa Ethernet a través de DHCP, el servicio ** dhcpcd ** podría estar habilitado: # rc-update add dhcpcd default Si usa wifi con computadoras portátiles, el servicio ** NetworkManager ** o ** wicd ** podría estar habilitado. La combinación de dhcpcd y wpa_supplicant (junto con una interfaz como wpa_gui o wpa_cli) también podría usarse como una alternativa ligera. Se puede configurar una red estática editando ///etc/openrc/conf.d/network//. === Gestor de visualización === Para iniciar desde un administrador de pantalla gráfico, ///etc/openrc/conf.d/xdm// se puede editar para especificar el administrador de pantalla, y el servicio xdm se podría habilitar: # rc-update add xdm default Si usa una computadora portátil, el servicio ** acpid ** también podría habilitarse. === Migración de servicios habilitados existentes === Para verificar los servicios habilitados existentes, se podría usar el siguiente código: for file in /etc/rc.d/*; do if [ -x "${file}" ]; then echo "enabled ${file}" fi done Para estos servicios, se podrían habilitar los servicios OpenRC correspondientes, por ejemplo: # rc-update add acpid default # rc-update add cgmanager default # rc-update add gpm default ... Todos los servicios presentes se pueden consultar a través de: $ rc-update -v ====== Configuración ====== Los servicios de OpenRC están presentes en la carpeta ///etc/openrc/init.d//, y los archivos de configuración correspondientes están presentes en ///etc/openrc/conf.d// Algunos archivos de configuración comunes incluyen: /etc/openrc/conf.d/modules # modules to be loaded at boot /etc/openrc/conf.d/hostname # hostname of the system /etc/openrc/conf.d/keymaps # console keymap ===== Gestión de servicios ===== Los servicios se pueden iniciar / detener / reiniciar como: # rc-service Por ejemplo, # rc-service sshd start ===== Apagar / reiniciar ===== Para apagar o reiniciar, uno tendrá que usar ** openrc-shutdown **. Para cerrar desde un entorno de escritorio con ConsoleKit2, consulte este [[https://github.com/ConsoleKit2/ConsoleKit2/pull/113|PR]]. ====== Solución de problemas ====== En este momento solo se ha probado un subconjunto de los servicios incluidos, por lo que es posible que algunos de ellos no se ejecuten correctamente. Si algún servicio no funciona, pruebe el sistema provisto en ///etc/rc.d// (si está disponible). ==== mysqld ==== Intente agregar las siguientes líneas a ///etc/my.cnf// [mysqld] user = mysql basedir = /usr datadir = /var/lib/mysql pid-file = /run/mysql/mysql.pid socket = /var/run/mysql/mysql.sock ==== Tratar con servicios colapsados ==== A veces, openrc informa del estado de un servicio como "bloqueado". El proceso puede haber muerto o su archivo pid desapareció / cambió. Si se intenta iniciar un servicio bloqueado, los informes de `rc-service`: * WARNING: has already been started Así que uno intenta detenerlo antes de volver a empezar. Sin embargo, en algunas situaciones, el servicio no se detiene. Esto conduce a un punto muerto en el que no se puede detener el servicio ni iniciarlo. Para tales casos: # rc-service zap * Manually resetting to stopped state **zap** resets the service state, allowing us to start it again. ===== openrc-init ===== Desde la versión ** 0.25 **, openrc proporciona // openrc-init // que puede usarse para iniciar el sistema. Esto permite cambiar entre OpenRC y otros sistemas init, por ejemplo, sysvinit, simplemente cambiando los parámetros de arranque. Para obtener más información, consulte la [[https://wiki.gentoo.org/wiki/OpenRC#openrc-init|Gentoo wiki]]. ===== Migración de /etc/init.d a /etc/openrc/init.d ===== OpenRC 0.39+, tal como se envió a través de SBo, cambia el directorio de servicio y configuración a ///etc/openrc // en lugar de ///etc//. Esto se está haciendo para mantener una mayor compatibilidad con una instalación Slackware vanilla. Los servicios existentes deberán migrarse, a continuación se detallan los detalles sobre cómo se puede hacer. === 1. Instale openrc-0.39.2 y openrc-services-20181107 === Estos paquetes envían los archivos de configuración y servicio en ///etc/openrc //. === 2. Migra los servicios existentes === Esto implica 4 pasos: # migrate existing services for service in /etc/init.d/*; do svcname=$(basename "$service") if [ ! -e "/etc/openrc/init.d/${svcname}" ]; then if [ -f "/etc/init.d/${svcname}" ] && grep -q openrc "/etc/init.d/${svcname}"; then cp -v "/etc/init.d/${svcname}" "/etc/openrc/init.d/${svcname}" elif [ -L "/etc/init.d/${svcname}" ]; then # check if symlink is of a service service_target=$(readlink -f "$service") service_target_name=$(basename "$service_target") if [ $(dirname "$service_target") = "/etc/init.d" ]; then ln -sv "/etc/openrc/init.d/${service_target_name}" "/etc/openrc/init.d/${svcname}" fi fi fi done # enable existing services for runlevel in /etc/runlevels/*; do for service in ${runlevel}/*; do svcname=$(basename "$service") rvlname=$(basename "$runlevel") if [ ! -e /etc/openrc/runlevels/${rvlname}/${svcname} ] && [ -e /etc/openrc/init.d/${svcname} ]; then ln -sv /etc/openrc/init.d/${svcname} /etc/openrc/runlevels/${rvlname}/${svcname} fi done done # check config changes for file in /etc/conf.d/*; do filename=$(basename "$file") extension="${filename##*.}" if [ "$extension" = orig ] || [ "$extension" == new ]; then continue # dont need to check extra fi if [ -e "/etc/conf.d/${filename}" ] && [ -e "/etc/openrc/conf.d/${filename}" ]; then diff -Nupr "/etc/conf.d/${filename}" "/etc/openrc/conf.d/${filename}" fi done # main config file diff -Nupr /etc/rc.conf /etc/openrc/rc.conf # check local.d changes for file in /etc/local.d/*; do filename=$(basename "$file") if [ ! -e "/etc/openrc/local.d/${filename}" ]; then cp -v "/etc/local.d/${filename}" "/etc/openrc/local.d/${filename}" elif [ -e "/etc/local.d/${filename}" ] && [ -e "/etc/openrc/local.d/${filename}" ]; then # show changes diff -Nupr "/etc/local.d/${filename}" "/etc/openrc/local.d/${filename}" fi done Los cambios de configuración encontrados anteriormente se pueden actualizar manualmente o pegar en una nueva ubicación. === 3. Revisar y reiniciar === Verifique si '' rc-status '' está mostrando todos los servicios (puede mostrarlos como detenidos). Reinicie y verifique si las cosas funcionan correctamente, realice los cambios necesarios. Los archivos y carpetas antiguos pueden ser renombrados (o eliminados). mv /etc/init.d /etc/init.d-openrc-bkp mv /etc/conf.d /etc/conf.d-openrc-bkp mv /etc/local.d /etc/local.d-openrc-bkp mv /etc/runlevels /etc/runlevels-openrc-bkp mv /etc/rc.conf /etc/rc.conf-openrc.bkp Finalmente, cualquier cambio realizado en el sistema Slackware predeterminado puede revertirse: mv /etc/init.d-bkp /etc/init.d ====== Ver también ====== [[https://en.wikipedia.org/wiki/OpenRC|Wikipedia]] [[https://wiki.gentoo.org/wiki/OpenRC|Gentoo Wiki]] [[https://github.com/OpenRC/openrc/|Github]] [[https://github.com/OpenRC/openrc/blob/master/user-guide.md|Guía del usuario]] [[https://www.linuxquestions.org/questions/slackware-14/using-openrc-on-slackware-4175542567/|LQ thread]] [[https://gitlab.com/aadityabagga/openrc-services|openrc-services repo]] ====== Sources ====== * Originalmente escrito por[[wiki:user:aaditya | Aaditya]] * Traducido por: [[wiki:user: slackwarespanol | Victor]] 2019/02/11 01:12 (UTC) {{tag>howtos init author_aaditya}}