Problemas Gentoo bajo LXD


Utilizar algún tipo de software de virtualización de contenedores es una forma cómoda de instalar máquinas y de hacer pruebas en ellas, pero no todo lo que reluce es oro al utilizar estos sistemas nos bajamos imágenes preconfiguradas que pueden venir con los parámetros por defecto o no. Por ejemplo LXD nos proporciona una imagen de Gentoo con ACCEPT_KEYWORDS=~amd64.

 

Gentoo necesita acceso a /dev/shm para realizar ciertas operaciones, si actualizamos Python veremos el siguiente error:

* configure has detected that the sem_open function is broken.
 * Please ensure that /dev/shm is mounted as a tmpfs with mode 1777.
 * ERROR: dev-lang/python-3.3.4-r1::gentoo failed (configure phase):
 *   Broken sem_open function (bug 496328)
 *
 * Call stack:
 *     ebuild.sh, line 124:  Called src_configure
 *   environment, line 3542:  Called die
 * The specific snippet of code:
 *           die "Broken sem_open function (bug 496328)";

Debemos darle acceso desde fuera:

lxc config set kr0mtest raw.lxc 'lxc.mount.entry = none dev/shm tmpfs nodev,nosuid,noexec,mode=1777,create=dir 0 0'

Si el padre es una distribución que utiliza perfiles de AppArmmor también puede ser problemático, por ejemplo a la hora de montar Docker dentro de la Gentoo:

apparmor="DENIED" operation="mount" info="failed type match" error=-13 name="/var/lib/lxd/kr0mtest/root/proc/" pid=3825 comm="mount" fstype="proc" srcname="proc"

Configuramos el nesting desde el padre:

lxc config set kr0mtest security.nesting true

Y como ya he comentado debemos tener en cuenta que la imagen viene con las versiones inestables de todo el sistema.

grep ACCEPT_KEYWORDS /etc/portage/make.conf
ACCEPT_KEYWORDS=~amd64

NOTA: Espera lo mejor, prepárate para lo peor.

Un claro ejemplo de esto es mysql-8.0.20(21/05/2020), el script de postinstalación está roto, por lo tanto recordad que pasarse de "modernillo" se paga caro.

Quizás la mejor opción sea instalar una Gentoo estable en hardware real, un KVM o VirtualBox y luego transformarla a LXD tal como se indica aquí, de este modo podremos utilizar este CT como plantilla.

Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Autor: kr0m -- 22/05/2020 00:30:49