A los fines de esta respuesta, supongamos que su contenedor se llama "foo".
PARTE A
Desde el host, guarde una copia de /var/lib/lxc/foo/config
, en caso de que mis instrucciones rompan algo.
Deberá configurar su contenedor para mantener la SYS_MODULE
capacidad.
Tenga en cuenta que dicha configuración le da a ese contenedor la capacidad de hacerse cargo del núcleo y, por lo tanto, del host .
Para ello, tendrá que cambiar el "lxc.cap.drop"
o "lxc.cap.keep"
línea de configuración.
Si está ejecutando un invitado Ubuntu 19.04 que fue creado con "lxc-create --name foo --template download -- ..."
:
/var/lib/lxc/foo/config
contendrá una línea
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
contendrá una línea
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
contendrá una línea como esta
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Debe copiar esa última línea al final de /var/lib/lxc/foo/config
(o cualquier lugar después de "include /usr/share/lxc/ubuntu.common.conf"
) y luego eliminarla "sys_module"
de esa lista.
Parte B
Necesita una copia de los módulos de su núcleo en el contenedor.
Si su host está ejecutando un kernel de Ubuntu, entonces puede hacer algo como "sudo apt install kernel-image-$(uname -r)"
desde el invitado.
De lo contrario, desde el host, es posible que deba hacer algo como esto (suponiendo que su contenedor se llame "foo"):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Después de eso, apague el foo invitado si se está ejecutando, y luego reinícielo con algo como "lxc-start --name foo"
.
El contenedor LXC ahora debería poder cargar y descargar módulos del núcleo.