Para os fins desta resposta, vamos supor que seu contêiner seja chamado "" foo ".
PARTE A
No host, salve uma cópia /var/lib/lxc/foo/config
, caso minhas instruções quebrem alguma coisa.
Você precisará configurar seu contêiner para manter a SYS_MODULE
capacidade.
Esteja ciente de que essa configuração oferece a esse contêiner a capacidade de assumir o kernel e, portanto, o host .
Para fazer isso, você desejará alterar a linha de configuração "lxc.cap.drop"
ou "lxc.cap.keep"
.
Se você estiver executando um convidado do Ubuntu 19.04 que foi criado com "lxc-create --name foo --template download -- ..."
:
/var/lib/lxc/foo/config
conterá uma linha
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
conterá uma linha
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
irá conter uma linha como esta
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Você deve copiar a última linha para o final de /var/lib/lxc/foo/config
(ou qualquer outro local após a "include /usr/share/lxc/ubuntu.common.conf"
) e excluir "sys_module"
da lista.
Parte B
Você precisa de uma cópia dos seus módulos do kernel no contêiner.
Se o seu host estiver executando um kernel do Ubuntu, você poderá fazer algo parecido "sudo apt install kernel-image-$(uname -r)"
com o convidado.
Caso contrário, no host, talvez seja necessário fazer algo assim (assumindo que o contêiner seja chamado "foo"):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Depois disso, desligue o convidado foo se estiver em execução e, em seguida, reinicie-o com algo parecido "lxc-start --name foo"
.
O contêiner LXC agora deve ser capaz de carregar e descarregar módulos do kernel.