OpenRC (Español)

From ParabolaWiki
Jump to: navigation, search

OpenRC es un sistema de inicio basada en dependencia mantenido por los desarrolladores de Gentoo, que trabaja con el programa init proveído, normalmente SysVinit. No es un reemplazo para SysVinit.

Es una alternativa a Systemd para los usuarios que les gusta más control sobre sus sistemas, y no quieren todas las características que Systemd provee y automáticamente activa.

1 Advertencia

Advertencia: Por favor, lea toda la advertencia

Por lo general, cuando se instala un software de que requiera un archivo de unidad, se proporcionan para systemd. OpenRC no está oficialmente, por lo tanto, tendrá que añadir "-openrc" para obtener el demonio para OpenRC. Por ejemplo, si instala openvpn, también es necesario instalar: openvpn-openrc.

Toda la suite de OpenRC está empaquetada en repositorio PCR, en orden de instalar OpenRC, debe habilitar el PCR.

Para la sesión actual cuando se instala OpenRC, el comando poweroff probablemente no funcionará. Después de un reinicio, el comando poweroff funciona bien otra vez. Cierra tus programas, ejecuta sync, y podrás apagar tu computador manualmente.

netctl funciona con Systemd, y no funcionará con OpenRC. En esta página, asumiremos que ya tienes una alternativa, en nuestro caso, esta es networkmanager.

2 Grupos

Antes de que Arch migrara a Systemd, los usuarios tenían que ser agregados manualmente a algunos grupos en orden de tener acceso a algunos dispositivos o periféricos. Lea más sobre esto aquí.

Asegúrate de que tu usuario está en el grupo audio, o no tendrás audio:

usermod -aG audio <tu_usuario>

En el caso de algunos entornos gráficos, tales como KDE, tendrás que editar /etc/pulse/client.conf y eliminar la línea autospawn = no, y debería verse algo como esto:

...
; default-sink =
; default-source =
; default-server =
; default-dbus-server =

; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB 

; auto-connect-localhost = no
; auto-connect-display = no
Advertencia: Esto solo es en el caso de que uses PulseAudio. Para más información refiérase a este tema del foro de Manjaro.

Lo mismo para el video, si no tus juegos podrían tener un poco de latencia:

# usermod -aG video <tu-usuario>

Y para webcam/impresoras:

# usermod -aG optical <tu-usuario>

También para almacenamiento

# usermod -aG storage <tu-usuario
# usermod -aG disk <tu_usuario>

Y acceso para CUPS

# usermod -aG sys <tu-usuario>

Puedes reinstalar Systemd cuando quieras, sus dependencias se instalarán también.

3 Intalación

OpenRC está disponible en PCR. Se puede instalar ejecutando:

pacman -S openrc-base

La salida del comando anterior es algo así:

$ sudo pacman -S openrc-base
:: Hay 11 miembros en el grupo openrc-base:
:: Repositorio pcr
   1) cronie-openrc  2) cryptsetup-openrc  3) dbus-openrc  4) device-mapper-openrc  5) dhcpcd-openrc
   6) glibc-openrc  7) inetutils-openrc  8) lvm2-openrc  9) mdadm-openrc  10) netifrc  11) udev-openrc

Introduzca una selección (por omisión=todos): 
resolviendo dependencias…
buscando conflictos entre paquetes…
:: cronie-openrc y systemd-sysvcompat están en conflicto. ¿Quitar systemd-sysvcompat? [s/N] s
:: dbus-x11 y dbus están en conflicto (libdbus). ¿Quitar dbus? [s/N] s

Paquetes (16) dbus-1.10.10-3 [quitando]  dbus-x11-1.10.10-3.1  openrc-0.22.2-1.parabola1
              systemd-sysvcompat-231-4.parabola1 [quitando]  sysvinit-2.88-16.1  cronie-openrc-20160907-1
              cryptsetup-openrc-20160907-1  dbus-openrc-20160907-1  device-mapper-openrc-20160907-1
              dhcpcd-openrc-20160907-1  glibc-openrc-20160907-1  inetutils-openrc-20160907-1  lvm2-openrc-20160907-1
              mdadm-openrc-20160907-1  netifrc-0.4.0-2  udev-openrc-31-1

Tamaño total de la descarga:    0,61 MiB
Tamaño total de la instalación:  3,50 MiB
Tamaño neto tras actualizar:    2,61 MiB

:: ¿Continuar con la instalación? [S/n]

Después de instalar el grupo de paquetes openrc-base, OpenRC debería iniciar por defecto en vez de Systemd. Nótese que va a iniciar una línea de comandos, ya que el servicio para un gestor de sesiones gráfico no se ha instalado.

En la instalación de openrc-base, se puede obtener mensajes como:

run 'rc-update add cronie default'
run 'rc-update add dbus default'

Ejecutar estos comandos añade los servicios a los niveles de ejecución (runlevels) especificados. Por ejemplo al ejecutar:

sudo rc-update add dbus default

Es servicio dbus se añadiría al nivel de ejecución default y se iniciaría automáticamente al inicio.

dbus (bus de mensajes del sistema) y cronie (por cron) son algunos de los servicios comunes que se pueden activar.

Nótese que reemplazar Systemd por eudev es altamente recomendado.

3.1 openrc-desktop

El grupo de paquetes openrc-desktop se puede usar para instalar la mayoría del software necesitado por los entornos de escritorio:

$ sudo pacman -S openrc-desktop
:: Hay 14 miembros en el grupo openrc-desktop:
:: Repositorio pcr
   1) acpid-openrc  2) alsa-utils-openrc  3) avahi-openrc  4) cgmanager-openrc  5) consolekit-openrc
   6) cronie-openrc  7) dbus-openrc  8) desktop-privileges  9) dhcpcd-openrc  10) displaymanager-openrc
   11) gpm-openrc  12) modemmanager-pk-rules  13) networkmanager-openrc  14) udev-openrc

Introduzca una selección (por omisión=todos): 
resolviendo dependencias…
buscando conflictos entre paquetes…
:: polkit-consolekit y polkit están en conflicto. ¿Quitar polkit? [s/N] s

Paquetes (28) acpid-2.0.28-1  alsa-utils-1.1.2-1  cgmanager-0.39-2  consolekit-1.1.0-12
              libnih-1.0.3-2  pm-quirks-0.20100619-4  pm-utils-1.4.1-6  polkit-0.113-4 [quitando] 
              polkit-consolekit-0.113-5  acpid-openrc-20160623-1
              alsa-utils-openrc-20160623-1  avahi-openrc-20160623-1  cgmanager-openrc-20160623-1
              consolekit-openrc-20160623-1  cronie-openrc-20160907-1  dbus-openrc-20160907-1
              desktop-privileges-0.5-2.parabola1  dhcpcd-openrc-20160907-1  displaymanager-openrc-20160623-1
              gpm-openrc-20160623-1  modemmanager-pk-rules-20160402-1  networkmanager-openrc-20160623-1
              udev-openrc-31-1

Tamaño total de la descarga:    2,31 MiB
Tamaño total de la instalación:  9,27 MiB
Tamaño neto tras actualizar:    6,76 MiB

:: ¿Continuar con la instalación? [S/n]
Nota: Usted tendrá que instalar un gestor de sesiones que sea compatible con consolekit para aplicaciones gráficas que requieran privilegios como GParted. Algunas opciones son sddm-consolekit y lxdm-consolekit.

4 Reemplazar Systemd con eudev (usuarios avanzados)

Con OpenRC como el sistema de inicio, el rol de Systemd es reducido al un proveedor de udev, y por razones de compatibilidad eudev, desarrollado por la gente de Gentoo, se puede usar como reemplazo. Nótese que remover Systemd puede causar algunos problemas de incompatibilidad con el software existente.

Primero elimine las dependencias instaladas por el metapaquete libsystemd:

# pacman -Rdds libsystemd

Ahora instale los siguientes paquetes:

$ sudo pacman -S eudev-systemd libeudev-systemd
resolviendo dependencias…
buscando conflictos entre paquetes…
:: eudev-systemd y systemd están en conflicto (systemd-tools). ¿Quitar systemd? [s/N] s
:: libeudev y libudev están en conflicto (libudev.so). ¿Quitar libudev? [s/N] s
:: libeudev-systemd y libsystemd están en conflicto. ¿Quitar libsystemd? [s/N] s

Paquetes (7) eudev-3.2-4  libeudev-3.2-4  libsystemd-231-4.parabola1 [quitando]  libudev-231-4.parabola1 [quitando]
             systemd-231-4.parabola1 [quitando]  eudev-systemd-231-8.parabola1  libeudev-systemd-231-8.parabola1

Tamaño total de la descarga:     1,66 MiB
Tamaño total de la instalación:   9,37 MiB
Tamaño neto tras actualizar:    -8,19 MiB

:: ¿Continuar con la instalación? [S/n]

eudev: Provee udev.

eudev-systemd: Paquete con los binarios systemd-sysuser y systemd-tmpfiles. Útil para satisfacer la dependencia de los paquetes que requieren systemd.

libeudev-systemd: Ofrece librerías de Systemd. Útil para satisfacer la dependencia de los paquetes que requieren libsystemd

Después de seguir los pasos anteriores Systemd se desinstalará y será reemplazado por eudev y sus equivalentes.

5 Configuración

5.1 Demonios requeridos a menudo

Una vez que hayas migrado a OpenRC, puede que tengas que añadir dbus, o lvm2 etc. Aquí está el procedimiento para lvm2-openrc :

sudo rc-update add lvm boot

Para cryptsetup-openrc :

sudo rc-update add dmcrypt boot

Para dbus-openrc :

sudo rc-update add dbus default

Para alsa-utils-openrc :

sudo rc-update add alsasound default

Para cronie-openrc :

sudo rc-update add cronie default

En cada paquete que contenga un demonio openrc, tú verás este mensaje:

      ==> rc 'rc-update add ... default'

5.2 Hostname

OpenRC tiene su propia configuración en /etc/conf.d/, en orden de tener tu hostname, edita /etc/conf.d/hostname:

# nano /etc/conf.d/hostname

Y reemplaza localhost con el nombre que deseas.

# Set to the hostname of this machine
hostname="localhost"

5.3 Configuración de NetworkManager

NetworkManager se instala con el paquete networkmanager-openrc, luego necesitas habilitarlo al inicio:

sudo rc-update add NetworkManager default

En orden de no cambiar el hostname del computador cuando estés conectado a Internet (proveído por dhcp), descomenta donde dice [keyfile] en el archivo /etc/NetworkManager/NetworkManager.conf así :

# Static hostname
[keyfile]
hostname=**Votre hostname**

Para que NetworkManager funcione correctamente en OpenRC, asegúrese que /etc/hostname tiene el mismo nombre del anfitrión local (localhost) que en /etc/conf.d/hostname. Opcionalmente, puedes borrar sin problema el archivo /etc/hostname

5.4 Distribución del teclado

Como el nombre del anfitrión (hostname), necesitas configurar el mapa de teclas en el archivo /etc/conf.d/keymaps y reemplazar us por tu distribución de teclado:

keymap="us"

Si le das un uso avanzado al mapa de teclado, puedes ver otras funcionalidades, documentadas en los comentarios. Puedes encontrar todas las distribuciones de teclado en /usr/share/kbd/keymaps. Luego ejecuta

# rc-service keymaps restart
Nota: Esto aplica sólo para el modo texto (CLI), si usas X11, este comando no afectará tu entorno gráfico

5.5 Iniciar X11 sin acceso root

Como logind solo funciona cuando el sistema es iniciado con Systemd como PID 1, Xorg.wrap no puede iniciar X sin los permisos de root y falla. [fuente]

La solución es CREAR un archivo con los contenidos en /etc/X11/Xwrapper.config :

# Xorg.wrap configuation file
needs_root_rights = yes 

5.6 Gestor de sesiones

Con OpenRC, el gestor de sesiones se ejecuta de manera diferente. Por ejemplo, con lxdm, necesitas mencionar lxdm en el archivo /etc/conf.d/xdm :

DISPLAYMANAGER="lxdm"

Habilita el demonio xdm :

sudo rc-update add xdm default

Nótese que algunos gestores de sesiones como xfce4-session no funcionan bien.

6 Adaptación entre systemctl y rc-update

6.1 Añadir o eliminar un servicio

Usted puede añadir un servicio de esta forma :

sudo rc-update add <servicio> <nivel de ejecución>

Y eliminarlo así :

sudo rc-update del <servicio> <nivel de ejecución>

6.2 Servicios en ejecución

En orden de tener un resumen de todos los demonios en ejecución, detenidos, etc, puedes escribir el siguiente comando :

rc-status --all

6.3 Detener/Iniciar/Reiniciar un servicio

Para reiniciar un servicio, necesitas usar rc-service :

sudo rc-service <servicio> restart

7 Problemas usuales

7.1 Sysctl.conf no existe

Usted puede encontrar un error si /etc/sysctl.conf no existe. Para corregir esto, tienes que crear el archivo:

sudo touch /etc/sysctl.conf

7.2 /usr/lib/rc/cache no existe

Si tienes este error al apagar tu computador:

WARNING: /usr/lib/rc/cache is not writable!

La solución es crear el archivo:

sudo mkdir /usr/lib/rc/cache

7.3 Swap no está habilitado

Systemd montaba el swap automáticamente, tienes que añadir el swap manualmente en /etc/fstab así :

# /dev/sda2
UUID=0c3e9434-bc5c-461c-a5e4-4e9fe5f9a149	swap	swap	sw	0	0

7.4 tmpfs no está presente

Como el swap, Systemd automáticamente monta el tmpfs. Añádelo manualmente en /etc/fstab :

tmpfs		/tmp		tmpfs   nodev,nosuid          	0  	0