Cómo iniciar el sistema con un OpenRC puro

Continúa el conflicto que existe contra SystemD. Que haya quedado claro que es una mierda, no es algo de sorprenderse. Y como era de esperarse, aparecieron varias opciones, pero la que ha estado sonando desde hace mucho, es OpenRC. Desarrollado originalmente por Gentoo para su uso en su variante basada en BSD, es el init que dicha distro usa por defecto (y de hecho, me encanta porque me trae viejos recuerdos de que cuando empecé a usar Linux). Y que además, es portable, ya que no sólo está limitado a Gentoo, sino a otros sabores de Linux y de Unix en general, así que todo aquél que quiera (y pueda) probar esta alternativa a SystemD, está invitado a hacerlo. De hecho, hay distros que lo soportan oficialmente, como Alpine Linux y Manjaro (de hecho, existe una variante que lo trae por defecto).

Pero dejando de lado ese tema, me voy a centrar a lo que vine: a usar un OpenRC en su estado puro.

¿Cómo? ¿Acaso no está OpenRC en su estado puro?

No exactamente.

Para aclarar el tema, muchos acá recordamos al viejo Sysvinit, ¿verdad? Ese sistema de init que se ha vuelto tan popular en su momento antes de la llegada de SystemD. Pues bien: en muchos sabores de Unix todavía se usa. Así como en algunas distros también, como Slackware. Y FreeBSD lo ha mantenido hasta la actualidad. A eso sumémosle que SystemD no es soportado por otra variante de Unix que no sea Linux.

OpenRC utiliza Sysvinit como backend, lo que explica por qué las diferencias entre ambos (si se utilizaran por separado, claro) no es distinguible. Sin embargo, prepararon su propio binario de init que está disponible desde la versión 0.25 para que los usuarios la prueben y vean qué tal está quedando. De hecho, ya mi notebook lo tengo configurado para que lo use y hasta ahora no he tenido problemas. Y es a lo que vine acá, a enseñarles a migrar para tener un OpenRC en su estado puro y ejecutar sus propios binarios de init, ya que de momento, no existe más documentación que la que aparece en la wiki de Gentoo, además de algunas cosas que no mencionan y que tuve que descubrirlas por mi cuenta tras un buen rato de investigación.

Eso sí, antes de probar este nuevo init de OpenRC, tienen que tener en cuenta lo siguiente:

  • La primera vez el inicio suele ser más lento de lo normal. No desesperen, a más de alguno le ha pasado.
  • Los binarios que se usan como herramientas que forman parte de Sysvinit, como shutdown y reboot, no funcionan mientras se use el init de OpenRC por razones obvias. En su lugar, utiliza un binario llamado openrc-shutdown, al cual se le pasa un parámetro dependiendo de lo que se vaya a necesitar. Es necesario hacer algo antes que mencionaré más adelante.
  • El init de OpenRC ignora el archivo /etc/inittab por ser parte de Sysvinit. Lo que se traduce, además de lo mencionado anteriormente, que las TTY no funcionan de manera automática, sino que también hay que hacer algo antes que, desde luego, explicaré más adelante también.
  • Es necesario también estar usando Consolekit, aunque ya va de la mano junto con OpenRC. Ya les explicaré por qué.
  • El proceso es indoloro y fácil y totalmente reversible.

Teniendo esto en mente, entonces… ¡Manos a la obra!

El proceso es bien sencillo, y en parte, está también mencionado en la Wiki de Gentoo. Si usan un gestor de inicio como GRUB, basta con agregar esto en los parámetros del kernel, en la línea GRUB_CMDLINE_LINUX:

Luego regeneramos el archivo del grub:

(El binario puede cambiar dependiendo de la distro)

Luego, para iniciar las TTY, es necesario que el daemon de agetty esté detenido. Así que creamos tantos enlaces simbólicos como terminales TTY necesitemos. Por ejemplo, para la TTY1, haremos esto:

Ya saben cómo hacerlo para las demás. Nada más se cambia el número y ya.

Ahora hay que agregarlas al inicio como se haría como cualquier daemon:

Y ya está.

Y lo último, esencial para apagar y reiniciar el sistema desde el entorno gráfico, es necesario crear dos scripts que deben ser invocados por Consolekit. Deben llamarse así: ck-system-stop y ck-system-restart. Los contenidos de cada uno son muy similares.

Para el ck-system-stop, el contenido debe ser el siguiente:

El del ck-system-restart es el siguiente:

Como se darán cuenta, son prácticamente el mismo contenido, sólo que se cambia el parámetro que se le pasa a openrc-shutdown.

Ahora les damos permisos de ejecución:

Y los copiamos a la siguiente ruta: /usr/lib/consolekit/scripts/. No se preocupen, los permisos se mantendrán.

Y ya nada más queda reiniciar el sistema y ya está.

Como verán, el proceso es bien sencillo y toma algo de tiempo acostumbrarse, pero al menos acá está la documentación necesaria para guiarse y usar un OpenRC desde el backend.

Espero que les haya sido de ayuda este tutorial.

Jorgicio

En volá podría gustarte también...

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *

A %d blogueros les gusta esto: