Migrando a OpenRC desde Manjaro

En el artículo anterior escribí acerca de cómo abandoné systemd a favor de openrc. En aquel momento les comentaba que una de las distribuciones elegidas fue Manjaro OpenRC. En mi caso, y debido a que no estaba dispuesto a continuar con Archlinux, decidí recomenzar haciendo una instalación mínima (o netinstall) para luego ir instalando y configurando individualmente los demás componentes del sistema. Pero este no tiene por qué ser el caso de todos. De hecho, si actualmente sos un usuario de Manjaro y estás pensando en quitar systemd probablemente no esté en tus planes comenzar desde cero reinstalando el sistema. En tu caso, lo que buscás es lo que habitualmente se denomina migración.

Normalmente este tipo de acciones sobre el sistema son un dolor de cabeza, en especial cuando se trata de quitar systemd y arriesgarse a romper el sistema (pensemos en las dependencias y librerías). Sin embargo, cuando se trata de Manjaro ocurre todo lo contrario. En primer lugar porque todos los paquetes y sus dependencias se encuentran en los repositorios oficiales (en Archlinux necesitamos de AUR o del repositorio eudev-openrc). En segundo lugar, esta distribución GNU/Linux, que cada día va ganando más interés entre los usuarios, está bien cuidada por sus desarrolladores y la comunidad que los acompaña, dicho de otra manera, esta hecha para simplificarle las cosas al usuario y al mismo tiempo funcionar bien. Además el proceso está bien documentado.

Pues bien, dicho esto vamos a proceder con la migración. Para hacerlo nos apoyaremos en el artículo que la gente de Manjaro nos facilita en su Wiki y voy a seguir lo más cerca posible sus lineamientos y su formato.

 

Instalando OpenRC

$ sudo pacman -S openrc-base
Con este comando se instalarán los paquetes necesarios. Por supuesto, pacman nos consultará sobre los paquetes que presenten conflictos (systemd-sysvcompat), a lo que debemos responder “sí” para que proceda a la instalación.

La salida de este comando será algo como esto:

:: Hay 12 miembros en el grupo openrc-base:
:: Repositorio community
1) cronie-openrc  2) cronjobs  3) cryptsetup-openrc  4) dbus-openrc
5) device-mapper-openrc  6) dhcpcd-openrc  7) glibc-openrc
8) inetutils-openrc  9) lvm2-openrc  10) mdadm-openrc  11) netifrc
12) 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

Paquetes (15) openrc-0.21-1  systemd-sysvcompat-229-3 [quitando]
sysvinit-2.88-16  cronie-openrc-20160528-1  cronjobs-20160402-1
cryptsetup-openrc-20160528-1  dbus-openrc-20160528-1
device-mapper-openrc-20160528-1  dhcpcd-openrc-20160528-1
glibc-openrc-20160528-1  inetutils-openrc-20160528-1
lvm2-openrc-20160528-1  mdadm-openrc-20160528-1  netifrc-0.3.1-7
udev-openrc-31-1

Tamaño total de la descarga:    0,39 MiB
Tamaño total de la instalación:  2,49 MiB
Tamaño neto tras actualizar:    2,48 MiB

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

Acto seguido, agregaremos algunos servicios básicos al arranque.

$ sudo rc-update add dbus default
...

$ sudo rc-update add cronie default

Posteriormente instalaremos un display-manager, para que al reiniciar el equipo arranque en la interfaz gráfica en lugar de una simple línea de comandos.

$ sudo pacman -S displaymanager-openrc

Para configurarlo vamos a modificar la línea "DISPLAYMANAGER=xdm" en /etc/conf.d/xdm por la que corresponda a nuestro DM favorito (sddm, lightdm, etcétera):

$ sudo nano /etc/conf.d/xdm

/etc/conf.d/xdm

# We always try and start X on a static VT. The various DMs normally default
# to using VT7. If you wish to use the xdm init script, then you should ensure
# that the VT checked is the same VT your DM wants to use. We do this check to
# ensure that you haven't accidentally configured something to run on the VT
# in your /etc/inittab file so that you don't get a dead keyboard.
CHECKVT=7
# What display manager do you use ?  [ xdm | gdm | kdm | gpe | entrance ]
# NOTE: If this is set in /etc/rc.conf, that setting will override this one.
DISPLAYMANAGER="<displaymanager>"
Recuerden cambiar <displaymanager> por el de su elección.

Añadimos el servicio para que arranque por defecto.

$ sudo rc-update add xdm default

En este punto aún no es recomendable reiniciar, ya que aún falta un buen grupo de paquetes que harán operar el sistema adecuadamente.

 

Utilidades básicas del sistema

A continuación vamos a instalar varias utilidades: audio (alsa), red (networkmanager), eventos acpi (acpid), multiusuario (consolekit), suspensión/hibernación (pm-utils) y servicios de registro (syslog-ng), entre otros.

$ sudo pacman -S networkmanager-openrc syslog-ng-openrc pm-utils acpid-openrc alsa-utils-openrc avahi-openrc consolekit-openrc gpm-openrc polkit-consolekit cgmanager-opernc
resolviendo dependencias…
buscando conflictos entre paquetes…
:: networkmanager-openrc y systemd-sysvcompat están en conflicto. ¿Quitar systemd-sysvcompat? [s/N] s
:: networkmanager-consolekit y networkmanager están en conflicto. ¿Quitar networkmanager? [s/N] s
:: polkit-consolekit y polkit están en conflicto. ¿Quitar polkit? [s/N] s
:: pm-utils y tlp están en conflicto. ¿Quitar tlp? [s/N] s

Paquetes (25) cgmanager-0.39-2 consolekit-1.1.0-7 eventlog-0.2.12-4
libdbi-0.9.0-2 libnih-1.0.3-2 networkmanager-1.2.2-1 [quitando]
networkmanager-consolekit-1.2.2-2 openrc-0.21-1
pm-quirks-0.20100619-4 polkit-0.113-4 [quitando]
syslog-ng-3.6.3-2 systemd-sysvcompat-229-3 [quitando]
sysvinit-2.88-16 tlp-0.8-1 [quitando] udev-openrc-31-1
acpid-openrc-20160528-1 alsa-utils-openrc-20160528-1
avahi-openrc-20160528-1 cgmanager-openrc-20160528-1
consolekit-openrc-20160528-1 gpm-openrc-20160528-1
networkmanager-openrc-20160528-1 pm-utils-1.4.1-6
polkit-consolekit-0.113-5 syslog-ng-openrc-20160528-1

Tamaño total de la descarga: 5,20 MiB
Tamaño total de la instalación: 33,60 MiB
Tamaño neto tras actualizar: 9,25 MiB

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

Una vez que finalice, procedemos a habilitar los servicios con:

$ sudo rc-update add <servicio> default
Reemplazando <servicio> según sea el caso.

 

Problemas con Plymouth

La Wiki nos advierte de los problemas que puede causar Plymouth con OpenRC. Para evitarnos complicaciones editaremos el archivo /etc/mkinitcpio.conf

$ sudo nano /etc/mkinitcpio.conf

Primero debemos quitar plymouth de la línea HOOKS=... para que quede así

/etc/mkinitcpio.conf

...
HOOKS="base udev autodetect modconf block resume filesystems keyboard keymap fsck"
...

Y regeneramos initrd

$ sudo mkinitcpio -p linux<versión>
Dónde <versión> es el número de versión del kernel que estás corriendo (el comando uname -r te dirá cuál es si no lo sabés).

 

Quitando definitivamente a systemd del sistema

Con OpenRC instalado y funcionando, la existencia de systemd en el sistema queda completamente injustificada. Para deshacernos definitivamente de él, vamos a instalar los siguientes paquetes.

$ sudo eudev eudev-systemdcompat
eudev es un reemplazo para udev provisto por la gente de Gentoo y que nos asegura una mejor compatibilidad con OpenRC
resolviendo dependencias…
buscando conflictos entre paquetes…
:: eudev y libsystemd están en conflicto (libudev.so). ¿Quitar libsystemd? [s/N] s
:: eudev-systemdcompat y systemd están en conflicto. ¿Quitar systemd? [s/N] s
advertencia: bucle de dependencias detectado:
advertencia: eudev-systemdcompat será instalado antes que su dependencia eudev

Paquetes (4) libsystemd-229-3 [quitando] systemd-229-3 [quitando] eudev-3.2-1
eudev-systemdcompat-230-1

Tamaño total de la descarga: 1,16 MiB
Tamaño total de la instalación: 7,47 MiB
Tamaño neto tras actualizar: -21,62 MiB

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

Bastará un reinicio para finalizar la tarea.

 

Algunas consideraciones extra

Para que tengan en cuenta, los usuarios de Plasma 5 pueden encontrarse con que Pulseaudio no inicie en el arranque. Para resolverlo, basta con dirigirse a

Preferencias del Sistema -> Arranque y Apagado -> Autoarranque

Crear un script similar al siguiente:

$ sudo nano /usr/local/bin/pulse.sh
#!/bin/sh
pulseaudio --start

Y agregarlo al inicio del sistema junto con sus scripts personalizados.

Por mi parte, prefiero prescindir de Pulse (los desarrolladores son los mismos de systemd) y tomarme el trabajo de configurar ALSA o JACK a secas, lo que es tema para otra entrada.

 

Otro asunto es montar automáticamente particiones en discos adicionales a través de /etc/fstab. El punto de montaje habitual en Archlinux y derivadas es /run/media/nombre_de_particion, pero con OpenRC lo conveniente es cambiar el punto de montaje a /media/nombre_de_particion (al mejor estilo Debian y derivadas). Por ejemplo, digamos que tenemos un disco duro adicional en nuestro equipo donde alojamos datos, música, documentos, películas y demás y queremos que sea montado automáticamente al inicio. Entonces ejecutaremos:

$ sudo blkid /dev/sdX
/dev/sdX: LABEL="datos" UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

Buscamos el UUID de la partición /dev/sdX correspondiente al disco duro en cuestión. Ahora, editamos /etc/fstab añadiendo al final el punto de montaje.

$ sudo nano /etc/fstab

/etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump>  <pass>

UUID=xxxxxxxx-...  /media/datos ext4    defaults,noatime 0       0
Al reiniciar, nuestra partición de datos estará montada automáticamente como /media/datos.

 

Por último, no quiero dejar de recomendarles visitar la Wiki OpenRC de Gentoo y por supuesto la Wiki OpenRC de Manjaro (de donde salió este artículo) para que conozcan a fondo su funcionamiento, opciones, configuraciones y el modo de operarlo, así como los posibles problemas que puedan hallar.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s